Práctica: Postfijo y Subrutina

Reescriba la práctica de la calculadora en posfijo realizada en la sección 1.13.8 para que sea una subrutina. Escriba el programa usando dos subrutinas: una que haga el cálculo y otra que haga el análisis léxico.

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
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19