halto

Descripción del contenido de la página

Herramienta escrita en Forth para poner puntos de depuración en un programa.

Etiquetas:

Esta pequeña herramienta permite poner puntos de depuración en un programa escrito en Forth, para examinar el contenido de la pila. La escribí como un complemento de la que llevaba incorporada el sistema Forth 5mx.

Aparte de una variable, todo el código consta de una sola palabra, lo que no es buena práctica en Forth. Varios años después escribí una versión mejorada, mejor escrita (con palabras cortas de funciones claras) y más versátil.

Los comentarios y los nombres de las palabras del código están en esperanto. En esta lengua «halto» (que se pronuncia con hache aspirada) significa «acción de detenerse».

Código fuente

\ halto

\ Herramimenta para la depuración de errores.
\ Senerarigilo.
\ Debug tool.

\ (C) 2004,2005 Marcos Cruz (programandala.net)
\ Licencia/Permesilo/License:
\ http://programandala.net/license

\ Programa escrito en ANS Forth.
\ Programo verkita en ANS-Fortho.
\ Program written in ANS Forth.

CR .( halto)

VARIABLE haltostakero  \ celumas la stakeron esploratan dum la halto

: halto ( n -- )

  \ Montras numeron kaj la stakon kaj haltas ghis klavo premitas.

  \ 2005.11.09 Klavoj <> anstataw +-.
  \ 2005.02.27 Korektita la ordono T.
  \ 2005.01.18 Modifita por elektebligo de stakero ekzamenota kaj pliaj ebloj.
  \ 2005.01.17 Modifita por ripeto per begin until .

  0 haltostakero !
  CR CR ." HALTO " .
  \ DEBUG  \ Forth 5mx
  BEGIN
    CR ." ( " .S ." -- ) "
    ." <" haltostakero @ PICK . ." > "
    CR ." [?] [b]inary b[y]e [d]ecimal [e]mit [h]ex [l]eave [t]ype [q]uit [<>]"
    KEY
    CASE
      [CHAR] ? OF haltostakero @ PICK CR ? FALSE ENDOF
      [CHAR] t OF
        haltostakero @ PICK haltostakero @ PICK
        CR TYPE FALSE
        ENDOF
      [CHAR] e OF
        haltostakero @ PICK CR EMIT FALSE
        ENDOF
      [CHAR] y OF BYE ENDOF
      [CHAR] l OF TRUE ENDOF
      [CHAR] b OF 2 BASE ! FALSE ENDOF
      [CHAR] d OF DECIMAL FALSE ENDOF
      [CHAR] h OF HEX FALSE ENDOF
      [CHAR] q OF QUIT ENDOF
      [CHAR] > OF
        DEPTH 1- haltostakero @ SWAP <
        IF 1 haltostakero +! THEN FALSE
        ENDOF
      [CHAR] < OF
        haltostakero @
        IF -1 haltostakero +! THEN FALSE
        ENDOF
      FALSE SWAP \ ENDCASE demetos la staksupron, la neuzitan klavon; FALSE utilos por UNTIL
    ENDCASE
  UNTIL
;


Páginas relacionadas

Halto 2
Herramienta escrita en Forth poner puntos de depuración en un programa.