3

我正在查看用 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上面的部分在哪里?

4

1 回答 1

4

不,LT并不意味着LOOKAHEAD TOKEN在这种情况下。它是一个几乎在语法末尾定义的标记:

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

*意味着解析器尝试匹配零个或多个这些标记,并且!指示生成的 AST 不应包含这些LT标记。

于 2013-04-25T11:41:41.673 回答