2011-11-15 5 views
0

읽을 수있는 형식으로 트리를 인쇄 할 준비가 된 ANTLR 문법을 찾고 있습니다. Java.g (http://openjdk.java.net/projects/compiler-grammar/antlrworks/Java.g)을 인쇄하려고하면 결과가 불편했습니다. 하지만 AST를 인쇄하는 문법 (Java 프로젝트 포함)이 하나 있습니다. 이 문법은 Marton Papp의 파스칼 문법입니다 (http://www.antlr.org/grammar/1279217060704/pascal3.zip). 같은ANTLR 인쇄 트리

뭔가 :

VARDECL text="Var" 
     VARLIST text="" 
     VAR text="a" 
     VAR text="b" 
     VARTYPE text="Integer" 

는 파스칼 (pascal3.zip)입니다.

C, Java, C#, VB와 같은 것들을 보았습니까? 어쩌면 다른 언어로 볼 수 있을까요?

  • 필요한 대상 언어 (Parser 및 Lexer)는 Java뿐입니다.
+0

@BartKiers이, 자네 말이 맞아. 그것은 Java 문법에 대한 절대적인 의미입니다. 그래서 내 질문은 : 나는 조건에 맞게 보이는 포트란 파서를 찾는다 : http://sourceforge.net/projects/fortran-parser/ (자바로 쓰여있다). 누군가가 실제 유용한 AST (프로그램 구조 포함)를 만드는 문법에 대해 조언 할 수 있습니까? –

답변

1

Java 문법을 아주 쉽게 변경할 수 있습니다 (약간의 ANTLR을 알고 있다고 가정). 렉서와 구문 분석기 문법의 작성은 가장 어려운 부분이며,이 경우 이미 완료되었습니다.

이 이전 Q & 보면, 파서 문법 출력을 대신 간단한 파스 트리의 AST을 수 있도록 방법을 알고 싶다면 : How to output the AST built using ANTLR?

+0

"antlr을 사용하여 작성된 AST를 출력하는 방법"의 자습서 중대하다. Java.g에 대한 수정을 구현할 수 있다고 생각합니다. 하지만 어쩌면,이 경우에, 나는 두 번 일합니다. 어쩌면 단 하나의 문법 만 필요하다면, C, Java, C#, VB에 대해 할 수 있습니다. 문법이 없으면 이러한 언어에 대해 AST를 인쇄 할 수 있습니다. 질문 : 어쩌면 누군가가 월드 와이드 웹에서 그것을 볼 수 있을까요? –

+0

@ Михаил Фоканов, 아마도 거기에 AST를 생성하는 C 및 C# 문법이 있습니다. 모르겠습니다. 그러나, 나는 VB 용 ANTLR 문법이 없다고 확신한다. VB 소스 파일을 파싱 할 때 괜찮은 작업을하는 것은 의심 스럽다. VB에는 끔찍한 문법이 있습니다! –