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
