我的逻辑运算符有问题
在我的 .y 文件中,我有:
expr: expr oper1 expr { $$=insert_expression($2, $1, $3); }
| expr oper2 expr { $$=insert_expression($2, $1, $3); }
;
在我的 .l 文件中,我确定 oper1 和 oper2 是:
"<" | ">" | "=" | "<>" | "<=" | ">=" { return oper1; }
"AND" | "OR" { return oper2; }
然后我有一个结构可以将值放入:
typedef struct _Expression
{
char *oper;
struct _Expression *ex1;
struct _Expression *ex2;
} is_expression;
并将值放入:
is_expression* insert_expression(char* oper, is_expression *expr1, is_expression *expr2)
{
is_expression* e = (is_expression*)malloc(sizeof(is_expression));
e->ex1 = expr1;
e->ex2 = expr2;
e->oper = oper;
return e;
}
最后向他们展示:
void show_expression(is_expression *e)
{
show_expression(e->ex1);
printf("%s", e->oper);
show_expression(e->ex2);
}
但是每次我使用 expr oper expr 时都会出现分段错误:
Program received signal SIGSEGV, Segmentation Fault
关于我做错了什么的任何想法?
谢谢