Generator de analizori

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Un generator de parser (în engleză parser generator, uneori numit și compilator-compilator) este un instrument pentru generarea codului sursă al unui parser , un interpret sau un compilator din descrierea dată de un limbaj adnotat sub formă de gramatică, în general BNF , împreună cu un anumit cod asociat cu fiecare dintre regulile gramaticale, cod care trebuie executat de fiecare dată când regula este aplicată de către analizor. Aceste bucăți de cod sunt adesea numite funcții de acțiune semantică , deoarece definesc semantica structurii sintactice analizate de analizor. În funcție de tipul parserului generat, aceste funcții pot construi un arbore de sintaxă concret sau abstract sau pot genera cod în altă limbă, uneori cod direct executabil.

Istorie

Primul generator de parser care a folosit acest nume a fost scris de Tony Brooker în 1960 și a fost folosit pentru a crea compilatoare pentru computerele Atlas de la Universitatea din Manchester , inclusiv compilatorul Atlas Autocode . Cu toate acestea, generatorul a fost ușor diferit de generatoarele moderne și astăzi ar fi probabil considerat undeva între un compilator extrem de configurabil și un limbaj extensibil sintactic.

Alte exemple de generatoare de analize de tip yacc sunt Coco / R , CUP , GNU bison , Eli, FSL, META 5, MUG2, Pătrunjel , Pre-cc , SableCC , JavaCC și MixedCC .

Tipuri de generatoare de parser

Candidați (incomplet)

Produs Tip Limbi de ieșire Gramatică și cod Analizor lexical Platformă Licență
Anagramă LALR ANSI C, C ++ ? ? Win32 Comercial
ACCENT GLR C. Amestecat ? ? Open source (GPL)
ANTLR LL (k) C ++, C #, Java, Python Amestecat Generat Toate (Java) Open source (BSD)
Castor LALR Java Amestecat Extern Toate (Java) Open source (BSD)
Bizoni LALR C. Amestecat Extern ( flex ) Unix, Win32 Open source (GPL)
BYACC LALR C. Amestecat Extern Unix, Win32 Domeniu public
BYACC / J LALR C, Java Amestecat Extern (JFlex) Irix, Linux, Solaris, Win32 Domeniu public
Coco / R LL (k) C ++, C #, Java Amestecat Generat ? Open source (GPL)
CppCC LL (k) C ++ ? ? ? Open source (GPL)
CEAȘCĂ LALR Java Amestecat Extern (JLex) Toate (Java) Open source (GPL)
Elkhound GLR C ++, Ocaml ? ? ? Open source (BSD)
AUR LALR ANSI C, C #, Delphi, Java, Python, Visual Basic, Visual C ++ ? ? Win32 Open source (zlib / libpng)
Gramatică LL (k) C #, Java Separa Generat Toate (Java) Open source (LGPL)
jacc LALR Java Amestecat ? Toate (Java) Open source (BSD)
JavaCC LL (k) Java ? Generat ? ?
jay LALR Java ? ? Unix ?
LĂMÂIE LALR ? ? ? ? ?
LRgen LALR C ++, Orice (rescrierea modelului) Separa Generat Win32 Comercial
Obiecte Parser LL (k) Java Amestecat ? Toate (Java) Open source (ZLib / LibPNG)
ANTERIOR LL (k) ? ? ? Dos, Unix ?
SableCC LALR Java (și, cu motorul "altgen", Python, C ++, OCAML etc.) Separa Generat Toate (Java) Open source (LGPL)
[ https://web.archive.org/web/20090221213519/http://members.cox.net/slkpg/ [ link rupt ] SLK] LL (k) C, C ++, C #, Java ? ? ? ?
Spirit LL (k) C ++ Amestecat ? - Open source (Boost)
YooParse LR C ++ ? Extern (YooLex) ? Open source (MIT)
[ http://www.horion.it/download.php [ link rupt ] HLang] [ link rupt ] LL (k) timp de rulare interpretat Separa Intern sau extern Toate Open source (GPL)

Elemente conexe

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT