"Si no te entiendo mal, es lo que se llama código enhebrado por signos
(token threaded code): Lo que guardarías en la definición de una palabraen
el diccionario sería una lista de signos (octetos, en tu caso), que
servirían de índices para encontrar la función correspondiente (en el
lenguaje en el que escribirás el intérprete) mediante una matriz."

¡Exacto!

"No entiendo a qué te refieres. `>r` y `+` no reciben un tratamiento
diferente por parte del sistema. Son dos palabras como cualquier otra. Si
redefines `>r` como dices, al ejecutar la versión redefinida
obtendrás un error porque lo que hay en la pila de retorno cuando se
ejecuta el `>r` contenido en la versión redefinida es la dirección de
retorno de esta versión redefinida, no la anterior en el enhebrado, que es
la que supuestamente quieres mover con `>r`."

Tal y como yo lo entiendo, al escribir : >r >r ; se crea una entrada nueva
en el diccionario, con la _cadena_ ">r" y el bytecode de la operación >r, o
bien la dirección del código que ejecuta >r. Por tanto, cuando después yo
uso ">r", el intérprete buscará en el diccionario el _nombre_ ">r", y al
encontrarlo accederá a la dirección del código. No debería por tanto haber
ningún error.


[Se han eliminado los trozos de este mensaje que no contenían texto]

Responder a