Expresiones de Tipo en Simple C

En las secciones anteriores dedicadas al análisis de ámbito introdujimos nuestro lenguaje de expresiones de tipo.

Así la expresión F(X_2(INT,CHAR),INT) describe el tipo de las funciones de 2 parámetros que devuelven enteros. El primer parámetro debe ser entero y el segundo un carácter.

Otro ejemplo es la expresión de tipo A_10(A_20(INT)) que describe un vector 10x20 de enteros.

Ejercicio 6.3.1   Describa la gramática independiente del contexto que genera las expresiones de tipo usadas por el compilador de Simple C tal y como fueron presentadas en las secciones previas

Observe que en tanto en cuanto las expresiones de tipo son frases de un lenguaje - cuya semántica es describir los tipos del lenguaje fuente - tiene un árbol sintáctico asociado. En las secciones anteriores sobre el análisis de ámbito presentamos una versión inicial de las expresiones de tipo y las utilizamos mediante una representación dual: como cadena y como árbol. Para ello usábamos el método Parse::Eyapp::Node->new el cual nos permite obtener una representación árbol de la expresión de tipo. En un contexto escalar este método devuelve la referencia al árbol sintáctico construido:

nereida:~/src/perl/testing> perl -MParse::Eyapp::Node -de 0
Loading DB routines from perl5db.pl version 1.28
Editor support available.
main::(-e:1):   0
  DB<1> x scalar(Parse::Eyapp::Node->new('F(X_2(INT,CHAR),INT)'))
0  F=HASH(0x859fb58)
   'children' => ARRAY(0x85d52ec)
      0  X_2=HASH(0x859fb70)
         'children' => ARRAY(0x859fb28)
            0  INT=HASH(0x85a569c)
               'children' => ARRAY(0x852cc84)
                    empty array
            1  CHAR=HASH(0x859fb34)
               'children' => ARRAY(0x850a7cc)
                    empty array
      1  INT=HASH(0x859fabc)
         'children' => ARRAY(0x852c9d8)
              empty array

Casiano Rodríguez León
2009-12-09