我正在为复杂的逻辑操作编写语法规则,我仍然坚持使用令牌。我的lexer语法是这样的:
VAR : 'A'..'Z';
WS : [ \t\r]+ -> skip;
NL : '\n';
TRUE : '1';
FALSE : '0';
AND : '∧';
NAND : '⊼';
OR : '∨';
XOR : '⊻';
NOR : '⊽';
IMPLIES : '⇒';
BICOND : '⇔';
NEGATE : '¬';
EQUIV : '≡';
EQ : '=';
LPAR : '(';
RPAR : ')';
正如您所看到的,我正在为每个操作使用特殊符号(应该被识别)。问题是,当我测试解析器并尝试访问树时,它会给我下一个错误:
line 1:1 token recognition error at: '⊼'
它使用每个操作符给我同样的错误。 我可以说这个问题与编码有关,因为如果我将符号替换为更常见的符号,它会访问树并给我正确的操作结果。
我在Java中使用ANTLR。
提前致谢!
答案 0 :(得分:0)
我刚刚找到了解决方案。我认为这是编码问题,我只需将语法文件中的工具选项编码设置为 UTF-8 。
谢谢你!