1

현재이 문제를 겪었을 때 시험을 보면서 과거 논문을 조사하고 있습니다. 이하 이 EBNF 문법이 모호한 이유는 무엇입니까?

은 단순한 산술 식을 설명 EBNF의 문법을 같은 1 + 2 * 3 - 4 :

Expression = Operand, {Operator, Operand}; 
Operand = "1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"; 
Operator = "+"|"-"|"*"|"/"; 

(IV)이 문법을 사용하여 표현식을 평가하는 여러 가지 방법이있다 1 + 2 * 3 - 4와 같습니다. 두 개를 설명하고 이 의미하는 문법에 대해 설명하십시오. [2마르크] 내 이해에

, 모호한 문법은 일반적으로 precendence의 문법의 순서에 일부 모호함이 의미 이상의 가장 왼쪽 또는 오른쪽 대부분의 유도, 하나가있는 것입니다. 그러나 여기에는 우선 순위가 없으며 재귀는 선형입니다.

조언?

답변

0

귀하는 귀하의 질문에 답을 얻었습니다.

예; 모호한 문법을 ​​거의 정확하게 정의하고 있습니다. 그것은 문법의 가장 왼쪽과 가장 오른쪽 유도를 수행하여 동일한 파스 트리를 만들어야합니다.

예; 이 문법 우선 순위에 문제가 있음을 의미한다고 생각하면 거의 정확합니다. 그렇습니다.이 문법에는 아무런 문제가 없습니다. 거기에 문제가 있습니다. 연산자는 모두 동일한 우선 순위를 갖기 때문에 서로 다른 파생어는 예제를 평가하는 것과는 다른 해답이됩니다.

우리는 하나에 1 + 2 * 3 - 4을 줄일 수 :

(1+2) * (3-4) 
1 + (2 * 3) - 4 
1 + (2 * (3 - 4)) 

연산자의 우선 순위를 처리하는 방법에 따라 달라집니다.

왼쪽 끝과 오른쪽 끝의 축소를 명시 적으로 추출하여 파스 트리를 파생 시키면 명확 해집니다. 이것은 종종 학생들이 이와 같은 시험 문제에서 충분한 점수를 얻기 위해 기대되는 것입니다. 그러므로 나는 이것을 개정 운동으로 남겨 둘 것이다.