2013-08-18 20 views
0

我在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

實際上做,或者我爲什麼要需要他們,因爲我似乎能夠得到這個語言的每一個短語而不用它們。任何想法?
非常感謝:-)

回答

0

如果您計劃一樣,沒有表情:

a=-1 

(其中 「a」 是一個ID和 「1」 是NUM) 您的語言比你別不需要這兩條規則。 否則你必須執行它們。

+0

當然......我沒有預料到。謝謝,你非常有用:-) – slovo