编译文件时遇到以下问题。我已经覆盖了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;
答案 0 :(得分:2)
您需要将YYLTYPE
和YYLTYPE_IS_DECLARED
的定义放入#include
和.y
文件中.l
的头文件中在定义#include
的文件的.tab.h
之后,需要.l
#include
个文件中的YYLTYPE
文件。
上述原因是bison不会从YYLTYPE
文件的顶部导出你的 {/ 1}}定义,所以如果你想要它在其他地方,那么你需要安排它可用。更糟糕的是,.y
文件将始终具有默认.tab.h
(由YYLTYPE
保护),因此您需要确保在其之前看到您的定义。