Añada funciones y sentencias de llamada a función a la práctica de traducción de infijo a postfijo 5.9. 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 la etiqueta
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