2
이 문법을 감안할 때?모호한 문법 (BNF 표기법)
이 문법을 감안할 때?모호한 문법 (BNF 표기법)
동일한 문장에 대해 두 개의 구문 분석 트리를 그릴 수 있거나 동등하게 두 개의 가장 가까운 파생어를 작성할 수있는 경우 문법이 모호합니다. 이를 수행 할 수있는 일반적인 알고리즘이 존재하지 않습니다 (모호성은 결정 불가능한 문제입니다). 그러나 많은 문법에서는 어렵지 않습니다.
예제 @rici로 충분합니다.
If true then s1; s2
한 파스 트리가
<Program>
/ | \
<Program> ; <Stmt>
| |
<Stmt> s2
/|\__________
/| \ \
If <Bool> then <Program>
| |
true <Stmt>
|
s1
입니다 당신이 다른 하나를 해결하게됩니다.
같은 문장을 두 가지 다른 파생어로 제공 할 수 있습니다. –
일부 문장에 대해 가능한 두 가지 구문을 찾습니다. 이것을 시도해보십시오 :'true이면 s1; s2' – rici
이 질문은 이미 질문되었으며 답변되었습니다 : http://stackoverflow.com/questions/4788148/what-is-the-easiest-way-of-telling-whether-a-bnf-grammar-is-ambiguous- 또는 - rq = 1 –