2
単純なパーサを作成しようとしています。例については "if"条件が失敗した場合、構文解析をスキップします。
cond: T_IF '(' exp ')' '#' stmt_block opt_elseifs opt_else end {if($3 == 0) return;}
opt_elseifs : /* Nothing */
| opt_elseifs T_ELSIF '(' exp ')' '#' stmt_block '#'
;
opt_else : /* Nothing */
| T_ELSE '#' stmt_block '#'
;
end : '#'
;
、
a = 0;
if(a) #
c = 10 + 20;
#
私が印刷されたCの値を望んでいないが、これは、cの値を印刷しています。 ここで何が間違っていますか?
あなたの 'cond'ルールに' end'の代わりに ''# ''を入れないのはなぜですか? –
Basileさんにありがとうございます。しかし、私はそれが本当の問題ではないと思います。 – WordsWorth
私はその質問を理解していません。 'c'はどのように印刷されますか?あなたのレクサーは何ですか?誰が 'c'を印刷していますか? –