私がレモンに渡すトークンはすべて、行番号情報が添付された構造体です。
以下のsyntax_errorの定義を見てください
%name SinkParser
%token_prefix SINKPARSER_TOKEN_
%token_type {SinkParserNode*}
%extra_argument { SinkParserContext *parser_context }
%syntax_error {
SinkParser_SyntaxError(parser_context);
}
%token_destructor { SinkParserNode_Destruct($$); }
ただし、エラーがどのファイルと行であったかを報告する方法がわかりません。すべてのトークンに関する情報がありますが、syntax_errorハンドラーで適切なトークンにアクセスするにはどうすればよいですか?
トークナイザー内の自分の場所を個別に追跡し、構文エラーを確認する必要がありますか?構文エラーが発生するまでに、トークナイザーはおそらくパーサーよりも進んでいると思います。