Calcolatrice: uso del pattern Visitor File: Calcolatrice.java Expr.java Visitor.java Convertitore.java Interprete.java expr.lex expr.cup Questo esempio mostra una calcolatrice in cui per gli AST si utilizza il pattern Visitor. In questo modo l'implementazione, sebbene appaia piu' difficile, e' piu' elegante e flessibile. La classe Interprete, che implementa l'interfaccia Visitor, definisce le operazioni per calcolare l'espressione (per semplicita' gli identificatori vengono valutati 0). La classe Convertitore implementa Visitor e definisce le operazioni per ottenere la notazione postfissa. Volendo associare un nuova funzionalita' all'albero, e' sufficiente fornire una nuova classe che implementi Visitor (nella versione precedente era necessario modificare la definizione dell'albero, definendo un nuovo metodo astratto in Expr e la sua implementazione in ciascuna delle sottoclassi). In questo modo la classe che definisce l'albero e' indipendente dagli usi che ne vengono fatti. Per maggiori dettagli vedere: Appel, Modern Compiler Implementation in Java, 2nd edition, Cambridge University Press 2002, pp. 93-97.