2011-03-17 8 views
0

私は数日前にEBNF文法をCFGに変換することについて投稿しました。さて私は、私は今のJISTを持っていると思うが、私は、この特定の一つに引っかかっビットだ:JavaCUP - このEBNFの行をCFG文法に変換するには?

はどのように変換します:

MultiplicativeExpr -> PrimaryExpr (('*' | '/') PrimaryExpr)* 

CFGに?

私のここでの試みは、最後に*(0以上を意味する)を取り除き、再帰的な書き方で置き換えることです。

答えて

0

あなたは正しいアイデアがあります。追加の変数(再帰的)を使用して、あなたはこのようにそれを行うことができます。もちろん

MultiplicativeExpr -> PrimaryExpr SignExprList 
SignExprList -> ε | '*' PrimaryExpr SignExprList | '/' PrimaryExpr SignExprList 

を、これが唯一の方法ではありません、たとえば、あなたはまた、Sign -> '*' | '/'ような何かを行うことができ、かつSignExprListにそれを使用して...

関連する問題