У меня есть эта грамматика в EBNF для вспомогательного языка с арифметикой & логические выражения, назначение переменных и печать.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
, к сожалению, я просто не могу понять, что эти два правила:
unExpr :: = + unExpr
unExpr :: = - unExpr
на самом деле, и почему я должен нуждаться они, поскольку я, кажется, могу получить каждую фразу языка без их применения. Есть идеи?
спасибо :-)
конечно ... Я этого не предвидел. Спасибо, ты был очень полезен :-) – slovo