Parsing Jison/Bison获取语法中标记的行号

Parsing Jison/Bison获取语法中标记的行号,parsing,bison,jison,Parsing,Bison,Jison,我想知道如何在语法中获得标记的行号。假设我有以下语法: S : expr MINUS expr { $$ = $1 -$3; } ; 如何获取负令牌的行号? 我没有在jison内部使用lexer,而是通过覆盖lexer从lex文件传递它: parser.lexer = { lex: function() { var token = "MINUS"; parser.lexer.yytext = "..."; parser.lexer.yylineno = xx;

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

S : expr MINUS expr { $$ = $1 -$3; }
  ;
如何获取负令牌的行号? 我没有在jison内部使用lexer,而是通过覆盖lexer从lex文件传递它:

parser.lexer = {
  lex: function() {
    var token = "MINUS";
    parser.lexer.yytext = "...";
    parser.lexer.yylineno = xx;
    return token;
  }
}
我意识到我可以调用
yylineno
,但是如果语法中的不同标记具有不同的行号,而我只想要jison文件中特定标记的行号,该怎么办呢。 可能是像
$1.yylineno

多谢各位

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


然后由您的lexer提供Jison期望的信息。

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

然后由您的lexer提供Jison期望的信息