私はlexとyaccを使って命令型言語のコンパイラを開発していましたが、今日は文法を終えました。いくつかのシフト/リダクションの競合があります。特にif/elseステートメントがある場合、それはしばしばdangling if-elseと呼ばれ、mineには/ elsif/elseステートメントがありますが、コンパイル時に競合が発生しません。elsif else文の構文解析
¿doesは、この文法には、シフト/リダクションの競合が発生しないという理由だけで瑕疵があることを意味しますか?私は多くの経験、これを行うに持っていけないが、あなたはこの文法にいくつかのより多くの情報にもし/ ELSIF/else文のために制作をしたい場合、私はそれ
に問題を見つけることができないこのようなものです:
statement -> ...
------------| initial_conditional_stmt
initial_conditional_stmt: conditional_stmt
-----------------------| conditional_stmt 'else' block
conditional_stmt -> 'if' '(' expression ')' block
------------------| conditional_stmt elsif '(' expression ')' block
ブロックは、競合を減らす/いいえシフト括弧{}
FlexとBisonを使ってこのIF-ELSE Parserをチェックしてください。http://c-madeeasy.blogspot.in/2012/05/if-else-statement-is-commonly-used-in.html – techno