회 문의 언어 인 EPAL은 다음과 같은 명확한 문맥없는 문법에 의해 생성 된 언어로 정의됩니다.
EPAL은 많은 파싱 알고리즘의 '베인'입니다. 언어를 설명하는 문법을 파싱 할 수있는 명확한 CFG에 대한 파싱 알고리즘은 아직 만나지 못했습니다. 특정 파서가 파싱 할 수없는 명확한 CFG가 있음을 보여주기 위해 종종 사용됩니다. 이것은 내 질문에 영감을 주었다.
EPAL에서 작동하는 명확한 CFG 만 허용하는 구문 분석 알고리즘이 있습니까?
물론, 언어를 선형 시간으로 구문 분석하는 문법에 대한 임시 2 패스 파서를 설계 할 수 있습니다. EPAL을 염두에두고 특별히 설계되지 않은 분석 방법에 관심이 있습니다.
1
나는 재귀 강하에 의해 LL (1)에 어떤 문제가 있는가?
—
Raphael
역 추적 재귀 하강은 언어가 k에 대해 LL (k)이 아니므로 EPAL을 처리 할 수 없습니다. 역 추적을 사용한 재귀 강하는 문법을 시간으로 처리 할 수 있지만, 이는 지수 최악의 동작을 갖는 일반적인 알고리즘입니다.
—
Alex ten Brink
는 지수가 아니며 2 차입니다. 는 지수입니다.
—
Victor Stafusa
@Victor : 역 추적은 특정 문법이 아닌 일부 문법에서 지수 동작을합니다. 여전히 모호한 문법에서 작동하는 알고리즘이므로 내 질문에 대한 답변으로 할인합니다.
—
Alex ten Brink
@ jmad : 내 의도는 언어를 구문 분석하는 것이 아니라 (선형 시간으로 간단하게 수행 할 수 있음) 오히려 내 호기심을 충족시키는 것입니다. 구문 분석 방법으로 구문 분석 할 수없는 언어의 예로서 사용되는 것을 보았습니다. 그것을 인식하는 파싱 방법이 있는지 궁금합니다.
—
Alex ten Brink