1ra Area.docx

  • Uploaded by: Juan Martín Navas
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View 1ra Area.docx as PDF for free.

More details

  • Words: 3,488
  • Pages: 17
/*--------------- 1ra Area: Codigo de Usuario -----------------------*/ //-------> importaciones, paquetes package Models; import java_cup.runtime.Symbol;

//------> Codigo para el parser,variables, metodos parser code {: public String result=""; String temporal = "" ; String temporal2=""; String temporal3=""; String temporalvalor=""; String envget="false"; String enviaset="false"; String hereda=""; String guardo=""; String consulta=""; String valorsigno=""; String valoracceder=""; String valoraccederid=""; String serialcondicion=""; String insertarvalores="";

//Metodo al que se llama automaticamente ante algun error sintactico public void syntax_error(Symbol s) { String lexema = s.value.toString();

int fila = s.right; int columna = s.left; result +="\n!!!!!!! Error Sintactico Recuperado !!!!!!!\t\tLexema: "+lexema+"\t\tFila: "+fila+"\t\tColumna: "+columna; System.out.println("!!!!!!! Error Sintactico Recuperado !!!!!!!"); System.out.println("\t\tLexema: "+lexema); System.out.println("\t\tFila: "+fila); System.out.println("\t\tColumna: "+columna);

}

//Metodo al que se llama en el momento en que ya no es posible una recuperacion de errores public void unrecovered_syntax_error(Symbol s) throws java.lang.Exception { String lexema = s.value.toString(); int fila = s.right; int columna = s.left; result +="\n!!!!!!! Error Sintactico, Panic Mode !!!!!!!\t\tLexema: "+lexema+"\t\tFila: "+fila+"\t\tColumna: "+columna; System.out.println("!!!!!!! Error Sintactico, Panic Mode !!!!!!! "); System.out.println("\t\tLexema: "+lexema); System.out.println("\t\tFila: "+fila); System.out.println("\t\tColumna: "+columna);

} :}

//------> Codigo para las acciones gramaticales

action code {: :}

/*--------------- 2da Area: Declaraciones -----------------------*/ //------> declaracion de terminales terminal function, procedure, boolean_type , int_type , float_type , char_type , string_type ; terminal parametro_entrada , parametro_salida , parametro_entada_salida , ciclo_for , ciclo_while , ciclo_repeat , condicional_if ; terminal condicional_switch , condicional_until , then , else , end_if , end_case ; terminal suma , resta , multiplicacion , division , potencia , menor , mayor , comparacion , menor_igual ; terminal mayor_igual , modulo , diferente , or , and , not , asignacion , parentesis_abierto ; terminal parentesis_cerrado , llave_abierta , llave_cerrada , corchete_abierto , corchete_cerrado , coma , hasta , hacer ; terminal down_to , digito , letra , entero , numero , id , comilla_abierta , comilla_cerrada, end_for, case ; terminal dos_puntos, end_while ;

//------> declaracion de no terminales

non terminal S , INICIO, ARGUMENTOS , DEFVARIABLES , CUERPITO , REFERENCIA , TIPODATO , VECTOR , OPERADOR_LOGICO ; non terminal ELEMENTOS , MATRIZ ,CICLOS, CONDICIONALES , INSTRUCCIONES , FOR , WHILE , REPEAT , IF , SWITCH , OPERADOR_RELACIONAL ;

non terminal EXPRESION_REG , ASIGNACIONES , OPERACIONES ,OPERADOR_MATEMATICO , CONTADOR , ACUMULADOR , MATEMATICAS, CONDICION ; start with S;

