Newsgroup: it.comp.lang.c
Titolo: Parser

Quali sono le basi da sapere x costruire un parser di files???
Intendo tipo che se ho:
code:-----------------------------------------------------------------------
------- 
intero i;
se i è 0
fai
   questo
seno
   quello
----------------------------------------------------------------------------
--
Il parser(in linea di comando) me lo trasformi in :
code:-----------------------------------------------------------------------
-------
int i;
if (i == 0)
{
   // questo
}else{
   // quello
}
----------------------------------------------------------------------------
--
insomma un parser x linguaggi di scripting.
Tnk 20000000000

 insomma un parser x linguaggi di scripting.
Allora se' e' una banale traduzione la soluzione e' banale, altrimenti
quello che ti server non e' *solo* il parser....
Ci sono vari passaggi da fare e' non e' nemmeno facile. Ci sono dei tool a
diposizione per aiutarti a fare cio':
lex e yac ( e simili ).
Se ti interessa l'argomento di consiglio di documentarti su questi due
tools, sulla teoria alla base dei linguaggi programmazione ed in fine su di
un buon libro di programmazione compilatori (e non solo) quale il Dragon
Book!
E' una materia difficile, forse prima dovresti darmi piu' informazioni e
dirmi esattamente cosa vuoi fare.....
Tommy

volevo creare un mio linguaggetto tipo javascript per un mio prog.
Per estenderlo insomma :)

 
Scrivere un interprete e' una bella smazzata se non conosci la teoria 
che ci sta dietro almeno un po'. Se lo fai per tuo divertimento ed 
'allenamento' e' un conto, ma... perche' reinventare la ruota (cosa che 
a noi informatici piace tanto)? Prendi uno dei milioni di linguaggi di 
scripting embeddable gia' esistenti - tra cui implementazioni free di 
Javascript (tipo Rhino, se non ricordo male) o LUA (che e' veramente un 
bel linguaggino).
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

 Per estenderlo insomma :)
E' una cosa indubbiamente interessante, ma e' anche piuttosto complicata.
Ti puoi divertire pero' se vuoi....
Io posso solo un elenco di libri che ti possono servire; ti serve molta
teoria....
"Programming Language Pragmatics" by Scott
"Compilers Principles, Techniques and Tools" by Aho, Sethi, Ullman
"Modern Compiler Implementation in C" by Appel, Ginsburg
"lex & yacc2" by Levine, Mason, Brown
Per iniziare dovrebbe essere abbastanza....
Il primo libro ti da una buona infarinatura genereale di cosa sono compilers
ed interpreters, di che cosa realmente e' un linguaggio di programmazione.
Ti spiega inoltre quali sono le varie fasi per interpretare/compilare. Ti
spiega i vari tipi di linguaggi. Oltre tutto questo ti spiega in maniera
meno difficile e complicata quello che il Dragon Book ti insegna (il secondo
nella lista). Questo libro inoltre parla di linguaggi moderni e quindi e'
una valida lettura visto che dopo di questo, il Dragon (vecchio libro)
parlera' di linguaggi pascal-like.
Tuttavia dopo aver letto questo libro non sei preparato come se avessi letto
il Dragon, ma sono due libri diversi, questo e' molto piu' ampio e meno
approfondito, ma ti mette nell'ottica di capire meglio il Dragon.
Il Dragon e' un libro molto difficile, molto teorico e molto ben-scritto.
Non ho commenti da fare, se non avvisarti che e' un discreto mattone ma che
se studiato bene e' comprensibile. (ma non sottovalutarlo)
Il terzo libro e' il compagno ideale del Dragon, consiglio di studiarlo
insieme al secondo. Con questo libro puoi mettere in pratica quello che
studi.
Per finire un libro che ti spiega come utilizzare i due piu' famosi tool per
"creare" compilatori ed interpreti.
Dopo che hai fatto tutto questo, se vuoi scrivere qualche cosa di
minimamente valido devi leggerti almeno altri 5 libri piu' avanzati, questi,
pur non essendo facili, sono comunque solo libri introduttivi... Libri
avanzati ce ne sono parecchi ma non mi sembrava caso di perdere altro tempo
ad elencarteli. Molti rinunciano dopo qualche capitolo del Dragon!
Ecco, la conclusion e':
Se pensavi di divertirti facendo a tempo perso un interprete di linguaggio
senza troppo sforzo rinuncia. Se invece e' una cosa che desideri davvero
fare allora procedi pure. La strada e' lunga e tortuosa pero' ;-)
Tommy

 "lex & yacc2" by Levine, Mason, Brown
Per uno esempio banale come quello che avevi fatto questo libro
probabilmente basta e avanza.
Tommy