Você está na página 1de 3

import java.io.

*;
import java_cup.runtime.*;
/* GRAFICA */
import javax.swing.*;
import java.awt.*;
import static java.awt.COLOR.*;
import java.awt.geom.*;

parser code

{:
public static void main(String [] args) throws Exception{
new parser( new Yylex(System.in)).parse();
}

public void syntax_error(Symbol s){


report_error("Error de Sintaxis linea: " +
Integer.toString(Yylex.linea+1)+ "Columna : " + Integer.toString(Yylex.pos + 1)
+ " En \""+ s.value + "\"", null);
}
:}

terminal PARTIDA, TERMINO, LIENZO, RECTANGULO, CIRCULO, TRIANGULO;


terminal RELLENA_RECTANGULO, RELLENA_CIRCULO, RELLENA_TRIANGULO;
terminal ROJO, VERDE, AZUL, BLANCO, AMARILLO, NEGRO, NARANJA;
terminal Integer NUMERO;

non terminal ARRANQUE, PANEL, DIBUJA, COLOR;

ARRANQUE ::= PARTIDA PANEL TERMINO ;


PANEL ::= LIENZO(NUMERO:e1,NUMERO:e2) DIBUJA
{:
setSize(e1.intValue, e2.intValue);
setVisible(true);
:}
;

DIBUJA ::= COLOR RECTANGULO(NUMERO:a1 ,NUMERO:a2 ,NUMERO:a3 ,NUMERO:a4) DIBUJA


{:
g.setCOLOR(color.a);

g.drawRect(a1.intValue,a2.intValue(),a3.intValue(),a4.intValue());
:}
| COLOR RELLENA_RECTANGULO(NUMERO:a1 ,NUMERO:a2 ,NUMERO:a3
,NUMERO:a4) DIBUJA
{:
g.setCOLOR(color.a);

g.fillRect(a1.intValue,a2.intValue(),a3.intValue(),a4.intValue());
:}
| COLOR CIRCULO (NUMERO:a1 ,NUMERO:a2 ,NUMERO:a3 ,NUMERO:a4) DIBUJA
{:
g.setCOLOR(color.a);

g.drawOval(a1.intValue(),a2.intValue(),a3.intValue(),a4.intValue());
:}
| COLOR LENAR_CIRCULO(NUMERO:a1 ,NUMERO:a2 ,NUMERO:a3 ,NUMERO:a4)
DIBUJA
{:
g.setCOLOR(color.a);

g.fillOval(a1.intValue(),a2.intValue(),a3.intValue(),a4.intValue());
:}
| COLOR TRIANGULO (NUMERO:a1 ,NUMERO:a2 ,NUMERO:a3 ,NUMERO:a4
,NUMERO:a5 ,NUMERO:a6) DIBUJA
{:
g.setCOLOR(color.a);

g.drawArc(a1.intValue(),a2.intValue(),a3.intValue(),a4.intValue(),a5.intValue(),a6.
intValue);
:}
| COLOR LLENAR_TRIANGULO(NUMERO:a1 ,NUMERO:a2 ,NUMERO:a3
,NUMERO:a4 ,NUMERO:a5 ,NUMERO:a6) DIBUJA
{:
g.setCOLOR(color.a);

g.fillArc(a1.intValue(),a2.intValue(),a3.intValue(),a4.intValue(),a5.intValue(),a6.
intValue);
:}

| LANDA
{:
RESULT = new String (" ");
:}
;

COLOR:a ::= ROJO:a


{:
RESULT = new String (a.setCOLOR(red));
:}
| VERDE:a
{:
RESULT = new String (a.setCOLOR(green));
:}
| AZUL:a
{:
RESULT = new String (a.setCOLOR(blue));
:}
| BLANCO:a
{:
RESULT = new String (a.setCOLOR(white));
:}
| AMARILLO:a
{:
RESULT = new String (a.setCOLOR(yellow));
:}
| NEGRO:a
{:
RESULT = new String (a.setCOLOR(black));
:}
| NARANJA:a
{:
RESULT = new String (a.setCOLOR(orange));
:}
;

// gramatica
ARRANQUE > PARTIDA PANEL TERMINO
PANEL > LIENZO ( NUMERO , NUMERO) ; DIBUJA
DIBUJA > COLOR ; RECTANGULO ( NUMERO, NUMERO ,NUMERO , NUMERO) ; DIBUJA
| COLOR ; RELLENA_RECTANGULO ( NUMERO, NUMERO ,NUMERO ,
NUMERO) ; DIBUJA
| COLOR ; CIRCULO ( NUMERO, NUMERO ,NUMERO , NUMERO) ;
DIBUJA
| COLOR ; RELLENA_CIRCULO ( NUMERO, NUMERO ,NUMERO ,
NUMERO) ; DIBUJA
| COLOR ; TRIANGULO ( NUMERO, NUMERO ,NUMERO , NUMERO,
NUMERO, NUMERO) ; DIBUJA
| COLOR ; RELLENA_TRIANGULO ( NUMERO, NUMERO , NUMERO ,
NUMERO , NUMERO, NUMERO) ; DIBUJA
|
NUMERO > NUMERO_ENTERO
COLOR > ROJO
| VERDE
| AZUL
| BLANCO
| AMARILLO
| NEGRO
| NARANJA