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 |