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