para metadatos etiqueta ejemplos descripcion definicion buscadores body compilation control-flow forth gforth immediate-mode

compilation - metadatos - Ejemplos de palabras de compilación de flujo de control personalizado



meta title y meta descripcion (2)

Aquí hay un ejemplo. CASE fue una adición algo tardía al conjunto de palabras de flujo de control Forth. A principios de 1980, se anunció una competencia para definir la mejor declaración CASE en Forth Dimensions. Se resolvió más tarde ese año con un empate entre tres entradas. Uno de esos terminó en el estándar Forth94.

Forth permite a los usuarios alterar el lenguaje definiendo nuevas palabras para el flujo de control (más allá de las dadas por el estándar: DO, LOOP, BEGIN, UNTIL, WHILE, REPEAT, LEAVE IF, THEN, ELSE, CASE, ENDCASE, etc.)

¿Hay ejemplos comunes de personas que realmente están creando sus propias palabras de flujo de control nuevas? ¿Cuáles son algunos ejemplos típicos y útiles? ¿O el estándar ya ha definido todo lo que las personas realmente necesitan?

Espero encontrar ejemplos de extensiones de idiomas útiles que hayan ganado aceptación o hayan demostrado ser útiles en general para hacer que el lenguaje sea más expresivo.


Otra gran dirección de estructuras de flujo de control en Forth está retrocediendo . Es un mecanismo muy expresivo y poderoso. Para ser implementado, requiere manipulación de dirección de retorno.

Backtracking in Forth fue desarrollado como extensión BacFORTH por MLGassananko en ~ 1988-1990.

Los primeros trabajos sobre este tema fueron en ruso. Para una introducción, ver el documento Mejorando las capacidades de Backtracking por MLGassananko (1998). Ver también una discusión en comp.lang.forth (los mensajes de Gassanenko).

Solo un ejemplo de generador en Bacfort:

: (0-2)=> PRO 3 0 DO I CONT LOOP ; / generator : test (0-2)=> CR . ." : " (0-2)=> . ; test CR

Salida:

0 : 0 1 2 1 : 0 1 2 2 : 0 1 2

PRO y CONT son palabras de flujo de control especiales. PRO designa la palabra generadora, y CONT llama al consumidor; es algo así como el yield en Ruby o ECMAScript. Varias otras palabras especiales también se definen en BacFORTH. Puedes jugar con BacFORTH en SP-Forth (solo incluye la biblioteca ~profit/lib/bac4th.f ).

Etimología

En general, retroceder es solo un algoritmo para encontrar soluciones. En Prolog, este algoritmo se incrustó en el capó, por lo que retroceder en Prolog es el proceso de cómo funcionan ellos mismos. Retroceder en BacFORTH es una técnica de programación que es respaldada por un conjunto de palabras de flujo de control especiales.