icono letras

Lenguaje C--

Macros y utilidades

Núm. página

Definición de subprogramas 1'

type stars*V:nombre(){
Y:nombre(){
unsigned int V:nombre(){
Y:nombre(){
float V:nombre(){
F:nombre(){
V:nombre(){
   texto1
}
texto2
EOF
texto2
$V:nombre(){
   texto1
}
EOF
  1. retvp
    • lit
    • V’n
  2. retv
    signretvp
return;
:ret
return retv1;
&R:ret = retv1;
return;
id

Señales que pone el expansor.

  1. W
    • V
    • N
$W:nombre(){
   texto1
}
:def_subp:{
   #definec $R W 
   texto1
   Z:i = *Y:top;ret
   :rest_vals:i
   1:npnpos
}
rest_vals
:rest_vals:
Z:top--;
Z.r1 = *Y:top;
Z:top--;
Z.r2 = *Y:top;
Z:top--;
Z.and = *Y:top;
Z:top--;
Z.or = *Y:top;
Z:top--;
Z.ob1 = *Y:top;
Z:top--;
Z.op1 = *Y:top;
Z:top--;
Z.brk = *Y:top;
Z:top--;
Z.sw = *Y:top;
Z:top--;
Z:top = *Y:top;
def_subp{texto1}

Sea m el natural asociado a num_position. El expansor:

  1. asocia 1 a num_position.
  2. expande las macroinstrucciones en texto1 hasta obtener preinstrucciones1.
  3. sustituye return por una señal, sea k, y todas las apariciones de return en preinstrucciones1 por k.
  4. sustituye la última preinstrucción, 1np, por 1n, donde n es el natural asociado a num_position.
  5. sustituye npos por una señal, sea p, y todas las apariciones de npos en preinstrucciones1 por p.
  6. asocia m a num_position.

Expansiones finales 1’’

Si se usan macroinstrucciones def_subp, el expansor, en las expansiones finales:

  1. antes de añadir la preinstrucción 1top añade una preinstrucción 1n, donde n es el natural asociado a num_position.
  2. añade una señal $npos. apuntando a esta preinstrucción.
  3. sustituye las apariciones de npos en cualquier preinstrucción por $npos.
  4. por cada señal id1 presente:

    1. la sustituye por una señal natural; sea ésta i.
    2. sustituye las apariciones de id1 en cualquier preinstrucción por i.
Núm. página