Parsing: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Collegamenti esterni: double links |
Modifico in base a linee guida vedi Wikipedia:Voci correlate |
||
(28 versioni intermedie di 21 utenti non mostrate) | |||
Riga 1:
Il programma che esegue questa analisi è detto '''analizzatore sintattico''' o '''''parser'''''. Di solito i parser non sono scritti a mano, ma realizzati attraverso dei [[generatore di parser|generatori di parser]].
==Descrizione==
Line 12 ⟶ 10:
L'esempio seguente mostra un caso comune di parsing di un linguaggio per un [[calcolatore]] (o calcolatrice) con due livelli di grammatica: lessicale e sintattica.
Come detto, il primo passo è la generazione di token, o [[
L'analisi sintattica propriamente detta riceve in input la sequenza dei token e controlla che i token formino espressioni valide. Questo lavoro è svolto basandosi su una grammatica libera dal contesto, che ricorsivamente definisce i componenti che determinano un'espressione e l'ordine in cui devono comparire.
Line 25 ⟶ 23:
* ''Analisi [[Parser bottom-up|bottom-up]]'' - un parser può partire con l'input e cercare di riscriverlo sino al simbolo iniziale. Intuitivamente, il parser cerca di trovare il più elementare simbolo, quindi elabora gli elementi che lo contengono, e così via. I [[parser LR]] sono esempi di parser bottom-up.
Un'altra importante distinzione è
=== Linguaggi di programmazione ===
Line 33 ⟶ 31:
In realtà, le grammatiche libere dal contesto non riescono a descrivere da sole la maggior parte dei linguaggi di programmazione di uso comune. Informalmente, la ragione è che la memoria di ogni linguaggio è limitata; la grammatica non può ricordare la presenza di un costrutto dopo un'arbitraria lunghezza in input, è necessario per esempio in quei linguaggi dove i nomi possono essere referenziati.
Usare grammatiche più potenti, quali quelle [[grammatica dipendente dal contesto|grammatiche dipendenti dal contesto]], tuttavia, vuol dire perdere in efficienza. Di conseguenza è una strategia comune quella di utilizzare grammatiche libere dal contesto per una versione "rilassata" (con minori vincoli) del linguaggio.
== Bibliografia ==
* {{FOLDOC}}
* ''Compilers: Principles,
* ''Linguaggi Formali e Compilazione''. Crespi Reghizzi. [[Pitagora Editrice]], 2006. ISBN 978-8837116323
== Voci correlate ==
* [[Augmented transition network]]
* [[Parser LR]]
* [[ANTLR]]
* [[GNU Bison]]
Line 62 ⟶ 48:
* [[JavaCC]]
* [[Yacc]]
== Altri progetti ==
{{interprogetto|preposizione=sul}}
== Collegamenti esterni ==
Line 69 ⟶ 56:
* [http://www.MHGSoft.de?Parser TFunctionParser] Un parser matematico esauriente (più di 90 funzioni e operazioni)
* [http://www.ucalc.com/mathparser UCalc Fast Math Parser] Un parser di espressioni, commerciale
* [
* [http://www.cs.vu.nl/~dick/PTAPG.html Parsing Techniques - A Practical Guide] by Dick Grune and Ceriel J.H. Jacobs.
* {{collegamento interrotto|1=[http://www.guidealgoritmi.it/ShowArticle.aspx?ID=3 Operator Precedence Parsing] |data=marzo 2018 |bot=InternetArchiveBot }} Un parser di espressioni matematiche, open source, in linguaggio C
* [http://www.tule.di.unito.it/ Turin University Parser] Parser del linguaggio naturale, italiano, open source, in linguaggio Common Lisp (di Leonardo Lesmo, Università di Torino)
* [http://nlp.stanford.edu/software/lex-parser.shtml Stanford Parser] Parser di Stanford
Line 77 ⟶ 64:
{{Portale|informatica}}
[[Categoria:
|