/* Semplici token per le espressioni aritmetiche (2015) */ package lt.calc; //per dichiarare che Scanner appartiene al package lt.calc import static lt.calc.TipoToken.*; //per importare le costanti del tipo TipoToken //evitando di dovere ripetere il nome della classe davanti ad esse. %% %full //set di caratteri su 8 bit %class Scanner //nome della classe generata %function getNext //nome del metodo di scansione %type Token //tipo restituito dal metodo di scansione //(la classe Token e' in un file separato) %ignorecase %public //rende public la classe generata LETTERA = [:letter:] CIFRA = [:digit:] FINERIGA = \r | \n | \r\n SPAZIATURA = [ \t\f] | {FINERIGA} %% "/" {return new Token(DIVISO);} "-" {return new Token(MENO);} "*" {return new Token(PER);} "+" {return new Token(PIU);} "(" {return new Token(TONDA_APERTA);} ")" {return new Token(TONDA_CHIUSA);} {CIFRA}+ {return new Token(NUMERO, new Integer(yytext()));} {LETTERA}({LETTERA}|{CIFRA})* {return new Token(IDENT, yytext());} {SPAZIATURA} { } . {return new Token(NULLO, yytext());} <> {return new Token(EOF);}