scope
y type
):
Añada las siguientes comprobaciones dependientes del contexto al compilador de Simple C:
RETURN
con el nodo de la subrutina que lo engloba.
Añádale un atributo al nodo RETURN
que indique el tipo que la rutina debe retornar.
CONTINUE
y cada nodo BREAK
con el nodo
del bucle que lo engloba. Indique el error si la sentencia (CONTINUE
o BREAK
) no esta dentro de un bucle. Añada a dichos nodos
un atributo
que referencia al nodo del bucle que lo engloba.
goto
al lenguaje Simple C.
Toda etiqueta va asociada con una sentencia.
La sintáxis de statement debe ser extendida para incluir sentencias etiquetadas:
statement: expression ';' { $_[1] } | ';' | %name BREAK $BREAK ';' { ... } | %name CONTINUE $CONTINUE ';' { ... } | 'goto' ID ';' | ID ':' statement { ... } ;
Las siguientes indicaciones tienen por objeto ayudarle en el análisis de ámbito de etiquetas:
Parse::Eyapp::Scope->new
end_scope
(al terminar el análisis de la función) deberá decorar automáticamente el nodo GOTO con la referencia a la sentencia asociada con la etiqueta