문제

저는 새로운 언어를 작업하고 있으며 문법을 작성하는 동안 문법의 완전성, 충돌 및 유사성을 테스트할 수 있기를 바랍니다.나는 기본 파서 생성기에 대해 별로 걱정하지 않습니다(그러나 .NET용 파서 생성기가 더 바람직할 것입니다).

따라서 간단히 말해서 기능 목록은 다음과 같습니다.

  • 텍스트 편집기 빌드 기능
  • 구문/의미 오류 보고
  • 충돌 보고
  • 문법 테스트 기능(예:문법 정의의 정확성을 확인하기 위해 의도 된 문법에 코드를 쓰는 창)

Irony라는 CodePlex 프로젝트에는 제가 요청한 것과 비슷한 것이 있지만 필요한 BNF로 문법 작성을 지원하지 않습니다.

도움이 되었습니까?

해결책

나는 추천하고 싶다 ANTLR 파서 생성기로.기능이 매우 완벽하며 C# 및 기타 다양한 대상 언어를 지원합니다.

IDE의 경우 다음과 같은 Eclipse용 플러그인이 있습니다. ANTLR IDE 그리고 독립 실행형 IDE는 ANTLRWorks, 둘 다 잘 작동합니다.

그러나 ANTLR은 LR(k) 알고리즘 대신 LL(*) 알고리즘을 사용합니다.그래도 매우 훌륭하며 ANTLRWorks는 필요한 대부분의 왼쪽 인수분해를 수행할 수 있습니다.

다른 팁

"새로운 언어로 작업"하고 참조 BNF를 올바르게 얻으려고 할 때 참조 문법을 특정 파서 생성기로 편향시키고 싶지 않을 것입니다.Bison(LALR(1)) 또는 ANTLR(LL*)에 대한 테스트 문법을 작성할 때의 문제점 중 하나는 바로 그렇게 한다는 것입니다.또한 아마도 파서 생성기 작업이 아니라 문법 작업에 관심이 있기 때문에 "BNF 규칙을 실제로 구문 분석하는 방식으로 코딩하는 방법"에 매달리고 싶지 않을 것입니다.

따라서 나는 완전한 컨텍스트 프리 파서 생성기를 사용하는 것이 좋습니다.이렇게 하면 최소한의 노력으로 가장 자연스러운 형태로 문법을 작성할 수 있습니다.이는 "텍스트 편집기", "편집기 테스트 창" 등을 포기하는 것을 의미할 수 있습니다.하지만 내 경험상(스택 오버플로 확인) 컨텍스트 프리 파서 생성기를 사용하면 이러한 세부 사항이 완전히 압도됩니다.편집-저장-구문 분석에는 많은 노력이 필요하지 않습니다.

Bison에는 컨텍스트 없는 파서 생성을 제공하는 GLR 옵션이 있고 오픈 소스이므로 문법 테스트에만 적합할 수 있다는 것을 알고 있습니다.

우리의 DMS 소프트웨어 리엔지니어링 툴킷 상업용이며 Python, Ruby, PHP 등과 같은 최신 언어는 물론 C, C++, COBOL을 포함한 30개 이상의 전체 언어를 구현하는 데 사용된 GLR 파서도 제공합니다.

DMS와 Bison의 차이점은 DMS가 전체 언어 분석기/번역기(유니코드 어휘 분석, 오류 보고 및 복구를 통한 GLR 구문 분석, 자동 트리 구성, 기호 테이블 구성, 제어 및 데이터 흐름 분석) 구성의 모든 측면을 지원하도록 설계되었다는 것입니다. , 변형, 예쁜 인쇄, ...).자신의 "새로운 언어"를 진지하게 평가하고 싶다면 결국 이 모든 작업을 수행해야 하며 Bison은 이 길에서 아주 작은 발걸음에 불과합니다.DMS가 여러분을 끝까지 모셔다 드릴 것입니다.

이 도구가 유용할 수도 있습니다. 골드 파서 빌더

아쉽게도 창문만 있습니다.

다음과 같은 다양한 대상 언어에 대해 labled BNF에서 작업 코드와 makefile을 생성할 수 있는 BNFC를 살펴보십시오.하스켈, OCaml, C, C++, 자바.예쁜 프린터, 추상 구문 검사기/프린터, 자신의 컴파일러나 인터프리터를 위한 뼈대 코드, 포스트스크립트 언어 문서를 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top