Как скомпилировать эти файлы грамматики COBOL? - PullRequest
0 голосов
/ 18 мая 2018

Я использую файлы грамматики COBOL с нижеуказанного URL:

https://github.com/antlr/grammars-v4/tree/master/cobol85

Из данного источника есть 2 файла грамматики, которые Cobol85.g4 и Cobol85Preprocessor.g4.

Обаработать как обаяние, если я имею дело отдельно, как следующие:

~$ antlr4 -Dlanguage=Python2 Cobol85

и

~$ antlr4 -Dlanguage=Python2 Cobol85Preprocessor

Однако, я понимаю, только Cobol85Preprocessor способен понять комментарии в кобол.С другой стороны, файл грамматики Cobol85 не имеет.Лучше всего, возможно, мне нужно импортировать оба вместе в один файл.

Итак, я создал другой файл грамматики с именем Cobol.g4, который содержит код ниже:

grammar Cobol;
import Cobol85Preprocessor, Cobol85;

и скомпилировал егос помощью следующей команды:

~$ antlr4 -Dlanguage=Python2 Cobol

Хорошие новости, я не обнаружил проблем при компиляции.Плохая новость, она не работает идеально по сравнению с предыдущим методом (разбирайте файлы грамматики отдельно).

Вместо этого я получил следующее сообщение об ошибке:

line 1:30 extraneous input '.\r\n     ' expecting {<EOF>, ADATA, ADV...

Есть ли способЧтобы решить это или по замыслу, я должен иметь дело как по отдельности?Может ли кто-нибудь помочь мне с этой проблемой?

PS: Я не уверен, что эта часть информации будет полезна.Я использую Antlr 4.7.1 со Слушателем.

1 Ответ

0 голосов
/ 20 мая 2018

Отказ от ответственности: я являюсь автором этих файлов грамматики COBOL ANTLR4.

Парсер, сгенерированный из грамматики Cobol85.g4, должен быть снабжен исходным кодом COBOL, который был предварительно обработан препроцессором COBOL.Cobol85Preprocessor.g4 лежит в основе этого препроцессора и позволяет выполнять синтаксический анализ операторов, таких как COPY REPLACE, EXEC SQL и т. Д.

Cobol85Preprocessor.g4 должен быть дополнен довольно обширной дополнительной логикой, которая не включенав файлах грамматики и позволяет нормализовать форматы строк, разрывы строк, строки комментариев, записи комментариев, EXEC SQL, EXEC CICS и так далее.Этот отсутствующий код ведет к проблемам, которые вы заметили.

Написанный мной Анализатор ProBeap COBOL реализует все это на Java на основе файлов Cobol.g4 и Cobol85Preprocessor.g4 .Однако реализации Python пока нет.

...