2009-10-01 2 views

답변

18

나는 ANTLR v3과 함께 좋은 경험을했습니다. 가장 큰 이점은 무한한 미리보기를 가진 LL (*) 파서를 작성할 수 있다는 것입니다. 이들은 상당히 차선책 일 수 있지만 문법은 파서의 한계를 해결하기 위해 리팩터링 할 필요없이 가장 간단하고 자연스러운 방법으로 작성할 수 있습니다. 그리고 파서의 성능은 대개 큰 문제가 아닙니다 (저는 C++ 컴파일러를 쓰지 않기를 바랍니다). 특히 학습 프로젝트에서 그렇습니다.

또한 모든 코드를 작성할 필요없이 의미가있는 ASTs을 구성하는 꽤 좋은 방법을 제공합니다. 모든 문법 제작에 대해 "중요한"토큰 또는 하위 프로덕션을 나타내며 트리 노드가됩니다. 또는 나무 생산을 할 수 있습니다.

이 어떻게 보이는지의 요지를 얻기 위해 (복잡성이 증가하는 순서로 여기에 나열된) 다음과 같은 ANTLR 문법에서 살펴보고

+0

고마워요! 좋은 제안 – Nestor

+0

다시 감사합니다 파벨. 매우 유용한 포인터. – Nestor

1

Mono C# compiler의 소스 코드를 연구 할 수 있습니다.

+0

감사합니다. 나는 C#을위한 파서를 쓰려고하는 것이 아니라, 내 자신의 언어를 파서로 쓰고 싶다. 파서는 C#으로 작성된다. 그래도 당신의 제안에 감사드립니다. – Nestor

1

아직 초기 베타 버전 인 동안 Oslo Micro의 모델링 언어 및 MGrammar 도구 부드러운 몇 가지 약속을 보여줍니다.

+0

예. 나는 그것을 보았다. 나는 (문법을 강조하는 문법을 조정하는) 편집자를 좋아한다. 그러나 그것을 사용하는 것은 조금 일찍이다. 그것은 본다. – Nestor

+1

@Nestor - 사용하기에는 너무 이르다고 동의하지만, 언급할만한 자격이 있다고 생각했습니다. 귀하의 의견에 –

+0

+1. 사실입니다.오슬로가 최종 출시 중이라면 오슬로를 사용할 것입니다. – Nestor

11

나는 Irony로 연주했습니다. 단순하고 유용하게 보입니다.

+1

아이러니 한테 좋은 점은 적어도 C#과 같은 언어로 문법을 작성할 수 있다는 것입니다. – saret

1

나는 또한 SableCC을 살펴볼 것입니다. EBNF 문법 작성이 매우 쉽습니다. Here은 간단한 C# 계산기 예입니다.

0

렉스와 yacc는 여전히 내 즐겨 찾기입니다. 당신이 처음 시작하는 사람인지 모를 정도지만, 간단히 말하면 매우 간단하고 빠르며 쉽습니다.

원하는대로 만들 수 있습니다. C# 코드를 생성하고, 다른 문법을 작성하고, 지침을 에뮬레이트합니다.

귀엽지는 않지만 텍스트 기반 형식이며 LL1이므로 구문에 맞게 조정해야합니다.

더하기 측면에서, 그것은 어디 에나 있습니다. O'reilly에 대한 훌륭한 책, 많은 샘플 코드, 미리 만들어진 문법 및 많은 모국어 라이브러리가 있습니다.

1

여기 LL (1) 파서를 구성하는 데 짧은 용지 here이 있습니다. 물론 발전기도 사용할 수 있습니다.