예 문법은 모호합니다.
당신은 언급하지 않은하지만 <SL>
은 우리가 followes i5i5yey
을 짜서 위해 두 개 이상의 파스 트리 (이)을 그릴 수있는 문법 규칙을 사용하여 실행 가능한
을 시작 생각 :
<SL> <SL>
| |
<S> <S>
//|\ \ /| \
// | \ \ /| \
// | \ \ / | \
// | \ \ i <B> <S>
/| | | \ |//|\ \
i <B> <S> e <S> 5// | \ \
// | \ | // | \ \
// | \ y // | \ \
5 i <B> <S> /| | | \
| | i <B> <S> e <S>
5 y | | |
5 y y
구조 두 구문 분석 트리의 문법은 서로 다르다 모호한 문법입니다!
당신은 나무 문자열
xi13yi5xeyx
(
당신을위한 운동으로이를 떠납니다) 언어가이 문법에 의해 생성되는 중요
이 not ambiguous language 인을 생성하기 위해 위 그림을 확장 할 수 .And의 수를 작성하는
문법 언어로 각 문자열에 대해 고유 한 트리를 항상 생성하는이 문법에 대해 동등한 모호하지 않은 문법.
HINT : 모호하지 않은 문법을 작성합니다.
문법은 C 언어로 if loop
의 문법과 매우 비슷합니다 (if loop
의 구문이 다른 언어에 주목하십시오). 거의 모든 컴파일러 디자인 서적에서 해결되었습니다.
Resolving the General Dangling Else/If-Else Ambiguity
참조 : 예약 컴파일러 원칙, 아호-Ullman은 제에 의한 기술 및 도구 4.5 충돌 시프트시와-줄 구문 분석을.
이 문법은 Backus-Naur 형식으로 작성 되었습니까? 아니면 다른 표기법을 사용하여 작성 되었습니까? –