Scanner e parser con flex + LLgen o LLnextgen
- Fra_221187
- Prode Principiante
- Messaggi: 190
- Iscrizione: martedì 10 gennaio 2006, 19:56
- Località: Foggia
- Contatti:
Scanner e parser con flex + LLgen o LLnextgen
Ciao a tutti, ho un'esercitazione da fare per l'università: realizzare uno scanner e un parser per un linguaggio inventato tramite gli strumenti flex e LLgen o LLnextgen. Ovviamente non vi chiedo di svolgerlo ma di indicarmi, se ne conoscete, del materiale utile allo scopo.
Vi ringrazio anticipatamente, Francesco
Vi ringrazio anticipatamente, Francesco
Ultima modifica di Fra_221187 il venerdì 1 giugno 2007, 18:52, modificato 1 volta in totale.
Ubuntu 7.10 on Macbook
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
- Fra_221187
- Prode Principiante
- Messaggi: 190
- Iscrizione: martedì 10 gennaio 2006, 19:56
- Località: Foggia
- Contatti:
Re: Scanner e parser con flex + LLgen o LLnextgen
Ovviamente quel materiale l'avevo già trovato... solamente mi sarebbe stato utile un esempio pratico anche molto semplice per capire come far interagire i due strumenti!
Ubuntu 7.10 on Macbook
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
- Fra_221187
- Prode Principiante
- Messaggi: 190
- Iscrizione: martedì 10 gennaio 2006, 19:56
- Località: Foggia
- Contatti:
Re: Scanner e parser con flex + LLgen o LLnextgen
up
Ubuntu 7.10 on Macbook
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
- Fra_221187
- Prode Principiante
- Messaggi: 190
- Iscrizione: martedì 10 gennaio 2006, 19:56
- Località: Foggia
- Contatti:
Re: Scanner e parser con flex + LLgen o LLnextgen
Visto che non ricevo risposte pongo una domanda più precisa per cominciare a capirci qualcosa di più:
Io creo il mio file "linguaggio.lex" così strutturato
dopodiché creo il codice sorgente tramite il comando "flex linguaggio.lex" che poi compilo tramite "gcc lex.yy.c -ll". A questo punto come utilizzo l'eseguibile ottenuto? O provato a passare il nome di un file di testo da usare come input come argomento per l'eseguibile generato ma ottengo il messaggio "input.txt: ASCII text".
Come devo comportarmi?
Francesco
Io creo il mio file "linguaggio.lex" così strutturato
Codice: Seleziona tutto
%%
espressione_regolare printf("nome_token\n");
%%
main()
{
yylex();
}
Come devo comportarmi?
Francesco
Ubuntu 7.10 on Macbook
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
Re: Scanner e parser con flex + LLgen o LLnextgen
Anche io ho lo stesso problema. Mi spiego.... Ho creato il mio bel programmino lex:
%{
#include
#include
%}
%%
[0-9]*"?"[a-z]
%%
Poi mi piacerebbe sapere se funziona.
1) flex nomefile.l
fin qui tutto bene.
In teoria la successiva istruzione dovrebbe essere:
2) gcc lex.yy.c -ll -o out
e l'ultima:
3) ./out "fornire il LESSEMA"
eppure al passo 2 mi da un sacco di errori? HELP ME.......
Grazie
%{
#include
#include
%}
%%
[0-9]*"?"[a-z]
%%
Poi mi piacerebbe sapere se funziona.
1) flex nomefile.l
fin qui tutto bene.
In teoria la successiva istruzione dovrebbe essere:
2) gcc lex.yy.c -ll -o out
e l'ultima:
3) ./out "fornire il LESSEMA"
eppure al passo 2 mi da un sacco di errori? HELP ME.......
Grazie
- Fra_221187
- Prode Principiante
- Messaggi: 190
- Iscrizione: martedì 10 gennaio 2006, 19:56
- Località: Foggia
- Contatti:
Re: Scanner e parser con flex + LLgen o LLnextgen
Io ho risolto indicando nel main quale input leggere:
Ora però ho un altro problema: dichiaro le seguenti regole
Ma non mi riconosce correttamente le stringhe formate da lettere e cifre... a volte taglia fuori la prima o l'ultima lettera mentre altre volte ancora "taglia" in due delle parole e riconosce quindi due identificatori. Sbaglio qualcosa nella dichiarazione?
Codice: Seleziona tutto
main()
{
yyin = fopen("input.txt", "r");
yylex();
}
Codice: Seleziona tutto
lettera [a-zA-Z]
cifra [0-9]
%%
[{lettera}|{cifra}]* printf("IDENTIFICATORE\n");
%%
...
Ubuntu 7.10 on Macbook
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
Re: Scanner e parser con flex + LLgen o LLnextgen
Potresti dirmi il testo dell'esercizio? per curiosità stai preparando l'esame di Compilatori? presso quale università? (b2b)
Adesso provo come dici tu....
io conosco i comandi per mandrake ma di ubuntu niente da fare....
istruzioni mandrake LEX:
flex nomefile.l
cc lex.yy.c -lfl -o out
./out ["Fornire il lessema"]
Adesso provo come dici tu....
io conosco i comandi per mandrake ma di ubuntu niente da fare....
istruzioni mandrake LEX:
flex nomefile.l
cc lex.yy.c -lfl -o out
./out ["Fornire il lessema"]
- Fra_221187
- Prode Principiante
- Messaggi: 190
- Iscrizione: martedì 10 gennaio 2006, 19:56
- Località: Foggia
- Contatti:
Re: Scanner e parser con flex + LLgen o LLnextgen
L'esercizio consiste nello scrivere uno scanner (con flex) e un parser (con llgen o llnextgen) per un linguaggio di fantasia. Sto preparando l'esame per il corso di linguaggi di programmazione all'università di Bari
Ubuntu 7.10 on Macbook
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
Ubuntu 7.10 sul tuo Macbook? Clicca qui!
Chi c’è in linea
Visualizzano questa sezione: Google [Bot] e 2 ospiti
