0
stmt : expr {printf("%d\n",$1);}
;
expr : expr '+' expr {$$ = $1 + $3;}
| expr '-' expr {$$ = $1 - $3;}
| INTEGER {$$ = $1;}
;
いつbisonがstmt非ターミナルを実行していますか。どのキャラクターが見える?bison計算機の問題
stmt : expr {printf("%d\n",$1);}
;
expr : expr '+' expr {$$ = $1 + $3;}
| expr '-' expr {$$ = $1 - $3;}
| INTEGER {$$ = $1;}
;
いつbisonがstmt非ターミナルを実行していますか。どのキャラクターが見える?bison計算機の問題
と仮定すると、これらはあなたのバイソン入力、EOF
に到達するようstmt
が、すぐに「実行」を取得します非終端記号からすべてのルールがある(すなわち:それ以上入力し、最後のexpr
が減少されていません)。
ただし、文法に矛盾があります。
私は質問をしません。 'stmp'とは何ですか? –
これはタイプミスでした。今私はそれを修正した – user574183