/*--------------- 3ra Area: Reglas Semanticas -----------------------*/ S ::= INICIO | INICIO S; INICIO ::= procedure id parentesis_abierto ARGUMENTOS parentesis_cerrado DEFVARIABLES llave_abierta CUERPITO llave_cerrada | function id parentesis_abierto ARGUMENTOS parentesis_cerrado DEFVARIABLES llave_abierta CUERPITO llave_cerrada | procedure id parentesis_abierto parentesis_cerrado DEFVARIABLES llave_abierta CUERPITO llave_cerrada | function id parentesis_abierto parentesis_cerrado DEFVARIABLES llave_abierta CUERPITO llave_cerrada | procedure id parentesis_abierto ARGUMENTOS parentesis_cerrado llave_abierta CUERPITO llave_cerrada | function id parentesis_abierto ARGUMENTOS parentesis_cerrado llave_abierta CUERPITO llave_cerrada | procedure id parentesis_abierto parentesis_cerrado llave_abierta CUERPITO llave_cerrada | function id parentesis_abierto parentesis_cerrado llave_abierta CUERPITO llave_cerrada ; /*--------------| procedure id parentesis_abierto ARGUMENTOS parentesis_cerrado DEFVARIABLES llave_abierta CUERPITO llave_cerrada | function id parentesis_abierto ARGUMENTOS parentesis_cerrado DEFVARIABLES llave_abierta CUERPITO llave_cerrada INICIO | procedure id parentesis_abierto parentesis_cerrado DEFVARIABLES llave_abierta CUERPITO llave_cerrada INICIO | function id parentesis_abierto parentesis_cerrado DEFVARIABLES llave_abierta CUERPITO llave_cerrada INICIO

| procedure id parentesis_abierto ARGUMENTOS parentesis_cerrado llave_abierta CUERPITO llave_cerrada INICIO | function id parentesis_abierto ARGUMENTOS parentesis_cerrado llave_abierta CUERPITO llave_cerrada INICIO | procedure id parentesis_abierto parentesis_cerrado llave_abierta CUERPITO llave_cerrada INICIO | function id parentesis_abierto parentesis_cerrado llave_abierta CUERPITO llave_cerrada INICIO ; -----------------------*/

ARGUMENTOS ::= REFERENCIA TIPODATO id coma ARGUMENTOS | REFERENCIA TIPODATO id ;

REFERENCIA ::= parametro_entrada | parametro_salida | parametro_entada_salida ;

TIPODATO ::= int_type | char_type | float_type | boolean_type | string_type ;

ELEMENTOS ::= entero coma ELEMENTOS | entero | comilla_abierta id comilla_cerrada | comilla_abierta id comilla_cerrada coma ELEMENTOS | id coma ELEMENTOS ;

VECTOR ::= TIPODATO id corchete_abierto corchete_cerrado | TIPODATO id corchete_abierto entero corchete_cerrado | TIPODATO id corchete_abierto id corchete_cerrado | TIPODATO id corchete_abierto corchete_cerrado asignacion llave_abierta ELEMENTOS llave_cerrada | TIPODATO id corchete_abierto corchete_cerrado VECTOR | TIPODATO id corchete_abierto entero corchete_cerrado VECTOR | TIPODATO id corchete_abierto id corchete_cerrado VECTOR | TIPODATO id corchete_abierto corchete_cerrado asignacion llave_abierta ELEMENTOS llave_cerrada VECTOR ;

MATRIZ ::= TIPODATO id corchete_abierto corchete_cerrado corchete_abierto corchete_cerrado MATRIZ | TIPODATO id corchete_abierto entero corchete_cerrado corchete_abierto entero corchete_cerrado MATRIZ | TIPODATO id corchete_abierto id corchete_cerrado corchete_abierto id corchete_cerrado MATRIZ | TIPODATO id corchete_abierto entero corchete_cerrado corchete_abierto id corchete_cerrado MATRIZ | TIPODATO id corchete_abierto id corchete_cerrado corchete_abierto entero corchete_cerrado MATRIZ | TIPODATO id corchete_abierto corchete_cerrado corchete_abierto corchete_cerrado | TIPODATO id corchete_abierto entero corchete_cerrado corchete_abierto entero corchete_cerrado | TIPODATO id corchete_abierto id corchete_cerrado corchete_abierto id corchete_cerrado | TIPODATO id corchete_abierto entero corchete_cerrado corchete_abierto id corchete_cerrado | TIPODATO id corchete_abierto id corchete_cerrado corchete_abierto entero corchete_cerrado ;

//------> OJO CON VECTOR Y MATRIZ //------> TIPODATO ::= int_type | char_type | float_type | boolean_type | string_type | VECTOR |MATRIZ ;

DEFVARIABLES ::= ASIGNACIONES ;

EXPRESION_REG ::= digito | numero | entero | id | letra ;

OPERADOR_MATEMATICO ::= suma | resta | multiplicacion | division | potencia | modulo ;

OPERADOR_LOGICO ::= menor | mayor | comparacion | menor_igual |mayor_igual | diferente | not ;

OPERADOR_RELACIONAL ::= and | or ;

CONTADOR ::= id suma suma | id resta resta ;

CUERPITO ::= CICLOS | CONDICIONALES | INSTRUCCIONES| ;

CICLOS ::= FOR | WHILE | REPEAT | FOR CICLOS | WHILE CICLOS | REPEAT CICLOS ;

