title |
---|
Student Support Code Template |
Dies ist ein Starter-Projekt für die Übungsaufgaben in "Compilerbau" (Bachelor). Es existiert eine Gradle-Konfiguration (Java-Projekt), JUnit und ANTLR sind auch bereits eingebunden. Das Projekt zeigt die Einbindung der ANTLR-Grammatiken. Zusätzlich existieren Beispielgrammatiken für einige Übungsblätter.
Öffnen Sie den Ordner sample_project
als neues Java-Projekt "mit existierenden Quellen" in
IntelliJ. Achten Sie dabei darauf, dass Sie als "Build
Model" entsprechend "Gradle" auswählen, damit die Konfiguration übernommen wird.
Sie benötigen ein installiertes Java SE Development Kit 21 LTS. Achten Sie darauf, dass dieses auch wirklich von IntelliJ verwendet wird (zu finden unter Projekt-Einstellungen).
Weitere Software ist nicht notwendig. ANTLR und JUnit werden über das Build-Skript automatisch als Dependency heruntergeladen und eingebunden. Es empfiehlt sich dennoch, zusätzlich das ANTLR-Plugin für IntelliJ zu installieren - damit können Sie in der IDE interaktiv mit den Grammatiken experimentieren und müssen nicht immer das gesamte Programm kompilieren und laufen lassen.
Sie können natürlich auch eine beliebige andere IDE oder sogar einen einfachen Editor verwenden.
./gradlew clean
Konfigurieren Sie Ihr Programm im build.gradle
in der Variablen mainClass
.
Danach können Sie das Programm kompilieren und starten über ./gradlew run
.
Ihre Java-Sourcen können Sie mit ./gradlew spotlessApply
formatieren.
./gradlew check
Die ANTLR-Grammatiken werden im Ordner src/main/antlr
erwartet. Sie
werden standardmäßig beim Bauen der Applikation übersetzt, also beispielsweise beim Ausführen
von ./gradlew run
oder ./gradlew build
.
Die dabei generierten Dateien werden im Build-Ordner
build/generated-src/antlr/main/
abgelegt und sind über
die Gradle-Konfiguration automatisch im Classpath verfügbar.
Falls Ihre Grammatik in einem Package liegt (beispielsweise
HelloPackage.g4
im Package my.pkg
), dann wird für
die generierten Sourcen im Build-Ordner automatisch dieses Package mit angelegt. Damit später
die Einbindung in Ihr Programm funktioniert, sollten Sie entsprechend in der Grammatik über
die Direktive @header
die entsprechende Package-Deklaration mit in die generierten Sourcen
hineingenerieren lassen.
Wenn Sie die Grammatik einzeln übersetzen wollen, können Sie dies mit
./gradlew generateGrammarSource
tun.
This work by Carsten Gips and contributors is licensed under MIT.