-
Notifications
You must be signed in to change notification settings - Fork 173
Closed
Labels
Milestone
Description
The C backend defines constructors, but no destructors for ASTs.
Too add a recursive deallocation procedure e.g. for grammar Calc.cf
we need to:
Add to Absyn.h
void freeExp(Exp p);
Add to Absyn.c
void freeExp (Exp p)
{
switch (p->kind)
{
case is_EAdd:
freeExp(p->u.eadd_.exp_1);
freeExp(p->u.eadd_.exp_2);
break;
case is_ESub:
freeExp(p->u.esub_.exp_1);
freeExp(p->u.esub_.exp_2);
break;
case is_EMul:
freeExp(p->u.emul_.exp_1);
freeExp(p->u.emul_.exp_2);
break;
case is_EDiv:
freeExp(p->u.ediv_.exp_1);
freeExp(p->u.ediv_.exp_2);
break;
case is_EInt:
break;
}
free(p);
}
The code could be adapted from the printer generator.