FOR ::= ciclo_for id asignacion entero hasta EXPRESION_REG hacer CUERPITO end_for | ciclo_for id asignacion id hasta EXPRESION_REG hacer CUERPITO end_for | ciclo_for id asignacion entero down_to EXPRESION_REG hacer CUERPITO end_for ;

WHILE ::= ciclo_while parentesis_abierto CONDICION parentesis_cerrado hacer CUERPITO end_while ;

REPEAT ::= ciclo_repeat CUERPITO condicional_until parentesis_abierto CONDICION parentesis_cerrado ;

CONDICIONALES ::= IF | SWITCH | IF CONDICIONALES | SWITCH CONDICIONALES ;

IF ::= condicional_if parentesis_abierto CONDICION parentesis_cerrado then CUERPITO end_if | condicional_if parentesis_abierto CONDICION parentesis_cerrado then CUERPITO else CUERPITO end_if ;

SWITCH ::= condicional_switch id case id dos_puntos CUERPITO end_case

| condicional_switch id case id dos_puntos CUERPITO SWITCH end_case | case id CUERPITO ;

CONDICION ::= parentesis_abierto EXPRESION_REG OPERADOR_LOGICO EXPRESION_REG parentesis_cerrado | parentesis_abierto EXPRESION_REG OPERADOR_LOGICO EXPRESION_REG parentesis_cerrado | parentesis_abierto EXPRESION_REG OPERADOR_LOGICO EXPRESION_REG parentesis_cerrado OPERADOR_RELACIONAL CONDICION ;

INSTRUCCIONES ::= ASIGNACIONES | OPERACIONES | ASIGNACIONES INSTRUCCIONES |OPERACIONES INSTRUCCIONES ;

ASIGNACIONES ::=TIPODATO id asignacion EXPRESION_REG | TIPODATO id asignacion EXPRESION_REG ASIGNACIONES | TIPODATO ;

OPERACIONES ::= CONTADOR | ACUMULADOR | MATEMATICAS ;

ACUMULADOR ::= id asignacion id suma id | id asignacion id resta id ;

MATEMATICAS ::= id asignacion id OPERADOR_MATEMATICO id | id asignacion id OPERADOR_MATEMATICO id MATEMATICAS ;

/*-------------Codigo de Usuario---------------*/ //-------> Paquetes, importaciones: package Models; import java_cup.runtime.*; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList;

/*-------------Opciones y Declaraciones-------------*/ %% %{ //-----> Codigo de usuario en sintaxis java public String showResult = "";

%} //-----> Directivas

%public %class LexicalAnalyzer %cupsym Symbols %cup %char %column

%full %ignorecase %line %unicode

///-----> Expresiones Regulares

digito = [0-9] letra = [A-Za-z] entero = {digito} {digito}* decimal = {digito}+"."{digito}+ identificador = {letra}({letra}|{digito})*

%% /*-------------Reglas Lexicas---------------*/

//-----------------> Simbolos "FUNCTION" { System.out.println("Token correcto: "+yytext()+" function"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.function, yycolumn, yyline, yytext()); } "PROCEDURE" { System.out.println("Token correcto: "+yytext()+" procedure"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.procedure, yycolumn, yyline, yytext()); } "BOOLEAN" { System.out.println("Token correcto: "+yytext()+" boolean_type"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.boolean_type, yycolumn, yyline, yytext()); } "INT" { System.out.println("Token correcto: "+yytext()+" int"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.int_type, yycolumn, yyline, yytext()); }

"FLOAT" { System.out.println("Token correcto: "+yytext()+" float"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.float_type, yycolumn, yyline, yytext()); } "CHAR" { System.out.println("Token correcto: "+yytext()+" char"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.char_type, yycolumn, yyline, yytext()); } "STRING" { System.out.println("Token correcto: "+yytext()+" string"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.string_type, yycolumn, yyline, yytext()); } //-----> "RETURN" { System.out.println("Token correcto: "+yytext()+" retorno"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.retorno, yycolumn, yyline, yytext()); } //-----> "TRUE" { System.out.println("Token correcto: "+yytext()+" verdadero"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.verdadero , yycolumn, yyline, yytext()); } //-----> "FALSE" { System.out.println("Token correcto: "+yytext()+" falso"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.falso, yycolumn, yyline, yytext()); } "I" { System.out.println("Token correcto: "+yytext()+" parametro_entrada"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.parametro_entrada, yycolumn, yyline, yytext()); } "O" { System.out.println("Token correcto: "+yytext()+" parametro_salida"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.parametro_salida, yycolumn, yyline, yytext()); } "IO" { System.out.println("Token correcto: "+yytext()+" parametro_entada_salida"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.parametro_entada_salida, yycolumn, yyline, yytext()); } "FOR" { System.out.println("Token correcto: "+yytext()+" ciclo_for"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.ciclo_for, yycolumn, yyline, yytext()); } "WHILE" { System.out.println("Token correcto: "+yytext()+" ciclo_while"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.ciclo_while, yycolumn, yyline, yytext()); } "REPEAT" { System.out.println("Token correcto: "+yytext()+" ciclo_repeat"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.ciclo_repeat, yycolumn, yyline, yytext()); }

