Corso di Linguaggi e Traduttori

Compilare ed avviare un programma JFlex


Home > Compilare ed avviare un programma JFlex :: Forum

Compilare ed avviare un programma JFlex

File usati: standalone.jflex, esempio.txt
Il programma JFlex permette una compilazione sia da linea di comando che con interfaccia grafica. In generale per comodita' si usa l'interfaccia grafica.
Come programma di esempio e' stato proposto un programma che analizzando uno o piu' file di ingresso legge la parola dopo la keyword nome e sostituite tutte le occorrenze nel testo della parola "ciao" con la stringa "ciao !

/*
Questo e' un piccolo esempio di uno scanner di tipo standalone.
Viene letta la parola dopo la keyword nome e vengono sostituite nel testo
tutte le occorrenze di "ciao" con la stringa "ciao !"
*/

//SEZIONE DEL CODICE

%%

//SEZIONE DELLE DICHIARAZIONI

// La classe contenente lo scanner avra' il nome Subst
%class Subst

// Viene creato un metodo main che si aspetta in ingresso
// una lista di file su cui applicare lo scanner
%standalone

// Definisce il set di caratteri su cui lo scanner lavora:
// quando si usa lo scanner su file testuali deve essere attivato
%unicode

%{
// Verra' creata una variabile di tipo String nella classe Subst
String nome;
%}

%%

//SEZIONE DELLE REGOLE

// Quando viene trovarla la parola nome si salva la parola che segue
// nella variabili di tipo String nome
"nome " [a-zA-Z]+ { nome = yytext().substring(5); }

// Quando viene trovata la parola "Ciao" o "ciao" si riscrive la parola
// seguita dal nome salvato nella variabile nome
[Cc] "iao" { System.out.print(yytext()+" "+nome+"!"); }


Dato il seguente ingresso:
nome Stefano

Ciao
Questo e' un esempio di file di input
per uno scanner di tipo standalone

Ciao

Verra' generato il seguente output:
Ciao Stefano!
Questo e' un esempio di file di input
per uno scanner di tipo standalone

Ciao Stefano!

Attraverso JFlex puo' essere generato il file .java che esegue le specifiche definite dal programma in Jflex. Utilizzando la sintassi:
jflex standalone.jflex
si ottiene il file Subst.java il quale puo' essere compilato con la normale istruzione per compilare un programma java e cioe':
javac Subst.java
Verra' restituito il bytecode nel file Subst.class. A questo punto potra' essere avviato il programma con il file di esempio attaverso il seguente comando:
java Subst esempio.txt