Menu
Inicio
Compilar
Resultados
Usuarios
Ejemplos
Administración
Ayuda
Login
Usuario:
Password:
Registro
Enlaces
UCLM
ESI | UCLM
Campus Virtual
Software para la enseñanza y aprendizaje de la materia Procesadores de Lenguajes
:: Estas en:
Inicio
/
Ejemplos
/* Definición del analizador léxico */ lexer globalLexer %{ tokens { fin := (f|F)(I|i)(n|N); num_inst := L [0-9][0-9][0-9]; entra := (e|E)(n|N)(T|t)(r|R)(a|A); salida := (s|S)(a|A)(l|L)(i|I)(d|D)(a|A); dir_mem := M [0-9]; coma := ","; goto := (g|G)(o|O)(t|T)(o|O); if := (i|I)(f|F); sim_asig := ":="; op_arit := "+" | "-" | "*" | "/"; op_log := "EQ" | "LT" | "LE" | "GT" | "GE"; con_mem := "("M[0-9]")"; const_int := [1-9][0-9]+; nulos := [ \r\n\t]; } pass nulos; %} /* Definición de la gramática que hace uso del analizador anterior y además se construye un analizador sintáctico LL1 */ grammar gram_ll1 { analysis LL1; use globalLexer; nonterminal PROG, SENT, L_SENTS, INST, ASIG, IN, OUT, SALT_C, SALT_I, N_MEM, REST_NUM, EXP_LOG, EXP_ARIT, OPER, RESTO; PROG := SENT L_SENTS fin; L_SENTS := SENT L_SENTS | ; SENT := num_inst INST; INST := ASIG | IN | OUT | SALT_C | SALT_I; IN := entra N_MEM; OUT := salida N_MEM; N_MEM := dir_mem REST_NUM; REST_NUM := coma N_MEM |; SALT_I := goto num_inst; SALT_C := if EXP_LOG num_inst; ASIG := dir_mem sim_asig EXP_ARIT; EXP_ARIT := OPER RESTO; RESTO := op_arit OPER | ; EXP_LOG := OPER op_log OPER; OPER := con_mem | const_int; }