ANTLR令牌自动生成词法分析器
问题描述:
我必须写一个解析器解析输入到解析树,但我跑到一个问题,我的令牌和令牌自动生成。下面的例子是我的问题的简短版本。这是语法:ANTLR令牌自动生成词法分析器
s : a B a;
a : '-' C | C;
B : '-' | '+';
C : '1' | '2';>
WS : (' ' | '\t' | '\r' | '\n')+ -> skip ;
我输入:- 1 - 2
。
我的输出树是(s (a - 1) <missing B> (a - 2))
。
输出树,我想是(s (a - 1) - (a 2))
有没有像它在文件lexer.java生成自动•__ *一些标记。我相信其中一个将是T__* : '-'
,它复制我的令牌B.因为它首先出现,没有符号-
导致B.所有符号-
将导致T __ *。我认为这是原因。我对吗?
我该怎么做才能得到正确的树?
答
好的,我找到了解决办法。新语法应该是这样的。
s : a b a;
a : '-' c | c;
b : ADD | SUB;
c : ONE | TWO;
ADD : '+';
SUB : '-';
ONE : '1';
TWO : '2';
WS : (' ' | '\t' | '\r' | '\n')+ -> skip ;
虽然我找到下来的解决方案,我仍然不知道我的语法错误发生了什么事。无论如何,希望这可以帮助有人有同样的问题。