0

私は、算術式と論理式、変数の割り当てと印刷を伴うサブ言語の EBNF にこの文法を持っています。

start   ::= (print | assign)*
print   ::= print expr ;
assign  ::= ID = expr ;
expr    ::= andExpr (|| andExpr)*
andExpr ::= relExpr (&& relExpr)*
relExpr ::= addExpr ( == addExpr | != addExpr | <= addExpr | >= addExpr | < addExpr | > addExpr)?
addExpr ::= mulExpr (+ mulExpr | - mulExpr)*
mulExpr ::= unExpr (* hunExpri | / hunExpr)*
unExpr  ::= + unExpr | - unExpr | ! unExpr | primary
primary ::= ( expr ) | ID | NUM | true | false

残念ながら、これらの 2 つのルールを理解することはでき ませ


。彼ら。何か案が?
どうもありがとう :-)

4

1 に答える 1

0

次のような表現を計画していない場合:

a=-1

(「a」は ID、「1」は NUM) を言語で使用すると、これら 2 つのルールは不要になります。それ以外の場合は、それらを実装する必要があります。

于 2013-08-18T15:17:05.843 に答える