0

文法内のトークンの行番号をどのように取得すればよいのでしょうか。次の文法があるとします。

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

MINUS トークンの行番号を取得するには? 私は jison 内でレクサーを使用していませんが、レクサーをオーバーライドして lex ファイルから渡します。

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 に答える