Flujo
cond, start, else, stop y end: los marcadores que arman los genes y deciden qué partes del ADN corren en cada ciclo.
Costo: Control de flujo; end no cuesta
| Operador | Qué hace |
|---|---|
cond | Abre un gen nuevo: vacía la pila booleana y empieza la zona de condiciones, que termina en start o else. |
start | Cierra las condiciones del gen y abre su cuerpo, que corre si todas dieron verdadero; sin cond delante, corre siempre. |
else | Abre el cuerpo alternativo de un gen, que corre cuando las condiciones del cond dieron falso. |
stop | Cierra el gen: lo que sigue hasta el próximo marcador no se ejecuta. |
end | Termina el ADN: lo que venga después no se ejecuta. El motor agrega uno al final si no lo ponés. |
Estas palabras no calculan nada ni tocan la pila entera: ordenan el ADN en genes. El ADN se recorre entero, de izquierda a derecha, en cada ciclo, y cada marcador cambia el estado del intérprete al pasar:
condabre un gen y la zona de condiciones.startcierra las condiciones y abre el cuerpo, que corre si todas dieron verdadero.elseabre un cuerpo alternativo, que corre si dieron falso.stopcierra el gen.endtermina el ADN; lo que siga no se ejecuta.
La forma de casi todos los genes es cond … start … stop, con else cuando hace falta un «si no»:
' avanza mientras tenga más de 2000 de energía; si no, gira
cond
*.nrg 2000 >
start
20 .up store
else
50 .aimdx store
stopNo hay anidamiento ni bloques: los marcadores son planos. Un cond en cualquier lugar abre un gen nuevo aunque al anterior le falte el stop, y lo que queda fuera de un gen (antes del primer marcador o entre un stop y el siguiente) no se ejecuta.
A diferencia del resto de las palabras, cond, start, else y stop se procesan siempre, aunque el gen se esté salteando, y cobran su costo cada vez. Después de cada uno el motor anota en .thisgene el número del gen en curso. end no cuesta nada: ahí se corta el recorrido.
Todo esto, con más ejemplos y la numeración de los genes, está en Genes: cond, start, else y stop. Cómo se combinan las condiciones está en Condiciones en línea.