Añada funciones y sentencias de llamada a función a la práctica de traducción de infijo a postfijo 34.6. Sigue un ejemplo de traducción:
def f(x) { x + 1 }
def g(a, b) { a * f(b) }
c = 3;
f(1+c);
g(3, 4)
|
f args :x
$x
1
+
return
:g args :a,:b
$a
$b
call :f
*
return
:main:
3
&c
=
1
c
+
call :f
3
4
call :g
|
call :etiqueta llama a
la función con el nombre dado por laetiqueta
args, p1, p2, ... da nombre a los
parámetros empujados. Dentro del cuerpo de la función nos referimos a ellos
prefijándolos con $.
return limpia la pila dejándola en su estado anterior
y retorna la última expresión evaluada
Casiano Rodríguez León