Skip to content

Commit b641e2a

Browse files
committed
lecture: add remarks on intellij and gradle (build settings) (ANTLR)
closes #394
1 parent 185a3e7 commit b641e2a

4 files changed

Lines changed: 37 additions & 5 deletions

File tree

lecture/01-lexing/antlr-lexing.md

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ Interpunktions-Token) kann man sich das Attribut auch sparen, da das Lexem durch
163163
Tokennamen eindeutig rekonstruierbar ist.
164164

165165
| Token | Beschreibung | Beispiel-Lexeme |
166-
|:----------|:-----------------------------------------------------|:---------------------|
166+
|:-----------|:--------------------------------------------------|:---------------------|
167167
| `if` | Zeichen `i` und `f` | `if` |
168168
| `relop` | `<` oder `>` oder `<=` oder `>=` oder `==` oder `!=` | `<`, `<=` |
169169
| `id` | Buchstabe, gefolgt von Buchstaben oder Ziffern | `pi`, `count`, `x3` |
@@ -189,7 +189,7 @@ WHITESPACE : [ \t\n]+ -> skip ;
189189
[Konsole: Hello (Classpath, Aliase, grun, Main, Dateien, Ausgabe)]{.ex
190190
href="https://github.com/Compiler-CampusMinden/CB-Vorlesung-Bachelor/blob/master/lecture/01-lexing/src/Hello.g4"}
191191

192-
::: notes
192+
:::: notes
193193
## Hinweis zur Grammatik (Regeln)
194194

195195
- `start` ist eine Parser-Regel =\> Eine Parser-Regel pro Grammatik wird benötigt,
@@ -244,7 +244,8 @@ href="https://github.com/Compiler-CampusMinden/CB-Vorlesung-Bachelor/blob/master
244244
[ANTLR-Plugin](https://plugins.jetbrains.com/plugin/7358-antlr-v4). Dieses erlaubt
245245
das interaktive Experimentieren mit ANTLR-Grammatiken, ohne dass man ANTLR selbst
246246
installiert haben muss oder Code geschrieben haben muss. Für die Arbeit mit
247-
Grammatiken ist dieses Plugin unbedingt empfehlenswert!
247+
Grammatiken ist dieses Plugin unbedingt empfehlenswert! (Für das normale Arbeiten
248+
sollten Sie aber die Gradle-Konfiguration nutzen!)
248249

249250
**Hinweis**: Im Beispiel-Projekt
250251
[student-support-code-template](https://github.com/Compiler-CampusMinden/student-support-code-template)
@@ -260,12 +261,43 @@ automatisch vom ANTLR-Gradle-Plugin beim Build-Prozess (`./gradlew build`) gefun
260261
und bearbeitet werden. Die daraus generierten ANTLR-Lexer und -Parser werden im
261262
Build-Ordner `build/generated-src/antlr/main/` abgelegt und stehen in der IDE damit
262263
automatisch zur Verfügung, ohne dass die generierten Dateien im versionierten
263-
Source-Tree auftauchen und diesen "verschmutzen". *Wichtig*: So lange wie die
264+
Source-Tree auftauchen und diesen "verschmutzen". **Wichtig**: So lange wie die
264265
generierten Dateien nicht erzeugt wurden, zeigen die IDE für diese Klassen und
265266
Interfaces entsprechend Fehler an. Ein Übersetzen des Projekts oder ein explizites
266267
`./gradlew generateGrammarSource` generiert die fehlenden Dateien und die
267268
Fehlermeldungen sollten verschwinden.
268269

270+
::: important
271+
**Hinweis**: Sorgen Sie dafür, dass Ihre IDE tatsächlich auch die
272+
**Projekteinstellungen von Gradle übernommen** hat und auch **mit Gradle baut**!
273+
274+
1. Check, ob die **Projekteinstellungen** in IntelliJ passen:
275+
276+
1. Menü `File > Project Structure > Project Settings > Project` sollte für Ihr
277+
Projekt als SDK ein "Java 25" zeigen:
278+
279+
![](images/ij-projectsettings-sdk.png)
280+
281+
2. Menü `File > Project Structure > Project Settings > Libraries` sollte für
282+
Ihr Projekt Jar-Files für ANTLR4 zeigen:
283+
284+
![](images/ij-projectsettings-libs.png)
285+
286+
2. Check, ob **IntelliJ mit Gradle baut**:
287+
288+
Menü `File > Settings > Build, Execution, Deployment > Build Tools > Gradle`
289+
sollte auf Gradle umgestellt sein:
290+
291+
![](images/ij-setting-gradlebuild.png)
292+
293+
Unter **"Build & Run" sollte "Gradle"** ausgewählt sein, die **"Distribution"
294+
sollte auf "Wrapper"** stehen, und als **"Gradle JVM"** sollte die für das
295+
Projekt verwendete JVM eingestellt sein, d.h. aktuell Java 25.
296+
297+
Siehe auch
298+
[Compiler-CampusMinden/student-support-code-template](https://github.com/Compiler-CampusMinden/student-support-code-template/blob/master/README.md).
299+
:::
300+
269301
## "Hello World" übersetzen und ausführen
270302

271303
1. Grammatik übersetzen und Code generieren: `antlr Hello.g4`
@@ -423,7 +455,7 @@ Lexers u.U. schwer vorhersehbar machen!
423455

424456
Die Empfehlung ist, non-greedy Lexer-Regeln nur sparsam einzusetzen (vgl.
425457
[github.com/antlr/antlr4/blob/master/doc/wildcard.md](https://github.com/antlr/antlr4/blob/master/doc/wildcard.md)).
426-
:::
458+
::::
427459

428460
::: slides
429461
# Verhalten des Lexers: 1. Längster Match
639 KB
Loading
411 KB
Loading
712 KB
Loading

0 commit comments

Comments
 (0)