論理演算子に問題があります
私の .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
私が間違っていることについてのアイデアはありますか?
ありがとう