Bison 为什么是@1.第一列';s值始终为0

Bison 为什么是@1.第一列';s值始终为0,bison,yacc,lex,Bison,Yacc,Lex,我想在出现问题时报告错误消息、列和行。yylineno可以,工作正常,但@1。无论我如何修改测试文本,第一列的值始终为0 yacc文件片段: set:SET PARENTHESIS reference EQUAL expression CLOSE_PARENTHESIS {$$ = set_directive($3,$5); } |error {yyerrok; yyclearin;printf("column is %d",@1.first_column);yyerror("Set direc

我想在出现问题时报告错误消息、列和行。yylineno可以,工作正常,但@1。无论我如何修改测试文本,第一列的值始终为0

yacc文件片段:

set:SET PARENTHESIS reference EQUAL expression CLOSE_PARENTHESIS {$$ = set_directive($3,$5); }
|error {yyerrok; yyclearin;printf("column is %d",@1.first_column);yyerror("Set directive error!",@1.first_column);YYABORT;}
;

我没有搜索到类似的问题,请帮助我

flex
不填写列字段;你必须自己做。约翰·莱文(John Levine)极力推荐的书《Flex and Bison》(《代码》)中有一个例子;幸运的是,相关部分(目前)以O'Reilly的形式提供。您是否在词法分析器中设置了
yyloc
?如果没有,那么对于您提到的值,除了
1
之外,您将看不到任何其他内容