关于antlr4的几个问题使用了本书中未提及的词法分析词谓词,例如28730446使用提前(字符串),42058127使用 getCharPositionInLine < / strong>(),23465358使用 _input.LA(1)等。 _input.LA(1)也在使用了几次本书(例如2014年版第212和228页),但没有解释它究竟是做什么的。是否有可用的词法分析器谓词列表及其文档?
答案 0 :(得分:1)
这些不是词法分类的谓词。相反,它们是运行时对象的普通方法:Token#getCharPositionInLine()
和CharStream#LA(int)
。文档在source code。
Lexer类将_input
定义为
public CharStream _input;
此外,ahead()
方法是在该特定语法顶部的@lexer::members
块中自定义的(并且取决于CharStream#LA(int)
的使用)。
TDAR仍然是最好的解释性文档。源代码内部记录良好。