

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
|

