我正在查看用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
部分在哪里?
答案 0 :(得分:4)
不,LT
在这种情况下并不代表LOOKAHEAD TOKEN
。它是几乎在语法结束时定义的标记:
LT
: '\n' // Line feed.
| '\r' // Carriage return.
| '\u2028' // Line separator.
| '\u2029' // Paragraph separator.
;
*
表示解析器尝试匹配这些令牌中的零个或多个,而!
表示生成的AST不应包含这些LT
令牌。