【发布时间】:2012-08-06 09:10:07
【问题描述】:
我正在尝试一种使用 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"
在我的语法中有效。
【问题讨论】:
-
您应该接受 DerMike 的回答 - 它似乎非常完美。
标签: string parsing token javacc