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