gpt4 book ai didi

c++ - Bison C++ : error expected initializer before ‘*’ token

转载 作者:行者123 更新时间:2023-11-28 08:21:19 25 4
gpt4 key购买 nike

我在 C++ 上使用 flex 和 bison,但现在我很挣扎。

g++抛出的错误是:

src/bison.tab.h:125: error: expected initializer before ‘*’ token

bison.tab.h 是 bison yacc 解析器自动生成的文件,给我错误的行是

bison.tab.h:125: extern YYSTYPE yylval; 

我的 Bison .y

void yyerror(const char* error);    
#include "objects/tabla.h"
#include "Node.h"
#define YYSTYPE Node*
#include "bison.tab.h"
#include "lex.yy.c"
using namespace std;
void yyerror(const char* error) {cout<<"*** "<<error<<endl; };
Node* root;
%}
%nonassoc vacio
%tokens
%start start
%%
Grammar....
%%
main()
{
yyparse();
}

不知道这里是不是我看不到的问题...

干杯,

最佳答案

#define YYSTYPE 节点*

我认为这一行导致了问题,如果你最好使用 %union 来自定义节点类型,比如

{% ... %}

%union {
Node* node_type;
}

%type <node_type> ast_root
%type <node_type> something0
%type <node_type> something1

%%

ast_root: ....

关于c++ - Bison C++ : error expected initializer before ‘*’ token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5740467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com