"IF" { System.out.println("Token correcto: "+yytext()+" condicional_if"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.condicional_if, yycolumn, yyline, yytext()); } "SWITCH" { System.out.println("Token correcto: "+yytext()+" condicional_switch"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.condicional_switch, yycolumn, yyline, yytext()); } "UNTIL" { System.out.println("Token correcto: "+yytext()+" condicional_until"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.condicional_until, yycolumn, yyline, yytext()); } "THEN" { System.out.println("Token correcto: "+yytext()+" then"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.then, yycolumn, yyline, yytext()); } "ELSE" { System.out.println("Token correcto: "+yytext()+" else"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.else, yycolumn, yyline, yytext()); } "END IF" { System.out.println("Token correcto: "+yytext()+" end if"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.end_if, yycolumn, yyline, yytext()); } //-----> "CASE" { System.out.println("Token correcto: "+yytext()+" case of"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.case_of, yycolumn, yyline, yytext()); } "END CASE" { System.out.println("Token correcto: "+yytext()+" end case"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.end_case, yycolumn, yyline, yytext()); } //-----> "ARRAY" { System.out.println("Token correcto: "+yytext()+" array"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.array , yycolumn, yyline, yytext()); } //-----> "LIST" { System.out.println("Token correcto: "+yytext()+" list"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.list, yycolumn, yyline, yytext()); } //-----> "STACK" { System.out.println("Token correcto: "+yytext()+" stack"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.stack, yycolumn, yyline, yytext()); } //-----> "QUEVE" { System.out.println("Token correcto: "+yytext()+" queve"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.queve, yycolumn, yyline, yytext()); }

//-----> "TREE" { System.out.println("Token correcto: "+yytext()+" tree"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.tree, yycolumn, yyline, yytext()); } //-----> "GRAPH" { System.out.println("Token correcto: "+yytext()+" graph"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.graph, yycolumn, yyline, yytext()); } //-----> "SET" { System.out.println("Token correcto: "+yytext()+" set"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.set, yycolumn, yyline, yytext()); } "+" { System.out.println("Token correcto: "+yytext()+" suma"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.suma, yycolumn, yyline, yytext()); } "-" { System.out.println("Token correcto: "+yytext()+" resta"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.resta, yycolumn, yyline, yytext()); } "*" { System.out.println("Token correcto: "+yytext()+" multiplicacion"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.multiplicacion, yycolumn, yyline, yytext()); } "/" { System.out.println("Token correcto: "+yytext()+" division"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.division, yycolumn, yyline, yytext()); } "^" { System.out.println("Token correcto: "+yytext()+" potencia"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.potencia, yycolumn, yyline, yytext()); } "<" { System.out.println("Token correcto: "+yytext()+" menor"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.menor, yycolumn, yyline, yytext()); } ">" { System.out.println("Token correcto: "+yytext()+" mayor"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.mayor, yycolumn, yyline, yytext()); } "==" { System.out.println("Token correcto: "+yytext()+" comparacion"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.comparacion, yycolumn, yyline, yytext()); } "<=" { System.out.println("Token correcto: "+yytext()+" menor igual"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.menor_igual, yycolumn, yyline, yytext()); }

