Generatore di parser: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Botcrux (discussione | contributi)
m Bot: fix sezioni standard
m Voci correlate: Corretto wikilink
 
(16 versioni intermedie di 10 utenti non mostrate)
Riga 1:
{{C|Lista dichiarata incompleta e con molti collegamenti esterni|informatica|ottobre 2010}}
{{W|informatica|dicembre 2015|Spostare collegamenti esterni dal corpo della voce e creare wikilink.}}
Un '''generatore di parser''' (in inglese {{Inglese|'''parser generator'''}}, a volte anche chiamato '''compiler-compiler''') è uno strumento per la generazione del [[codice sorgente]] di un [[parsing|parser]], un interprete o un [[compilatore]] a partire dalla descrizione data da un linguaggio annotato nella forma di grammatica, generalmente [[Backus-Naur Form|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 [[semantica|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'' [[parse tree|concreto]] o [[Albero sintattico astratto|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 Computer (Manchestercomputer)|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. <!--
The name 'compiler compiler' was far more appropriate for Brooker's system than it is for most modern compiler compilers, which are more accurately described as mere parser generators. It is almost certain that the Compiler Compiler name has entered common use due to [[Yacc]] rather than Brooker's work being remembered. -->
 
Riga 13:
 
== Candidati (incompleto) ==
{| class="wikitable sortable" border="0" cellpadding="4" cellspacing="2"
|-
|- bgcolor="#E0E0E0"
!Prodotto
| '''Prodotto''' || '''Tipo''' || '''Linguaggi di output''' || '''Grammatica e codice''' || '''Analizzatore lessicale''' || '''Piattaforma''' || '''Licenza'''
!Tipo
|- bgcolor="#F8F8F8"
!Linguaggi di output
!Grammatica e codice
!Analizzatore lessicale
!Piattaforma
!Licenza
|-
| [http://www.parsifalsoft.com/ AnaGram] || LALR || ANSI C, C++ || ? || ? || Win32 || Commerciale
|-
|- bgcolor="#F0F0F0"
| [http://accent.compilertools.net/ ACCENT] {{Webarchive|url=https://web.archive.org/web/20100516004220/http://accent.compilertools.net/ |date=16 maggio 2010 }} || GLR || C || Misti || ? || ? || Open source (GPL)
|-
|- bgcolor="#F8F8F8"
| [http://www.antlr.org/ ANTLR] || LL(k) || C++, C#, Java, Python || Misti || Generato || Tutte (Java) || Open source (BSD)
|-
|- bgcolor="#F0F0F0"
| [http://beaver.sourceforge.net/ Beaver] || LALR || Java || Misti || Esterno || Tutte (Java) || Open source (BSD)
|-
|- bgcolor="#F8F8F8"
| [httphttps://www.gnu.org/software/bison/bison.html Bison] || LALR || C || Misti || Esterno ([[flex (software)|flex]]) || Unix, Win32 || Open source (GPL)
|-
|- bgcolor="#F0F0F0"
| [http://gnuwin32.sourceforge.net/packages/byacc.htm BYACC] || LALR || C || Misti || Esterno || Unix, Win32 || Dominio pubblico
|-
|- bgcolor="#F8F8F8"
| [http://byaccj.sourceforge.net/ BYACC/J] || LALR || C, Java || Misti || Esterno (JFlex) || Irix, Linux, Solaris, Win32 || Dominio pubblico
|-
|- bgcolor="#F0F0F0"
| [http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/ Coco/R] || LL(k) || C++, C#, Java || Misti || Generato || ? || Open source (GPL)
|-
|- bgcolor="#F8F8F8"
| [http://cppcc.sourceforge.net/ CppCC] || LL(k) || C++ || ? || ? || ? || Open source (GPL)
|-
|- bgcolor="#F0F0F0"
| [http://www2.cs.tum.edu/projects/cup/ CUP] || LALR || Java || Misti || Esterno (JLex) || Tutte (Java) || Open source (GPL)
|-
|- bgcolor="#F8F8F8"
| [httphttps://www.cs.berkeley.edu/~smcpeak/elkhound/ Elkhound] || GLR || C++, Ocaml || ? || ? || ? || Open source (BSD)
|-
|- bgcolor="#F0F0F0"
| [http://www.devincook.com/goldparser/ GOLD] {{Webarchive|url=https://web.archive.org/web/20081102044313/http://www.devincook.com/goldparser/ |date=2 novembre 2008 }} || LALR || ANSI C, C#, Delphi, Java, Python, Visual Basic, Visual C++ || ? || ? || Win32 || Open source (zlib/libpng)
|-
|- bgcolor="#F8F8F8"
| [http://grammatica.percederberg.net/ Grammatica] || LL(k) || C#, Java || Separati || Generato || Tutte (Java) || Open source (LGPL)
|-
|- bgcolor="#F0F0F0"
| [https://web.archive.org/web/20050901173442/http://www.cse.ogi.edu/~mpj/jacc/ jacc] || LALR || Java || Misti || ? || Tutte (Java) || Open source (BSD)
|-
|- bgcolor="#F8F8F8"
| [https://web.archive.org/web/20080924103934/https://javacc.dev.java.net/ JavaCC] || LL(k) || Java || ? || Generato || ? || ?
|-
|- bgcolor="#F0F0F0"
| [http://www.informatik.uni-osnabrueck.de/alumni/bernd/jay/ jay] || LALR || Java || ? || ? || Unix || ?
|-
|- bgcolor="#F8F8F8"
| [http://www.hwaci.com/sw/lemon/ LEMON] || LALR || ? || ? || ? || ? || ?
|-
|- bgcolor="#F0F0F0"
| [http://www.parsetec.com/lrgen/ LRgen] || LALR || C++, Qualsiasi (riscrivendo il modello) || Separati || Generato || Win32 || Commerciale
|-
|- bgcolor="#F8F8F8"
| [http://pobs.sf.net/ Parser Objects] || LL(k) || Java || Misti || ? || Tutte (Java) || Open source (ZLib/LibPNG)
|-
|- bgcolor="#F0F0F0"
| [https://web.archive.org/web/20051028141233/http://vl.fmnet.info/precc/ PRECC] || LL(k) || ? || ? || ? || Dos, Unix || ?
|-
|- bgcolor="#F8F8F8"
| [http://sablecc.org/ SableCC] || LALR || Java (e, col motore "altgen", Python, C++, OCAML, etcecc.) || Separati || Generato || Tutte (Java) || Open source (LGPL)
|-
|- bgcolor="#F0F0F0"
| [{{collegamento interrotto|1=https://web.archive.org/web/20090221213519/http://members.cox.net/slkpg/ |data=marzo 2018 |bot=InternetArchiveBot }} SLK] || LL(k) || C, C++, C#, Java || ? || ? || ? || ?
|-
|- bgcolor="#F8F8F8"
| [http://spirit.sourceforge.net/ Spirit] || LL(k) || C++ || Misti || ? || &nbsp;- || Open source (Boost)
|-
|- bgcolor="#F0F0F0"
| [http://yooparse.sourceforge.net/ YooParse] || LR || C++ || ? || Esterno (YooLex) || ? || Open source (MIT)
|-
|- bgcolor="#F8F8F8"
| {{Collegamento interrotto|1=[{{collegamento interrotto|1=http://www.horion.it/download.php |data=marzo 2018 |bot=InternetArchiveBot }} HLang] |data=aprile 2019 |bot=InternetArchiveBot }} || LL(k) || interpretato run-time || Separati || Interno o esterno || Tutte || Open source (GPL)
|}
 
== Bibliografia ==
*{{FOLDOC}}
 
== Voci correlate ==
* [[GNU bisonBison]]
* [[Yacc]]
* [[ANTLR]]
 
== Collegamenti esterni ==
*{{FOLDOC|parser%2bgenerator|Parser generator}}
*{{cita web|http://www.computer50.org/mark1/gethomas/manchester_autocodes.html|Brooker Autocodes}}
*{{cita web |1=http://www.computer50.org/mark1/gethomas/manchester_autocodes.html |2=Brooker Autocodes |accesso=1º ottobre 2005 |urlarchivio=https://web.archive.org/web/20041031031946/http://www.computer50.org/mark1/gethomas/manchester_autocodes.html |dataarchivio=31 ottobre 2004 |urlmorto=sì }}
*{{cita web|http://www.skenz.it/traduttori/|Corso di linguaggi e traduttori in jflex/cup}}
*{{cita web | 1 = http://www.skenz.it/traduttori/tesine | 2 = Programmi eseguiti con jflex/cup o con flex/bison | accesso = 18 febbraio 2008 | dataarchivio = 18 aprile 2021 | urlarchivio = https://web.archive.org/web/20210418224906/https://www.skenz.it/traduttori/tesine/ | urlmorto = sì }}
 
{{portale|informatica}}
 
[[Categoria:Software di sistema]]