现在,如果令牌仅包含一种替代方式,例如ANTLR,则ANTLR不会返回Lexer令牌名称。令牌SUZY : 'Suzy';
'Suzy'
的代码将在解析树中进行编码。
现在,我使用令牌名称来编码一些有用的信息,例如SUZY_GENDER_FEMALE : 'Suzy';
。
到目前为止,即使令牌仅包含一个替代方案,我也找到了两种解决方案来获取令牌名称:
SUZY_GENDER_FEMALE : 'Suzy' | 'Suzy';
fragment
关键字:SUZY_GENDER_FEMALE : SUZY_FRAGMENT;
fragment SUZY_FRAGMENT : 'Suzy';
这两种解决方案均有效,但并不理想。我一直在研究ANTLR实现,以一种替代方式更改令牌的行为,以便返回其名称,但代码相当复杂,尽管更改可能很容易,但仍需要一些时间。
有人会知道在代码中的什么地方吗? (也许就像在适当位置添加一行一样容易),或者我滥用令牌名称,应该使用其他ANTLR机制来获取所需的信息吗?
答案 0 :(得分:2)
您的词法分析器具有静态的(2000,7,1) shape
。尝试一下:
VOCABULARY