如何打印發生錯誤的行號。我試圖在yyerror()
功能使用yylineno
,寫在.l
文件%option yylineno
但在編譯之後它給了我一個錯誤「yylineno undeclared (first use in this function)
」如果我初始化yylineno
爲1它給了我這個錯誤:初學者bison flex
error: redefinition of yylineno
lex.yy.c:273: note: previous definition of yylineno was here
如果您提供了更多的細節,這將有所幫助。 yyerror是由野牛骨架援引的; yylineno由flex提供(通常它是一個宏)。您可能沒有安排yylineno定義在yyerror是其中一部分的編譯單元中可見(如果您使用的是C++,則特別容易,但使用普通的C排列也很容易)。還有哪些其他的flex選項使用? (例如,你是否要求重入?) – rici