2017-05-18 1 views
0

은 내가 언어를 설계했다고 말할 수 있습니다. 성능, 테스트 생성, IDE 지원 같은 "적절한"파서/프레임 워크 (javacc, antlr, spark, mps ...)를 선택할 때 고려해야 할 기준은 무엇입니까?파서 선택 기준

저는 알고 있습니다. "적절한"것은 많은 변수에 달려 있지만, 나는 기초를두고 내 결정을 내릴 수있는 기준 목록에만 관심이 있습니다 (나중에 가중치를 적용 할 것입니다).

입력에 상관없이 Thx!

+0

의견을 묻는 것이 잘받지 못했습니다. 더 나은 [여기에 좋은 질문을하는 것이 무엇을 의미하는지 확인하십시오] (http://stackoverflow.com/help/how-to-ask). –

답변

1

이러한 결정에 가장 중요한 입력은 언어의 복잡성 일 가능성이 큽니다. 다른 파서 생성기는 다른 언어 클래스를 처리 할 수 ​​있습니다.

귀하의 언어는 아마도 context-free language 일 것입니다 (그렇지 않으면 정규 표현식을 사용하지 않거나 상당한 어려움을 겪을 수 있습니다). 일반적으로 LR 파서 (또는 그 변형)와 LL 파서. LR 파서는 더 복잡한 언어를 구문 분석 할 수 있으며 LL 파서는보다 직관적이고 이해하기 쉽습니다 (간소화 된) 규칙입니다. 내가 중요하다고

다른 기준은 다음과 같습니다 그것을 이해하고 생성 된 파서를 디버깅하는 것이 얼마나 쉬운

  • /파서 생성 과정 자체가
    • 이 그들로 LL parsers의 호의에 집중적으로 플레이 할 수있다 평신도
  • 성능
에 이해하기 일반적으로 쉽게
0

LALR (1) 파서는 미리 컴파일 된 테이블을 기반으로 할 수 있기 때문에 매우 빠르지 만 한 문자 미리보기는 문법을 제한 할 수 있습니다. 좋은 예가 GOLD Parser입니다. 선택할 수있는 엔진이 많기 때문에 BNF 만 사용하여 문법을 설명 할 수 있다면 오래되었지만 훨씬 빠릅니다.