我无法逃避javacc中的双引号字符

时间:2013-12-06 15:40:07

标签: java regex javacc

我正在使用javacc为指定语言编写词法分析器和解析器。此语言中的字符串被定义为字母,数字和某些标点符号的任意组合,并由双引号分隔。我很难用双引号分隔字符串。对于我的字符串,我有:

//Strings
TOKEN:
{
<STRING: ("\"")(["a"-"z","A"-"Z","0"-"9","+","-","*","/","%","+","<",">","
             (",")",",",";",":",".","?","!"," "])*("\"")>

这个问题是,不是接受像“hello”这样的字符串,而是接受\“hello \”。 我试图通过使用\来逃避“角色”,但它只是将其解释为“。”我已经在线查看了我看到的每个例子都使用“\”来划定引号。“我和我一样找不到任何其他逃避角色的方法。有人可以告诉我我做错了什么以及如何让解析器接受由双引号分隔的字符串。

编辑:我添加了JAVA_UNICODE_ESCAPE = true;到我的语法文件的开头,它什么也没做。解析器将接受的唯一字符串是\“\”。如果我试图在像“hi”这样的符号之间放置任何东西,那么我会得到一个例外,解析器不接受类似“hi”的东西。

0 个答案:

没有答案