Testo
Date le seguenti definizioni regolari relative alla descrizione di un filename con eventuale path (secondo il formato DOS) scrivere, utilizzando il programma JFLEX, un scanner in grado di riconoscere un pathname corretto.
Definizioni Regolari
PathFileName → ( Drive : )? (\)? (PathName \ )* FileName (. FileType)?
Drive → letter
PathName → id
FileName → id
FileType → id
Id → (letter | digit )( letter | digit )*
letter: tutte le lettere dell’alfabeto e i caratteri speciali tranne: slash, backslash, due punti, asterisco, punto interrogativo, doppie virgolette, minore, maggiore, simbolo OR.
digit: le cifre da 0 a 9
Esempi
Stringhe di caratteri riconosciute dall'analizzatore lessicale come FileName:
- A:\DIR1\DIR2\FILE1.EXE
- E:\FILE1.BAT - DIR1\DIR2\FILE2
- \UNIX\FILE.C
- A:README.TXT
- PIPPO
Soluzione
%%
%class e1
%standalone
pathfilename = ({drive}\:)?(\\)?({pathname}\\)*{filename}(\.{filetype})?
drive = {letter}
pathname = {id}
filename = {id}
filetype = {id}
id = ({letter}|{digit})+
letter = [^0-9\/\\\:\*\"\?\<\>\|\r\n]
digit = [0-9]
%%
{pathfilename} { System.out.println("Trovato: " + yytext()); }
| Succ. > |
|---|





