Сборка компилятора с JFlex / CUP и с некоторыми вопросами - PullRequest
1 голос
/ 31 декабря 2010

В настоящее время я разрабатываю простой компилятор для языка BASIC, и я обнаружил некоторые проблемы, которые я хотел бы вам задать.

Первая из них проста, где я должен определить свои токены?Я имею в виду, что в файле Lexer.java я посылаю токены парсеру, используя выражение: символ возврата (sym.STATIC); STATIC для меня токен, но я не знаю, где определитьэто.

Во-вторых, где я должен определить основной класс, в котором я создаю экземпляры Lexer и Parser?В классе Parser или в другом?

Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 18 июля 2011

Первый : файл с классом, определяющим эти символы, будет сгенерирован для вас автоматически

Второй : вы создаете свой собственный класс с основным, в котором вы создаетеобъект из сгенерированного Lexer, которому вы передаете InputStream, и объект от Parser, которому вы передаете Lexer.После создания этих двух объектов вы вызываете метод parse (), принадлежащий Parser.

0 голосов
/ 27 октября 2017

Первый: Вы не должны редактировать файл .java напрямую.Вы должны редактировать файл Scanner.jflex.Он должен содержать символ возврата (sym.STATIC); .

Когда вы используете что-то в файле .jflex, вам также необходимо объявить это одновременно в файле Parser.cup.Ниже блока, который говорит: код парсера {::} , вам необходимо объявить символ STATIC следующим образом: терминал STATIC;

Второй: Вам не нужно создавать основной файл самостоятельно.При совместном использовании JFLEX и CUP вам просто нужно скомпилировать файлы с помощью инструмента сборки Apache Ant или NetBeans.Основной файл будет создан автоматически для вас.

...