Institute of Computer Science
  1. Main page
  2. Automata, Languages and Compilers
ET
Log in

Automata, Languages and Compilers

  • Üldinfo
  • Ajakava
  • Eksami näidised
  • Teemad
    • 1. Soojendus
    • 2. Regulaaravaldised
    • 3. Automaadid
    • 4. Avaldise struktuur
    • 5. Grammatikad ja lekser
    • 6. Käsitsi parsimine
    • 7. ANTLRiga töötamine
      • Paigaldus
      • Sissejuhatus
      • ANTLRi parsepuu
      • AST klassid
      • Eksami põhiosa!
      • Kodutöö
    • 8. Interpretaator
    • 9. Kompilaator
    • 10. Edasi!
  • Süvendus
  • GitHub
  • Moodle
  • Zulip
  • Zoom

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.

  1. 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.
  2. 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".
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment