2013-08-18 7 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 

당신 돈 이상의 언어에 (여기서의 ""는 ID이고를 "1"은 NUM입니다) 그 두 가지 규칙이 필요하지 않습니다. 그렇지 않으면 구현해야합니다.

+0

물론 ... 나는 그것을 예견하지 못했다. 고마워, 너는 매우 유용했다 :-) – slovo