【发布时间】:2017-10-18 11:39:47
【问题描述】:
我必须编写一个解析器来将输入解析为解析树,但我遇到了我的令牌和自动生成的令牌的问题。以下示例是我的问题的简短版本。这是语法:
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__* 这样的标记是自动生成的。我相信其中一个会是T__* : '-',它与我的令牌 B 重复。因为它首先出现,所以没有符号 - 导致 B。所有符号 - 都会导致 T__*。我想这就是原因。我说的对吗?
我应该怎么做才能得到正确的树?
【问题讨论】:
标签: antlr lexer auto-generate