0

我想知道如何在语法中获取标记的行号。假设我有以下语法:

S : expr MINUS expr { $$ = $1 -$3; }
  ;

如何获取 MINUS 令牌的行号?我没有在 jison 中使用词法分析器,而是通过覆盖词法分析器从 l​​ex 文件中传递它:

parser.lexer = {
  lex: function() {
    var token = "MINUS";
    parser.lexer.yytext = "...";
    parser.lexer.yylineno = xx;
    return token;
  }
}

我意识到我可以调用yylineno,但是如果语法中的不同标记具有不同的行号并且我只想要 jison 文件中特定标记的行号怎么办。也许像$1.yylineno什么?非常感谢!

4

1 回答 1

4

@Jison 允许您使用符号访问位置。请参阅此处的“跟踪位置”部分。上面减号的行号是@2.first_line.

然后由您的词法分析器提供 Jison 期望的信息。

于 2014-02-15T11:47:37.577 回答