ANTLRi paigaldus ja käivitamine
ANTLR on parseri generaator, mida saab käivitada nii käsurealt (nagu teeb gradle) või oma IDE plugina abil. Eksamil saab oma lahendust ka Moodle'is testida, aga mugavam on, kui saab ise ka teste kirjutada ja enda masina peal käivitada.
- ANTLRiga töötamiseks võiks installeerida oma IDE-sse vastava plugina.
- Kodus testide rakendamisel on oluline gradle projekt. See käivitab ise ANTLRi ja genereerib vajalikud failid. Kui teete
git pull
, siis refresh'ist ainuüksi ei piisa! Seega, lugege hoolega järgmist juhendit.
Uuemad IntelliJ versioonid: kõik gradle'i kaudu?
Võib-olla töötab Sul lihtsalt kõik gradle'i kaudu, sest uuemad IntelliJ versioonid oskavad gradle'i kaudu teste väga hästi käivitada. Neid on vaikimisi juba pandud gradle'i kaudu teste käivitada. Seda saab tegelikult valida järgmistes seadistustes:
Kui Sul on seal 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 grammatika muudates testide tulemused muutuvad, siis on kõik hästi ja Sa ei pea väga muretsema. Muidugi tasub aga teada, mis taustal toimub, kui peaks midagi valesti minema.
Kui automaatselt ei tööta...
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.)