/*Declaración del paquete en el que se almacenarán el analizador sintáctico y la clase de constantes*/ package Ejllaves; import java_cup.runtime.*; import java.io.*; parser code {: public static void main (String args[]) throws Exception { if (args.length != 0) new parser (new Yylex (new DataInputStream(new FileInputStream(args[0])))).parse(); else new parser (new Yylex (System.in)).parse(); } :} /*Declaración de los símbolos terminales*/ terminal LLIZQ, LLDER, FIN; /*Declaración de los símbolos no terminales*/ non terminal empezar, llavesbalanceadas, simple; /*reglas de producción con reglas semánticas asociadas*/ empezar ::= llavesbalanceadas FIN {: System.out.println("llaves balanceadas"); :} ; llavesbalanceadas ::= simple | LLIZQ llavesbalanceadas LLDER ; simple ::= LLIZQ LLDER ;