ANTLR - ANTLR - Wikipedia
![]() | tento článek potřebuje další citace pro ověření.Březen 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Původní autoři | Terence Parr a další |
---|---|
První vydání | Února 1992 |
Stabilní uvolnění | 4.8 / 16. ledna 2020 |
Úložiště | ![]() |
Napsáno | Jáva |
Plošina | Cross-platform |
Licence | Licence BSD |
webová stránka | www |
V počítačovém rozpoznávání jazyka ANTLR (výrazný paroh ), nebo JINÝ nástroj pro rozpoznávání jazyků, je generátor analyzátoru který používá LL (*) pro analýzu. ANTLR je nástupcem Sada nástrojů Purdue Compiler Construction Tool Set (PCCTS), který byl poprvé vyvinut v roce 1989 a je v aktivním vývoji. Jeho správcem je profesor Terence Parr z University of San Francisco.[Citace je zapotřebí ]
Používání
ANTLR bere jako vstup a gramatika který určuje jazyk a generuje se jako výstup zdrojový kód pro rozpoznávač toho jazyka. Zatímco verze 3 podporovala generování kódu v programovací jazyky Ada95, ActionScript, C, C#, Jáva, JavaScript, Cíl-C, Perl, Krajta, Rubín, a Standardní ML,[1] aktuální vydání v současné době cílí pouze na Java, C #, C ++,[2] JavaScript, Python, Rychlý, a Jít. Jazyk je určen pomocí a bezkontextová gramatika vyjádřeno pomocí Rozšířená forma Backus – Naur (EBNF).[Citace je zapotřebí ]
ANTLR může generovat lexers, analyzátory, analyzátory stromů a kombinovat analyzátory lexerů. Analyzátory mohou automaticky generovat analyzovat stromy nebo abstraktní syntaxové stromy, které lze dále zpracovat analyzátory stromů. ANTLR poskytuje jedinou konzistentní notaci pro specifikaci lexerů, analyzátorů a analyzátorů stromů.
Ve výchozím nastavení ANTLR čte gramatiku a generuje rozpoznávač pro jazyk definovaný gramatikou (tj. Program, který čte vstupní proud a generuje chybu, pokud vstupní proud neodpovídá syntaxi určené gramatikou). Pokud neexistují žádné chyby syntaxe, výchozí akcí je jednoduše ukončit bez tisku jakékoli zprávy. Aby bylo možné s jazykem udělat něco užitečného, lze k gramatickým prvkům v gramatice připojit akce. Tyto akce jsou psány v programovacím jazyce, ve kterém je generován rozpoznávač. Při generování rozpoznávače jsou akce vloženy do zdrojového kódu rozpoznávače v příslušných bodech. Akce lze použít k sestavení a kontrole tabulek symbolů a k vydávání pokynů v cílovém jazyce, v případě kompilátoru.[Citace je zapotřebí ]
Kromě lexerů a analyzátorů lze ke generování analyzátorů stromů použít ANTLR. Jedná se o rozpoznávače, které zpracovávají abstraktní syntaxe stromů, které lze automaticky generovat analyzátory. Tyto analyzátory stromů jsou jedinečné pro ANTLR a pomáhají zpracovávat abstraktní syntaxe stromů.[Citace je zapotřebí ]
Licencování
ANTLR 3[Citace je zapotřebí ] a ANTLR 4 jsou svobodný software, publikovaný pod tříčlennou klauzulí Licence BSD.[3] Předchozí verze byly vydány jako software pro veřejné domény.[4] Dokumentace odvozená z Parrovy knihy Definitivní reference ANTLR 4, je součástí zdroje ANTLR 4 s licencí BSD.[3][5]
Pro Eclipse vývojové prostředí podporovat gramatiku ANTLR, včetně Studio ANTLR, a proprietární produkt, stejně jako „ANTLR 2“[6] a „ANTLR 3“[7] pluginy pro Eclipse hostované na SourceForge.[Citace je zapotřebí ]
ANTLR 4
ANTLR 4 se zabývá přímým rekurze doleva správně, ale ne s levou rekurzí obecně, tj. gramatická pravidla X které odkazují na y které odkazují na X.[8]
Rozvoj
Jak je uvedeno na nástrojích[9] stránka projektu ANTLR, moduly plug-in, které umožňují funkce jako zvýraznění syntaxe, kontrola chyb syntaxe a doplnění kódu, jsou volně dostupné pro nejběžnější IDE (Intellij NÁPAD, NetBeans, Zatmění, Vizuální studio[10] a Kód sady Visual Studio ).
Projekty
Zde je nekomplexní seznam softwaru vytvořeného pomocí ANTLR:
- Báječný.[11]
- Jython.[12]
- Přezimovat[13]
- Experimentální verze projektu OpenJDK Compiler Grammar javac překladač založený na gramatice napsané v ANTLR.[14]
- Vrchol, Salesforce.com programovací jazyk.[Citace je zapotřebí ]
- Vyhodnocovač výrazů v Čísla, Tabulka společnosti Apple.[Citace je zapotřebí ]
- Cvrlikání jazyk vyhledávacího dotazu.[Citace je zapotřebí ]
- Weblogic server.[Citace je zapotřebí ]
- Apache Cassandra.[Citace je zapotřebí ]
- zpracovává se.[Citace je zapotřebí ]
- JabRef.[Citace je zapotřebí ]
- Presto (SQL dotazovací stroj)
- MySQL Workbench
Více než 200 gramatik implementovaných v ANTLR 4 je k dispozici na Github.[15] Pohybují se od gramatiky po a URL k gramatikám pro celé jazyky jako C, Java a Go.
Příklad
V následujícím příkladu analyzátor v ANTLR popisuje součet výrazů, které lze vidět ve formě „1 + 2 + 3“:
// Běžné možnosti, například cílový jazykmožnosti{Jazyk="CSharp";}// Následuje parser třídaSumParserrozšiřujeAnalyzátor;možnosti{k=1;// Parser Lookahead: 1 Token}// Definice výrazutvrzení:CELÉ ČÍSLO(PLUS^CELÉ ČÍSLO)*;// Tady je LexertřídaSumLexerrozšiřujeLexer;možnosti{k=1;// Lexer Lookahead: 1 znaků}PLUS:'+';ČÍSLICE:('0'..'9');CELÉ ČÍSLO:(ČÍSLICE)+;
Následující seznam ukazuje volání syntaktického analyzátoru v programu:
Čtečka textu čtenář; // (...) Vyplňte TextReader znakem SumLexer lexer = Nový SumLexer(čtenář); SumParser analyzátor = Nový SumParser(lexer); analyzátor.tvrzení();
Viz také
- Coco / R
- Sada nástrojů pro reengineering softwaru DMS
- JavaCC
- Formální definice definice modulární syntaxe
- Předvařená (Java)
- Analýza gramatiky výrazu
- SableCC
Reference
- ^ Nástroje pro zpracování jazyka SML / NJ: Uživatelská příručka
- ^ https://soft-gems.net/the-antlr4-c-runtime-reached-home
- ^ A b „antlr4 / LICENSE.txt“. GitHub. 2017-03-30.
- ^ Parr, Terence (02.02.2004). "licenční věci". antrr úrok (Poštovní seznam). Archivovány od originál dne 18.7.2011. Citováno 2009-12-15.
- ^ „Dokumentace ANTLR 4“. GitHub. 2017-03-30.
- ^ http://antlreclipse.sourceforge.net
- ^ http://antlrv3ide.sourceforge.net
- ^ Jaký je rozdíl mezi ANTLR 3 a 4
- ^ http://www.antlr.org/tools.html
- ^ https://marketplace.visualstudio.com/items?itemName=SamHarwell.ANTLRLanguageSupport
- ^ http://docs.groovy-lang.org/2.4.0/html/api/org/codehaus/groovy/antlr/parser/GroovyRecognizer.html
- ^ https://hg.python.org/jython/rev/31d97f0de5fe
- ^ Ebersole, Steve (06.12.2018). „Byl spuštěn režim hibernace ORM 6.0.0.Alpha1“. V relaci Komu tým týmu Hibernate bloguje o všech datech. Citováno 2020-07-11.
- ^ https://openjdk.java.net/projects/compiler-grammar/
- ^ Gramatiky psané pro ANTLR v4; očekávání, že gramatiky jsou bez akcí: antlr / grammars-v4, Antlr Project, 2019-09-25, vyvoláno 2019-09-25
Bibliografie
- Parr, Terence (17. května 2007), The Definitive Antlr Reference: Building Domain-specific languages (1. vyd.), Pragmatická knihovna, str. 376, ISBN 978-0-9787392-5-6
- Parr, Terence (prosinec 2009), Vzory implementace jazyků: Vytvořte si vlastní doménové a obecné programovací jazyky (1. vyd.), Pragmatická knihovna, str. 374, ISBN 978-1-934356-45-6
- Parr, Terence (15. ledna 2013), Definitivní reference ANTLR 4 (1. vyd.), Pragmatická knihovna, str. 328, ISBN 978-1-93435-699-9
Další čtení
- Parr, T. J.; Quong, R.W. (červenec 1995). "ANTLR: Generátor syntaktického analyzátoru LL (k)". Software: Praxe a zkušenosti. 25 (7): 789–810. CiteSeerX 10.1.1.54.6015. doi:10.1002 / spe. 4380250705.