【发布时间】:2021-12-04 22:07:49
【问题描述】:
我在使用 bison 代码中的令牌时遇到问题 我通过以下方式定义了令牌:
#define YYSTYPE struct node*
typedef struct node{
char* token;
node* left;
node* right;
}node;
我的部分语法是:
%token STRING CHARVAL VOID
s: code
code: rettype name ;
rettype: VOID
name: STRING|CHARVAL;
是否可以做类似的事情:
rettype: VOID {printf("%s",$1->token);}
或
rettype: VOID {$$ = $1;}
我正在测试的部分代码只是:
void foo
这是我现在的主要问题...
当我尝试这个时,我得到了这个错误:Segmentation fault(core dumped)
我试图在任何地方找到解释或解决方案,但没有找到或没有充分理解它们,有人可以指导我解决这个问题吗?
【问题讨论】:
-
很可能,您的词法分析器在返回令牌之前没有正确设置
yylval。但是您没有显示您的词法分析器代码。
标签: compiler-construction bison yacc