ANTLRi paigaldus ja käivitamine
Teemat tutvustav video: ANTLR intro.
ANTLR on parseri generaator, mida saab käivitada nii käsurealt (nagu teeb gradle) või oma IDE plugina abil. Eksamil saab oma põhiosa lahendust ka Moodle'is testida, aga mugavam on, kui saab ise ka teste kirjutada ja enda masina peal käivitada.
- Kodus testide rakendamisel on oluline Gradle'i projekt. See käivitab ise ANTLRi ja genereerib vajalikud failid. Kui uuendate kursuse repot, siis tuleb kindlasti Gradle'i muudatused laadida, et kõik tööle hakkaks.
- ANTLRiga töötamiseks võiks installeerida oma IDE-sse vastava plugina.
Uuemad IntelliJ versioonid: kõik Gradle'i kaudu
Soovitame seda varianti!
Uuemad IntelliJ versioonid oskavad Gradle'i kaudu koodi kompileerida ja teste käivitada. See peaks olema vaikimisi seadistus, aga IntelliJ seadetest saad üle kontrollida siit:
Kui seal on märgitud "Run tests using" välja väärtuseks "Gradle", siis peaks kõik õigesti töötama. Järgmine katse näitab, kas käivituvad testid õigesti.
- Proovime käivitada week7.demos.ArithGrammarTest.
- Nüüd proovime teha väikse muudatuse grammatikas src/main/antlr/week7/demos/Arith.g4, et testid läbi ei läheks.
- Proovime teste uuesti käivitada.
Kas õnnestus teha nii, et testid läbi ei läheks? Kui grammatikat muutes testide tulemused muutuvad, siis on kõik hästi. Muidugi tasub aga teada, mis taustal toimub, kui peaks midagi valesti minema.
Kui automaatselt ei tööta...
Ei soovita seda varianti!
Kui IDE hakkab kurtma, et ei leia üles klasse nagu AktkLexer, AktkParser ning muid -Lexer ja -Parser klasse, siis see on normaalne. ANTLR võtab oma sisendiks .g4 formaadis faili (näiteks Aktk.g4) ning selle põhjal genereerib Java lähtekoodi (näiteks AktkParser.java ja AktkLexer.java). Seda genereerimise protsessi saab välja kutsuda käsuga gradle generateGrammarSource
, kuid ta on ka automaatselt kaasatud käskudes gradle build
ja gradle test
.
Kuna IDE's testide käivitamine vaikimisi ei pruugi automaatselt genereerida uusi lekseri ja parseri lähtekoodifaile, siis testige ikkagi oma lahendust gradle test
käsuga või seadistage oma IDE vastavalt lehe lõpus olevale juhendile. Kui sulle tundub, et grammatika on korrektne kuid testid ei lähe läbi, siis veendu, et oled selle grammatika põhjal uue lähtekoodi genereerinud.
Käivitage testid (gradle test
) käsurealt või oma IDE gradle integratsiooni kaudu (IntelliJ IDEA's saab gradle käske näha kui avate View -> Tool Windows -> Gradle.
Kui gradle kaudu teste ei õnnestu käivitada, siis on teisi võimalusi ka, kuidas grammatikaid automaatselt uuendada enne testide käivitamist:
- Konfigureerida ANTLR plugin, et ta õigesse kohta ja automaatselt genereeriks lähtekoodi failid.
- IntelliJ all saab ka muuta run konfiguratsioon, et ta "Make" asemel käivitaks gradle task "testClasses". Selle kohta on ka olemas suurepärane screencast. (Seal peab projekti "09-antlr" asemel valima meie praegune akt2020.)