我试图想出一种使用 JavaCC 解析字符串而不会错误地将其与另一个令牌匹配的好方法。这些字符串应该能够包含空格、字母和数字。
我的标识符和数字令牌如下:
<IDENTIFIER: (["a"-"z", "A"-"Z"])+>
<NUMBER: (["0"-"9"])+>
我当前的字符串标记是:
<STRING: "\"" (<IDENTIFIER> | <NUMBERS> | " ")+ "\"">
理想情况下,我只想保存引号内的内容。我有一个单独的文件,我在其中实际保存变量和值。我应该删除那里的引号吗?
我最初在解析器文件中有一个方法,如下所示:
variable=<INDENTIFIER> <ASSIGN> <QUOTE> message=<IDENTIFIER> <QUOTE>
{File.saveVariable(variable.image, message.image);}
但是,正如您可能猜到的那样,这不允许空格或数字。对于变量名等标识符,我只想允许字母。
因此,我只想就如何捕获字符串文字获得一些建议。特别是,我想制作如下字符串:
" hello", "hello ", " hello " and "\nhello", "hello\n", "\nhello\n"
在我的语法中有效。