문제

다음 문법에 대한 왼쪽 재귀를 제거하는 방법은 무엇입니까?

E := EE+|EE-|id

일반적인 절차 사용 :

A := Aa|b

변환 :

A := b|A'
A' := ϵ| Aa 

이것을 원래 문법에 적용하는 것은 다음과 같습니다.

A = E, a = (E+|E-) and b = id

그러므로:

E := id|E'
E' := ϵ|E(E+|E-)

그러나이 문법은 틀 렸습니다

ϵE+ -> ϵ id +

유효하지만 이는 잘못된 포스트 픽스 표현식입니다.

도움이 되었습니까?

해결책

"일반적인 절차"가 잘못 인용되었습니다. Dragon Book에서 가져 오기 :

A := Aα | β

becomes

A  := βA′
A′ := αA′ | ϵ

… 수율 :

E  := id E′
E′ := (E + | E -) E′ | ϵ
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top