Extend your language: Difference between revisions

m
Line 213:
 
#defn Siambassonverdaderas(_X_,_Y_) ##CODEIF,__firstop__=0;#ATOM#CMPLX;cpy(__firstop__),\
__secondop__=0;#ATOM#CMPLX;cpy(__secondop__);and;jnt(#ENDIF),\
and;jnt(#ENDIF),
#defn Essólolaprimeraopción jmp(%%CODEIF), %ENDIF:, {__firstop__}, jnt(#ENDIF),
#defn Essólolasegundaopción jmp(%%CODEIF), %ENDIF:, {__secondop__}, jnt(#ENDIF),
Line 238 ⟶ 239:
<pre>La segunda opción es verdadera</pre>
 
<p>Ejemplo #2:</p>
<p>El preprocesador de HOPPER permite extender la estructura "IF" (o "SI" es español), a cualquier número de expresiones lógicas como opción:
</p>
<syntaxhighlight lang="bennugd">
Line 246 ⟶ 247:
#defn Sitodassonverdaderas(*) ##CODEIF,{1},#GENCODE $$$*$$$ opción#ITV=0;\
#ATCMLIST;cpy(opción#ITV);and;#ENDGEN;,jnt(#ENDIF)
#defn Sonverdaderas(*) jmp(%%CODEIF), %ENDIF:, {1}, #GENCODE $$$*$$$ #ATCMLIST;and;#ENDGEN;jnt(#ENDIF),\
#ATCMLIST;and;#ENDGEN;jnt(#ENDIF),
#defn Esla(_X_) jmp(%%CODEIF), %ENDIF:, {_X_}, jnt(#ENDIF),
#defn Sonverdaderaslasopciones(*) jmp(%%CODEIF), %ENDIF:,{1};#GENCODE $$$*$$$ opción#ITV;and;#ENDGEN;jnt(#ENDIF),\
and;#ENDGEN;jnt(#ENDIF),
#synon EndIf FindelSi
 
Line 277 ⟶ 280:
<pre>Son verdaderas V, X e Y</pre>
 
<p>Ejemplo #3:</p>
<p>Aquí sólo la macro "»" que significa "CPY" (copia el valor de memoria a la variable indicada pero sin removerlo) permite extender el uso de "IF" (que también es una macro que extiende el lenguaje base), de acuerdo al ejemplo:</p>
<syntaxhighlight lang="bennugd">
#include <jambo.h>
543

edits