2024-09-21 11:32:56 -04:00

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);
}