2016-08-09 4 views
0

Я понимаю, что этот вопрос немного мета, но я принципиально хочу разобрать грамматику ANTLR4 (фактический .g4 файл) генерировать документацию и другие артефакты , основанные на грамматика (не экземпляр грамматики).Синтаксического файл G4 для создания DOC/схем

Для примера рассмотрим example Java grammar, содержащий это правило:

compilationUnit 
: packageDeclaration? importDeclaration* typeDeclaration* EOF 
; 

Я хочу, чтобы иметь возможность анализировать файл Java.g4 и выпуск документации, которая говорит «А compilationUnit содержит необязательный packageDeclaration, 0 или больше importDeclarations и 0 или более типовDeclarations ". Или, возможно, я хочу создать XSD с типом данных, называемым «compilationUnit», который содержит элементы «packageDeclaration», «importDeclaration» и «typeDeclaration» (с надлежащим набором мощности).

Каков наилучший способ добиться чего-то подобного? Создать цель (хотя цель состоит не в создании лексеров/парсеров), а в использовании файла example antlr4 grammar для анализа файла g4, или это что-то еще?

Спасибо!

ответ

1

Это было бы очень типичное использование ANTLR и удобно с учетом существующей грамматики ANTLR 4.

+0

Я думаю, что типичное использование ANTLR заключается в анализе файла, который _conforms_ в грамматике, а не для анализа самого файла грамматики (g4). Например, типичное использование - использовать Java.g4 для анализа файла Java, но я хочу, чтобы непосредственно разбирать Java.g4. Существует пример ANTLR-грамматики, которую я мог бы использовать, но на самом деле это не часть проекта ANTLR4, поэтому я не уверен, насколько он действителен. Знаете ли вы о официальном файле g4, представляющем фактическую грамматику ANTLR4 для определения грамматик? –

+0

Грамматика ANTLR4 в github.com/antlr/grammars-v4' полностью соответствует ANTLR 4.5. Я использую его для анализа других грамматик Antlr - он используется как основа для AntlrDT, редактора грамматики Eclipse ANTLR. – GRosenberg

+0

Отлично. Спасибо огромное! Тогда я возьму тот же подход! –