import java_cup.runtime.*; import java.io.*; class Calcolatrice { public static void main(String[] args) throws java.io.IOException { // creazione del canale di input BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); //lettura della stringa da esaminare System.out.print("Espressione da calcolare? "); String s = in.readLine(); //creazione della symbol factory ComplexSymbolFactory sf = new ComplexSymbolFactory(); //creazione dell'analizzatore lessicale Scanner scanner = new Scanner(new StringReader(s), sf); //creazione del parser Parser p = new Parser(scanner, sf); try { Symbol ris = p.parse(); System.out.print("Il risultato dell'espressione e' " + ris.value); System.out.println(" (eventuali identificatori valutati 0)"); /* Nota: il metodo parse restituisce un oggetto di tipo Symbol che si riferisce alla radice dell'albero di parsing. Nel campo value, dichiarato di tipo Object, si trova il result assegnato dall'azione semantica */ } catch (Exception e){ System.out.println(e); } } }