/* MODULO AUXILIAR PARA EL ROBOT KAREL */ /* ==================================================*/ /* === Programa: karel.lex ===*/ /* === TEcnica: Dirigida por la sintAxis ===*/ /* === Programador: J. Rafael R. ochoa ===*/ /* ==================================================*/ %{ #include "y.tab.h" extern int lineno; %} st [ \t] linea [ \n] blank ({st}) let [a-z] dig_pos [1-9] dig [0-9] dig_seq ({dig_pos}{dig}*) entero ({dig_seq}|[0]) let_o_dig ([a-z0-9_-]) identificador ({let}{let_o_dig}*) todo (\<[^\>]*\>) %% \< { while(getc(yyin) != '>') ;} PARED_JUNTO_A_AVENIDA { return PARED_JUNTO_A_AVENIDA; } DE_CALLE { return DE_CALLE; } PARED_JUNTO_A_CALLE { return PARED_JUNTO_A_CALLE; } DE_AVENIDA { return DE_AVENIDA; } A { return A; } HAY { return HAY; } MONEDAS_EN_CALLE { return MONEDAS_EN_CALLE; } AVENIDA { return AVENIDA; } KAREL_ESTA_EN_CALLE { return (KAREL_ESTA_EN_CALLE); } VIENDO_AL { return VIENDO_AL; } NORTE { return NORTE; } SUR { return SUR; } ESTE { return ESTE; } OESTE { return OESTE; } CON { return CON; } MONEDAS_EN_SU_BOLSA { return MONEDAS_EN_SU_BOLSA; } INICIO_DE_AMBIENTE { return INICIO_DE_AMBIENTE; } FIN_DE_AMBIENTE { return FIN_DE_AMBIENTE; } INICIO_DE_PROGRAMA { return INICIO_DE_PROGRAMA; } FIN_DE_PROGRAMA { return FIN_DE_PROGRAMA; } DEFINE_NUEVA_INSTRUCCION { return DEFINE_NUEVA_INSTRUCCION; } COMO { return COMO; } INICIO { return INICIO; } FIN { return FIN; } INICIO_DE_EJECUCION { return INICIO_DE_EJECUCION; } FIN_DE_EJECUCION { return FIN_DE_EJECUCION; } MIENTRAS { return MIENTRAS; } HAZ { return HAZ; } REPITE { return REPITE; } VECES { return VECES; } SI { return SI; } ENTONCES { return ENTONCES; } SINO { return SINO; } avanza { return AVANZA; } gira_a_la_izquierda { return GIRA_A_LA_IZQUIERDA; } recoge_moneda { return RECOGE_MONEDA; } coloca_moneda { return COLOCA_MONEDA; } apagate { return APAGATE; } frente_despejado { return FRENTE_DESPEJADO; } frente_bloqueado { return FRENTE_BLOQUEADO; } izquierda_despejada { return IZQUIERDA_DESPEJADA; } izquierda_bloqueada { return IZQUIERDA_BLOQUEADA; } derecha_despejada { return DERECHA_DESPEJADA; } derecha_bloqueada { return DERECHA_BLOQUEADA; } no_junto_a_moneda { return NO_JUNTO_A_MONEDA; } junto_a_moneda { return JUNTO_A_MONEDA; } no_hacia_el_norte { return NO_HACIA_EL_NORTE; } hacia_el_norte { return HACIA_EL_NORTE; } no_hacia_el_sur { return NO_HACIA_EL_SUR; } hacia_el_sur { return HACIA_EL_SUR; } no_hacia_el_este { return NO_HACIA_EL_ESTE; } hacia_el_este { return HACIA_EL_ESTE; } no_hacia_el_oeste { return NO_HACIA_EL_OESTE; } hacia_el_oeste { return HACIA_EL_OESTE; } con_monedas_en_su_bolsa { return CON_MONEDAS_EN_SU_BOLSA; } sin_monedas_en_su_bolsa { return SIN_MONEDAS_EN_SU_BOLSA; } {entero} { sprintf(yylval.str, "%s", yytext); return NUM; } {identificador} { sprintf(yylval.str, "%s", yytext); return FUNCION; } {blank}+ { ; } {linea} { lineno++; } ";" { return ';' ;} %% int yywrap() { return(1); }