La subrutina que hace el análisis léxico recibe como entrada una cadena de caracteres y retorna la lista de
terminales. Hay tres tipos de terminales: números (\d+
) y los símbolos +
y *
.
No asuma que los terminales están separados por blancos; esto es, una entrada legal podría ser:
4 5 3+*Una posibilidad es usar el operador de sustitución
s{regexp}{subst}g
con la opción global (g
) para insertar los blancos
que faltan:
DB<4> $x = '4 5 3+*' DB<5> $x =~ s{([-+*/]|\d+)}{ $1 }g DB<6> x $x 0 ' 4 5 3 + * 'Vea las secciones 3.2 y 3.12.
La subrutina que hace el cálculo recibe como entrada la lista con los terminales y devuelve el resultado de la operación.
Casiano Rodríguez León