/*Declaración del paquete en el que se almacenará el parser*/ package Calculadora; import java_cup.runtime.*; parser code {: public static void main(String args[]) throws Exception { new parser(new Yylex(System.in)).parse(); } :} /*Declaración de terminales */ terminal PYC, MAS, POR, PARIZQ, PARDER; terminal Integer NUMERO; /*Declaración de no terminales*/ non terminal expr_list, expr_part; non terminal Integer expr; /*Declaración de precedencias*/ precedence left MAS; precedence left POR; /*Reglas de Producción y acciones semánticas*/ expr_list ::= expr_list expr_part | expr_part; expr_part ::= expr:e {: System.out.println(" = "+e+";"); :} PYC; expr ::= NUMERO:n {: RESULT=n; :} | expr:l MAS expr:r {: RESULT=new Integer(l.intValue() + r.intValue()); :} | expr:l POR expr:r {: RESULT=new Integer(l.intValue() * r.intValue()); :} | PARIZQ expr:e PARDER {: RESULT=e; :} ;