yylloc在此范围内未定义

时间:2012-04-30 15:49:27

标签: bison flex-lexer

编译文件时遇到以下问题。我已经覆盖了YYLTYPE的定义如下(尽管它与默认值相同但我会扩展它

typedef struct YYLTYPE  
{  
  int first_line;  
  int first_column;  
  int last_line;  
  int last_column;  
} YYLTYPE;

当我在lex文件中添加以下内容时,我得到“此范围内未定义的yylloc”错误。

#define YY_USER_INIT yylloc.first_line = yylloc.first_column = 1;

引擎收录:

1 个答案:

答案 0 :(得分:2)

您需要将YYLTYPEYYLTYPE_IS_DECLARED的定义放入#include.y文件中.l的头文件中在定义#include的文件的.tab.h之后,需要.l #include个文件中的YYLTYPE文件。

上述原因是bison不会从YYLTYPE文件的顶部导出你的 {/ 1}}定义,所以如果你想要它在其他地方,那么你需要安排它可用。更糟糕的是,.y文件将始终具有默认.tab.h(由YYLTYPE保护),因此您需要确保在其之前看到您的定义。