Antlr - installeerimine

Antlr (ANother Tool for Language Recognition) on vaba (ei aseta mingeid tingimusi selle kasutamisele, kuid soovib, et selle abil tehtud tarkvara viitaks Antlr.ile) ja selle võib maha laadida saidilt www.antlr.org. Antlr on süsteem, mille abil võib transleeritava keele grammatika ja abstraktse süntaksi puu (AST - Abtract Syntax Tree) läbimise kirjelduste põhjal genereerida translaatoreid Java, C#, C++ või Pythoni abil realiseerimiseks. Antlr-i töö idee sarnaneb Yacc-i ja Lex-iga, kuid aastate jooksul (seda hakati arendama aastal 1989) on selle autor Terence Parr (San Francisco Ülikooli arvutiteaduse professor) seda Yacc-ist ja Lex-ist tunduvalt edasi arendanud: leksika kirjeldatakse kontekstivaba grammatikaga (Flex-is kasutatakse regulaarseid avaldisi), Antlr-i leksika- ja grammatikafailid on eraldi pea(käivitavast) programmist, tunduvalt lihtsam ja mugavam on abstraktse süntaksi puu moodustamise ja läbimise kirjeldamine, igaüks võib teha Antlr-ist oma emakeelse versiooni (süsteemis kasutatavad stringid on saadaval eraldi failis) jne jne.

Antlr-i viimasel versioonil 3.0 on ka  arenduskeskkond ANTLRWorks, mis tunduvalt lihtsustab Antlr-i kasutamist - pole enam tarvis grammatikate loomise ja editeerimise jaoks eraldi tekstieditori, ANTLRWorks võimaldab grammatikat siluda, interpreteerida ja käivitada.

Järgnevas on kasutatud Antlr-i Java-versiooni, s.t. semantilised tegevused kirjeldatakse Java-s ja tulemuseks on Java-keelne programm. Selle kasutamiseks peab arvutis olema installeeritud JDK 1.1 (vähemalt, kuid soovitav on installeerida Java 2 SDK viimane versioon); kui tahetakse kasutada ka AST graafilist esitust (omaette aknas, vt näide paragrahvis "Antlr - avaldis sulgudega"), siis peab olema installeeritud ka Java moodul Swing; Java ja Swingi saab maha laadida saidilt http://java.sun.com

Antlr on parem paigutada võimalikult lähedale mõne kõvaketta juurele ("C:\", "D:\" jne), sest pikad katalooginimed (eriti mõnesõnalised ja tühikutega, näit "Program Files") võivad tekitada töötamisel probleeme.

Antlr-i moodilid on pakitud installeerimiskataloogis olevasse faili antlr.jar (jar - java-programmide pakkimismeetod, sellele nimele lisandub veel versiooni tunnus, näit antlr-3.2.jar CLASSPATH. Kui Antlr installeeriti näiteks kataloogi C:\antlr3 ja antlr-i fail on (koos versioonitähisega) antlr-3.2.jar, tuleb muutujale CLASSPATH (selle juurde pääseb näiteks parempoolse hiirenupuga ikoonilt "My Computer - Properties - Advanced - Environment Variables - System Variables") lisada a C:\antlr3\antlr-3.2.jar; kui muutujat CLASSPATH varem üldse polnud, tuleb see süsteemimuutujate aknas nupuga New luua.

Windows lubab igal kasutajal luua oma CLASSPATH-muutuja, seega kui süsteemi CLASSPATH-muutujas teed failini antlr-3.2.jar pole (seda saab kontrollida, avades käsuga Run-cmd käsuakna ja andes seal käsu echo %CLASSPATH% -  vastusena näidatakse muutuja CLASSPATH väärus), tuleb  süsteemsete muutujate akna ülemises osas (User variables for ...)  lisada muutuja CLASSPATH (kui seda enne polnud) ja  sisada sinna .;C:\antlr3\antlr-3.2.jar; (siin . on tee töödeldava faili kataloogini, ka see peab olema!).

Antlr käivitatakse käsurealt (DOS-aknas), kuid paljud tekstieditorid (tekstieditori on tarvis Antlr-i grammatikafaili ja peaprogrammi kirjutamiseks) võimaldavad anda ka menüüst DOS-akna käske; on olemas ka Antlr-i Eclipse-versioon. Kui loodava translaatori grammatika on kirjeldatud failis grammar.g (oletusena on Antlr-i grammatikafailide laiend .g), siis Antlr-i käivituskäsk on

java antlr.Tool grammar.g

Programmi AntlrWorks kasutamisel pole eelnevat DOS-käsku tarvis, selle saab AntlrWorks menüüst Generate Code.
Selle käsu järel luuakse kataloogi, milles oli salvestatud fail grammar.g, mõned uued .java-failid. Peale grammatikafaili peab kasutaja looma ka peaprogrammi (näiteks Main.java), milles kirjeldatakse kogu translaatori käivitamist (selles määratakse ka süntaksigrammatika algussümbol). Kuna tavaliselt paigutatakse kõik ühe projekti failid eraldi kataloogi, võib lihtsalt kompileerida kõik .java-failid:

javac *.java

Kui loodud translaatori sisend on (näiteks) failis test.txt, siis translaator käivitatakse, suunates faili program.txt peaprogrammi Main sisendiks:

java Main < test.txt


Küsimused, probleemid: ©2004 Jaak Henno