next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
Sig: Práctica: Análisis de Tipos Sup: Análisis de Tipos Ant: Comprobación de Tipos: Sentencias Err: Si hallas una errata ...


Ejemplo de Árbol Decorado

Consideremos el programa de ejemplo:
nereida:~/doc/casiano/PLBOOK/PLBOOK/code/Simple-Types/script> cat -n  prueba23.c
  1  int f(char a[10], int b) {
  2    return a[5];
  3  }
  4
  5  int h(int x) {
  6    return x*2;
  7  }
  8
  9  int g() {
 10    char x[5];
 11    int y[19][30];
 12    f(x,h(y[1][1]));
 13  }

La siguiente tabla muestra (parcialmente) el árbol decorado resultante después de la fase de análisis de tipos:

Funciones f y h Función g
PROGRAM^{0}(
  FUNCTION[f](
    RETURNINT(  # f(char a[10], 
      CHAR2INT( #   return a[5];
        VARARRAY(  # a[5]
          TERMINAL[a:2],
          INDEXSPEC(
            INUM(
              TERMINAL[5:2]
            )
          ) # INDEXSPEC
        ) # VARARRAY
      ) # CHAR2INT
    ) # RETURNINT
  ) # FUNCTION,
  FUNCTION[h]( # int h(int x)
    RETURNINT( # return x*2
      TIMES[INT:6](
        VAR( 
          TERMINAL[x:6]
        ),
        INUM(
          TERMINAL[2:6]
        )
      ) # TIMES
    ) # RETURNINT
  ) # FUNCTION,
  FUNCTION[g](
    FUNCTIONCALL( # f(x,h(y[1][1]))
      TERMINAL[f:12],
      ARGLIST(
        VAR( # char x[5]
          TERMINAL[x:12]
        ),
        FUNCTIONCALL( # h(y[1][1])
          TERMINAL[h:12],
          ARGLIST(
            VARARRAY( # y[1][1]
              TERMINAL[y:12],
              INDEXSPEC(
                INUM(
                  TERMINAL[1:12]
                ),
                INUM(
                  TERMINAL[1:12]
                )
              ) # INDEXSPEC
            ) # VARARRAY
          ) # ARGLIST
        ) # FUNCTIONCALL
      ) # ARGLIST
    ) # FUNCTIONCALL
  ) # FUNCTION
) # PROGRAM


next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
Sig: Práctica: Análisis de Tipos Sup: Análisis de Tipos Ant: Comprobación de Tipos: Sentencias Err: Si hallas una errata ...
Casiano Rodríguez León
2013-03-05