Сборка компилятора с JFlex/CUP и с некоторыми вопросами

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

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

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

Заранее спасибо.

2 ответа

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

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

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

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

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

Другие вопросы по тегам