2016-06-09 15 views
2

menhir의 출력 결과를 다음과 같이 변경하고 싶습니다. 모든의 문법적 대안을 찾은 다음 목록에 넣고이 ambiguus 해석을 돌려 받길 원합니다. 충돌을 줄이거 나 저장하지 않습니다.menhir이 모든 대안을 찾으십니까?

menhir의 소스 코드에서 "Engine.ml"을 살펴 봐야 할 것 같습니다. 결과 구문 론적으로 결정된 토큰은 문법 자동화의 체크 포인트 상태로 "Accepted v"변형 유형 항목으로 제공됩니다. 이 내용은 상태를 변경하는 재귀 함수 번들의 일부인 "accept env prod"함수에 의해 발견됩니다.

가능한 모든 결과를 여기에 입력하고 아무 일도 일어나지 않는 것처럼 어떻게 이러한 기능을 변경할 수 있습니까? 아니면 이것이 어쨌든 작동하지 않을 것이라고 생각합니까?

감사합니다.

답변

4

당신이 찾고있는 것은 GLR parser generator입니다 (G는 일반화 된 것입니다). Menhir은 그러한 도구가 아니므로 원하는대로 쉽게 수정할 수 있을지는 의문입니다.

그러나 정확히 원하는대로 수행하는 도구가 있습니다 (dypgen).

+0

정말 좋은 팁입니다. :) 고마워 – gwf