我正在使用 JavaCC 创建语法并且遇到了一个小问题。我试图允许生成的编译器识别 ASCII 扩展集中的任何有效字符。在查看了相同的 JavaCC 示例(主要是显示 JavaCC Grammer 本身的示例)之后,我设置了以下标记来识别我的字符:
< CHARACTER:
( (~["'"," ","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)
>
如果我正确理解这一点,它应该匹配所有 ASCII 字符的八进制表示,从 0-377(涵盖扩展 ASCII 集中的所有 256 个字符)。这对所有键盘字符(az、0-9、?、./ 等)甚至大多数特殊字符(©、¬®)都按预期执行。但是,每当我尝试解析“商标”符号 (™) 时,我的解析器都会不断抛出 End of File 异常,表明它无法识别该符号。是否有一些明显的方法可以增强我对字符的定义以允许商标符号被接受?