ANTLR 3,LT!*是什么意思?

时间:2013-04-25 11:05:01

标签: grammar antlr3

我正在查看用ANTLR 3编写的Javascript语法的代码,

http://www.antlr3.org/grammar/1206736738015/JavaScript.g

在很多情况下我找到了

program
    : LT!* sourceElements LT!* EOF!
    ;

LT!*是什么意思?

编辑:

http://ftp.camk.edu.pl/camk/chris/antlrman/antlrman.pdf

我发现LT代表LOOKAHEAD TOKEN,但它是N预见标记,上面的N部分在哪里?

1 个答案:

答案 0 :(得分:4)

不,LT在这种情况下并不代表LOOKAHEAD TOKEN。它是几乎在语法结束时定义的标记:

LT
 : '\n'      // Line feed.
 | '\r'      // Carriage return.
 | '\u2028'  // Line separator.
 | '\u2029'  // Paragraph separator.
 ;

*表示解析器尝试匹配这些令牌中的零个或多个,而!表示生成的AST不应包含这些LT令牌。