ANTLR
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.
ANTLR 4
[szerkesztés]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).
Jegyzetek
[szerkesztés]- ↑ Release 4.13.2, 2024. augusztus 3. (Hozzáférés: 2024. augusztus 20.)
- ↑ Archivált másolat. [2011. július 18-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. december 15.)
- ↑ Archivált másolat. [2014. július 14-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014. július 9.)
Irodalom
[szerkesztés]- Parr, Terence (May 17, 2007), The Definitive Antlr Reference: Building Domain-Specific Languages (1st ed.), Pragmatic Bookshelf, pp. 376, ISBN 0-9787392-5-6, <http://www.pragprog.com/titles/tpantlr/the-definitive-antlr-reference>. Hozzáférés ideje: 2012-06-03 Archiválva 2021. november 18-i dátummal a Wayback Machine-ben
- Parr, Terence (December, 2009), Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages (1st ed.), Pragmatic Bookshelf, pp. 374, ISBN 978-1-934356-45-6, <http://www.pragprog.com/titles/tpdsl/language-implementation-patterns> Archiválva 2021. október 29-i dátummal a Wayback Machine-ben
További információk
[szerkesztés]- ANTLR honlap
- ANTLRWorks
- ANTLR Studio
- ANTLR For Delphi Target
- ANTLR tutorial Archiválva 2015. február 23-i dátummal a Wayback Machine-ben - University of Birmingham
- Az elméleti háttérről lásd az ANTLR honlapját, pl. T. J. Parr, R. W. Quong, ANTLR: A Predicated-LL(k) Parser Generator, Software—Practice and Experience, Vol. 25(7), 789–810 (July 1995)
Fordítás
[szerkesztés]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.