40 lines
736 B
C
40 lines
736 B
C
#include <math.h>
|
|
#include <stdio.h>
|
|
|
|
#include "prog1.h"
|
|
|
|
int maxargs(A_stm statement)
|
|
{
|
|
switch (statement->kind) {
|
|
case A_compoundStm: {
|
|
int a = maxargs(statement->u.compound.stm1);
|
|
int b = maxargs(statement->u.compound.stm2);
|
|
return a > b ? a : b;
|
|
break;
|
|
}
|
|
case A_assignStm: {
|
|
if (statement->u.assign.exp->kind == A_eseqExp) {
|
|
return maxargs(statement->u.assign.exp->u.eseq.stm);
|
|
}
|
|
}
|
|
case A_printStm: {
|
|
int sum = 1;
|
|
A_expList expList = statement->u.print.exps;
|
|
while (expList->kind == A_pairExpList) {
|
|
sum++;
|
|
expList = expList->u.pair.tail;
|
|
}
|
|
return sum;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
A_stm program = prog();
|
|
int result = maxargs(program);
|
|
printf("maxargs: %d\n", result);
|
|
}
|