2014-11-27 2 views
6

들여 쓰기 기반의 python과 비슷한 언어에 FParsec을 사용하고 싶습니다."오프 사이드"(들여 쓰기 기반) 언어를 fparsec으로 구문 분석 할 수 있습니까?

이 작업은 렉싱 단계에서 수행해야한다는 것을 알고 있지만 FParsec에는 렉싱 단계가 없습니다. FParsec을 사용하거나, 렉싱 후에 어떻게 먹일 수 있습니까?

PD : 저는 F #에서 새로 왔지만 다른 언어로도 번역되었습니다.

답변

9

예, 가능합니다.

여기 FParsec 작성자의 relevant article입니다. 주제에 대해 자세히 알고 싶다면 this paper을 읽을 가치가 있습니다. FParsec에 영감을주는 파서 결합자인 Parsec을 기반으로하는 들여 쓰기 인식 구문 분석을위한 여러 패키지가 있음을 지적합니다.

FParsec에는 별도의 렉 싱 단계가 없지만 대신 렉싱 및 구문 분석을 단일 단계로 통합합니다. IMO 들여 쓰기를 인식하는 구문 분석은 파서 생성자 (fslex/fsyacc)보다 파서 결합 자 (FParsec)를 사용하는 것이 좋습니다. 그 이유는 현재 들여 쓰기를 수동으로 추적하고 컨텍스트를 기반으로 좋은 오류 메시지를보고해야하기 때문입니다.