ANTLR | |
Fejlesztő | Terence Parr és mások |
Első kiadás | 1992 február |
Legfrissebb stabil kiadás | 4.13.2 (stabil verzió, 2024. augusztus 3.)[1] |
Programozási nyelv | Java |
Platform | platformfüggetlen |
Állapot | aktívan fejlesztik |
Kategória | compiler-compiler |
Licenc | BSD licenc |
Az ANTLR weboldala |
Az ANTLR (ejtsd: entler) a számítógépes nyelvfelismerés szakterületén használatos szoftver. LL(*) típusú szintaktikus elemzőket állít elő. AZ ANTLR az 1989-ben kifejlesztett Purdue Compiler Construction Tool Set (PCCTS) utódja. Fejlesztője Terence Parr, a San Franciscói Egyetem professzora.
Az ANTLR bemenete egy nyelvet leíró formális nyelvtan, kimenete pedig egy ezen nyelvet felismerő véges automata forráskódja. Az ANTLR a következő kimeneti programnyelveket támogatja: Ada, ActionScript, C, C#, Java, JavaScript, Objective-C, Perl, Python, és Ruby. A nyelvet környezetfüggetlen nyelvtan írja le a kiterjesztett Backus–Naur forma segítségével.
Az ANTLR alkalmas nyelvi elemzők, lexikális elemzők, faelemzők, és kombinált nyelvi-lexikális elemzők generálására. Az elemzők képesek automatikusan szintaxisfákat alkotni, amelyek tovább vizsgálhatók a faelemzők segítségével. Az ANTLR mindegyik célra egységes leírónyelvet biztosít, amely egyszerűsíti a használatát.
Alapértelmezés szerint az ANTLR beolvassa a megadott nyelvtant, és létrehozza a nyelvtanhoz tartozó elemzőt (egy olyan programot, amely hibát jelez, ha a bemenete nem felel meg a nyelvtan szintaxisának). Ha nincsenek szintaktikus hibák, az elemző egyszerűen üzenet nélkül kilép. A nyelvtani elemekhez azonban akciókat is lehet kapcsolni. Az akciók ugyanazon a nyelven íródnak, amelyen az elemző, ezek a kódrészletek a megfelelő helyeken beépülnek az elemző kódjába. Akciók segítségével szimbólumtáblákat építhetünk és ellenőrizhetünk, vagy fordítók esetében a célnyelven utasításokat adhatunk.
Az ANTLR 3 BSD licenc alatt kiadott szabad szoftver. A korábbi verziók a közkincs részei.[2]
Míg maga az ANTLR szabadon hozzáférhető, a felhasználói dokumentációja nem az. Az ANTLR kézikönyv (The Definitive ANTLR Reference) kereskedelemben kapható. A szabadon hozzáférhető dokumentáció néhány bevezetőre, példakódra és alapvető API-leírásra korlátozódik.
Az Eclipse fejlesztőkörnyezethez több ANTLR nyelvtant támogató plugin elérhető: a bizonyos feltételek mellett ingyenes ANTLR Studio, illetve a SourceForge-ról letölthető 2 és 3 pluginek.
Az ANTLR v4 verziója helyesen kezeli a balrekurziót (kivéve az indirekt balrekurziót, tehát az olyan nyelvtani szabályokat, amelyekben egy x szabály y-ra hivatkozik, és az y pedig x-re)[3] valamint rugalmasan támogatja az akciókat és attribútumokat. Az akciók a nyelvtantól elkülönülten definiálhatók, ami nagyban megkönnyíti a kész elemzők több célnyelvhez való illesztését (az adott elemző nem csak egy nyelvhez generálható).
Az ANTLR egy elemzőgenerátor, amely strukturált szöveg- vagy bináris fájlok olvasására, feldolgozására, végrehajtására vagy fordítására használható. Oktatási intézményekben és az iparban is használják különféle nyelvek, eszközök és keretrendszerek készítésére. A Twitter keresője ANTLR elemzőt használ a keresőfrázisok elemzésére, és naponta kétmilliárd keresést szolgál ki. Az Apache Hive és Pig – a Hadoop rendszer adattárház és analízis rendszerei – rendszerek nyelvei mind ANTLR-t használnak. A Lex Machina rendszer szintén ANTLR alapú elemzőt tartalmaz, amellyel jogi szövegeket elemez. Az Oracle ANTLR-t alkalmaz az SQL Developer IDE-ben és a migrációs eszközeiben. A NetBeans IDE a C++ forráskódot ANTLR-rel elemzi. A HQL nyelv értelmezője a Hibernate objektum-relációs leképező keretrendszerében ANTLR segítségével készült.
Néhány lehetséges feladat az ANTLR számára: konfigurációs fájl-olvasók, régi programkódok konverterei, wiki jelölőnyelvek megjelenítői, JSON elemzők, objektum-relációs adatbázis-megfeleltetések, 3D vizualizációk leírása, Java forráskód kiegészítése profilozó információkkal (domén-specifikus nyelvek).
Ez a szócikk részben vagy egészben az ANTLR című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.