">=" { System.out.println("Token correcto: "+yytext()+" mayor igual"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.mayor_igual, yycolumn, yyline, yytext()); } //-----> "DIV" { System.out.println("Token correcto: "+yytext()+" division entera"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.division, yycolumn, yyline, yytext()); } "MOD" { System.out.println("Token correcto: "+yytext()+" modulo"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.modulo, yycolumn, yyline, yytext()); } "<>" { System.out.println("Token correcto: "+yytext()+" diferente"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.diferente, yycolumn, yyline, yytext()); } "OR" { System.out.println("Token correcto: "+yytext()+" o logico"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.or, yycolumn, yyline, yytext()); } "AND" { System.out.println("Token correcto: "+yytext()+" y logico"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.and, yycolumn, yyline, yytext()); } "NOT" { System.out.println("Token correcto: "+yytext()+" no logico"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.not, yycolumn, yyline, yytext()); } //-----> "%" { System.out.println("Token correcto: "+yytext()+" comentario"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.comentario, yycolumn, yyline, yytext()); } "<-" { System.out.println("Token correcto: "+yytext()+" asignacion"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.asignacion, yycolumn, yyline, yytext()); } "(" { System.out.println("Token correcto: "+yytext()+" parentesisabre"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.parentesis_abierto, yycolumn, yyline, yytext()); } ")" { System.out.println("Token correcto: "+yytext()+" parentesiscierra"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.parentesis_cerrado, yycolumn, yyline, yytext()); } "{" { System.out.println("Token correcto: "+yytext()+" llaveabre"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.llave_abierta, yycolumn, yyline, yytext()); }

"}" { System.out.println("Token correcto: "+yytext()+" llavecierra"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.llave_cerrada, yycolumn, yyline, yytext()); } "[" { System.out.println("Token correcto: "+yytext()+" corcheteabre"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.corchete_abierto, yycolumn, yyline, yytext()); } "]" { System.out.println("Token correcto: "+yytext()+" corchetecierra"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.corchete_cerrado, yycolumn, yyline, yytext()); } "," { System.out.println("Token correcto: "+yytext()+" coma"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.coma, yycolumn, yyline, yytext()); } "TO" { System.out.println("Token correcto: "+yytext()+" hasta"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.hasta, yycolumn, yyline, yytext()); } "DO" { System.out.println("Token correcto: "+yytext()+" hacer"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.hacer, yycolumn, yyline, yytext()); } //-----> "INC" { System.out.println("Token correcto: "+yytext()+" incremento"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.incremento, yycolumn, yyline, yytext()); } //-----> "DEC" { System.out.println("Token correcto: "+yytext()+" decremento"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.decremento, yycolumn, yyline, yytext()); } //-----> "DOWNTO" { System.out.println("Token correcto: "+yytext()+" descenso"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.down_to, yycolumn, yyline, yytext()); } "PRINT" { System.out.println("Token correcto: "+yytext()+" imprimir"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.imprimir, yycolumn, yyline, yytext()); } "<<" { System.out.println("Token correcto: "+yytext()+" comilla_abierta"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.comilla, yycolumn, yyline, yytext()); } ">>" { System.out.println("Token correcto: "+yytext()+" comilla_cerrada"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.cerrada, yycolumn, yyline, yytext()); }

"END FOR" { System.out.println("Token correcto: "+yytext()+" end for"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.end_for, yycolumn, yyline, yytext()); } "CASE" { System.out.println("Token correcto: "+yytext()+"case"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.case, yycolumn, yyline, yytext()); } ":" { System.out.println("Token correcto: "+yytext()+"puntos"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.dos_puntos, yycolumn, yyline, yytext()); }

//-----------------> Simbolos ER

{digito} { System.out.println("Token "+yytext()+" digito"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.digito, yycolumn, yyline, yytext()); } {letra} { System.out.println("Token "+yytext()+" letra"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.letra, yycolumn, yyline, yytext()); } {entero} { System.out.println("Token "+yytext()+" enero"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.entero, yycolumn, yyline, yytext()); } {decimal} { System.out.println("Token "+yytext()+" numero"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.numero, yycolumn, yyline, yytext()); } {identificador} { System.out.println("Token "+yytext()+" id"); showResult += "Token correcto: " +yytext()+" Linea: " + (yyline+1) + " columna: "+ (yycolumn+1) + " \n"; return new Symbol(Symbols.id, yycolumn, yyline, yytext()); }

//------> Espacios [ \t\r\n\f]

{/* Espacios en blanco, se ignoran */}

//------> Errores Lexicos . { System.out.println("\nError Lexico: "+yytext()+" Linea: "+yyline+" Columna: "+yycolumn); showResult += "\n Error Lexico: " + yytext() + " Linea: " + (yyline+1) + " Columna: " + (yycolumn+1) + "\n";}

Related Documents

1ra Unidad.pptx
December 2019 19
1ra Resolucion
June 2020 10
1ra Practica
October 2019 24
1ra Area.docx
May 2020 10
1ra Practica.docx
November 2019 16
Auquescoca 1ra
October 2019 12

More Documents from "Josri"

April 2020 13
April 2020 7
Bachata.docx
April 2020 6
June 2020 0