ANTLR
ANTLR (din engleză. ANother Tool for Language Recognition - „un alt instrument de recunoaștere a limbii”) este un generator de analizoare de sus în jos pentru limbi formale. ANTLR convertește o gramatică fără context sub formă de RBNF într-un program în C++ , Java , C# , JavaScript , Go , Swift , Python [1] . Folosit pentru a dezvolta compilatoare , interpreți și traducători .
Beneficii
- Software liber .
- Folosind o singură notație pentru a descrie lexicale și analizatorii.
- Aplicarea analizei de sus în jos și nu de jos în sus.
- Comoditatea lucrului cu un arbore de sintaxă abstractă .
- Furnizarea de mesaje de eroare și recuperarea de la acestea.
- Prezența unor medii de dezvoltare vizuală (ANTLR Works, ANTLR Studio, plug-in-uri pentru Eclipse și IntelliJ IDEA ), care vă permit să creați și să depanați gramatici, să susțină evidențierea sintaxei, completarea automată , afișarea vizuală a gramaticilor, construită în timp real ca tastați, depanați , refactorizați .
Aplicație
ANTLR este utilizat pe scară largă în produsele cunoscute mari:
Scurtă referire la elementele de limbă
(...) corectat
(...)* repetați ajustat de 0 sau de mai multe ori
(...)+ Repetați subregula de 1 sau de mai multe ori
(...)? corectat, poate lipsi
{...} acțiuni semantice (în limbajul de ieșire - de exemplu, Java)
[...] parametrii regulii
| operator alternativ
.. operator de rază
~ negare
. orice personaj
= sarcina
: marcatorul începutului regulii
; marcator de sfârşit al regulii
Un exemplu de gramatică simplă
gramatica T ; //numele gramaticii, trebuie să se potrivească cu numele fișierului
// simboluri non-terminale:
msg : „nume” ID „;” {
System.out.println("Bună ziua, "+ $ID .text + "!");
} ;
//simboluri terminale
ID : 'a' .. 'z' + ; //număr arbitrar (dar >=1) de litere
WS : ( ' ' | '\n' | '\r' )+ { $canal =HIDDEN; } ; // spațiu, întrerupere de linie, tab
Vezi și
Note
- ↑ Tabelul limbilor acceptate (downlink) . Consultat la 15 iunie 2018. Arhivat din original la 29 iulie 2018. (nedefinit)
Literatură
- The Definitive ANTLR Reference: Building Domain-Specific Languages , ISBN 978-0-9787392-5-6 de Terence Parr. Raft pragmatic, 2007
Link -uri