Generatore di parser

Voce da controllare
Questa voce o sezione sull'argomento informatica è ritenuta da controllare.
Motivo: Lista dichiarata incompleta e con molti collegamenti esterni
Questa voce è da wikificare
Questa voce o sezione sull'argomento informatica non è ancora formattata secondo gli standard.
Commento: Spostare collegamenti esterni dal corpo della voce e creare a.

Un generatore di parser (in inglese parser generator, a volte anche chiamato compiler-compiler) è uno strumento per la generazione del codice sorgente di un parser, un interprete o un compilatore a partire dalla descrizione data da un linguaggio annotato nella forma di grammatica, generalmente BNF, insieme a del codice associato ad ognuna delle regole della grammatica, codice che deve essere eseguito ogni volta che la regola è applicata dal parser. Questi pezzi di codice sono spesso chiamati funzioni di azioni semantiche poiché definiscono la semantica della struttura sintattica analizzata dal parser. A seconda del tipo di parser generato, queste funzioni possono costruire un albero sintattico concreto o astratto oppure possono generare del codice in un altro linguaggio, talvolta direttamente codice eseguibile.

Storia

Il primo generatore di parser che ha usato questo nome fu scritto da Tony Brooker nel 1960 ed era usato per creare i compilatori per i computer Atlas presso l'Università di Manchester, includendo il compilatore Atlas Autocode. Tuttavia il generatore era leggermente differente dai moderni generatori, e oggi probabilmente sarebbe considerato una via di mezzo tra un compilatore altamente configurabile e un linguaggio sintatticamente estensibile.

Altri esempi di generatori di parser simili allo yacc sono Coco/R, CUP, GNU bison, Eli, FSL, META 5, MUG2, Parsley, Pre-cc, SableCC, JavaCC e MixedCC.

Tipi di generatori di parser

Candidati (incompleto)

Prodotto Tipo Linguaggi di output Grammatica e codice Analizzatore lessicale Piattaforma Licenza
AnaGram LALR ANSI C, C++ ? ? Win32 Commerciale
ACCENT Archiviato il 16 maggio 2010 in Internet Archive. GLR C Misti ? ? Open source (GPL)
ANTLR LL(k) C++, C#, Java, Python Misti Generato Tutte (Java) Open source (BSD)
Beaver LALR Java Misti Esterno Tutte (Java) Open source (BSD)
Bison LALR C Misti Esterno (flex) Unix, Win32 Open source (GPL)
BYACC LALR C Misti Esterno Unix, Win32 Dominio pubblico
BYACC/J LALR C, Java Misti Esterno (JFlex) Irix, Linux, Solaris, Win32 Dominio pubblico
Coco/R LL(k) C++, C#, Java Misti Generato ? Open source (GPL)
CppCC LL(k) C++ ? ? ? Open source (GPL)
CUP LALR Java Misti Esterno (JLex) Tutte (Java) Open source (GPL)
Elkhound GLR C++, Ocaml ? ? ? Open source (BSD)
GOLD Archiviato il 2 novembre 2008 in Internet Archive. LALR ANSI C, C#, Delphi, Java, Python, Visual Basic, Visual C++ ? ? Win32 Open source (zlib/libpng)
Grammatica LL(k) C#, Java Separati Generato Tutte (Java) Open source (LGPL)
jacc LALR Java Misti ? Tutte (Java) Open source (BSD)
JavaCC LL(k) Java ? Generato ? ?
jay LALR Java ? ? Unix ?
LEMON LALR ? ? ? ? ?
LRgen LALR C++, Qualsiasi (riscrivendo il modello) Separati Generato Win32 Commerciale
Parser Objects LL(k) Java Misti ? Tutte (Java) Open source (ZLib/LibPNG)
PRECC LL(k) ? ? ? Dos, Unix ?
SableCC LALR Java (e, col motore "altgen", Python, C++, OCAML, ecc.) Separati Generato Tutte (Java) Open source (LGPL)
[https://web.archive.org/web/20090221213519/http://members.cox.net/slkpg/[collegamento interrotto] SLK] LL(k) C, C++, C#, Java ? ? ? ?
Spirit LL(k) C++ Misti ?  - Open source (Boost)
YooParse LR C++ ? Esterno (YooLex) ? Open source (MIT)
[http://www.horion.it/download.php[collegamento interrotto] HLang][collegamento interrotto] LL(k) interpretato run-time Separati Interno o esterno Tutte Open source (GPL)

Voci correlate

  • GNU Bison
  • Yacc
  • ANTLR

Collegamenti esterni

  • (EN) Parser generator, in Free On-line Dictionary of Computing, Denis Howe. Disponibile con licenza GFDL
  • Brooker Autocodes, su computer50.org. URL consultato il 1º ottobre 2005 (archiviato dall'url originale il 31 ottobre 2004).
  • Corso di linguaggi e traduttori in jflex/cup, su skenz.it.
  • Programmi eseguiti con jflex/cup o con flex/bison, su skenz.it. URL consultato il 18 febbraio 2008 (archiviato dall'url originale il 18 aprile 2021).
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica