我有一个学校项目,构建一个编译器。课程人员提供了一个头文件,“proj.h”包括一个结构“Node”,它应该用于构建解析树和一组函数。
(该标头不包含#define
YYSTYPE
到节点类型,不应更改)。
我想在我的.lex文件中使用Node*
,例如:
yylval = makeNode(...);
makeNode的定义:
Node *makeNode(const char* type,const char* value, Node *child);
我尝试在.lex文件和.ypp中定义YYSTYPE。
.lex:
#include "proj.h"
#include "parser.tab.hpp"
#define YYSTYPE Node*
.ypp:
#include "proj.h"
#define YYSTYPE Node*
我正在使用g ++进行编译。 似乎lval没有像Node那样得到实际的定义。尝试分配lval时出现编译错误:
Invalid conversion from 'Node* {aka n*}' to 'YYSTYPE {aka int}'
任何帮助表示感谢。