void free_FactList( FactList *source ) { if ( source ) { free_FactList( source->next ); free_TokenList( source->item ); free( source ); } }
void free_PlNode( PlNode *node ) { if ( node ) { free_PlNode( node->sons ); free_PlNode( node->next ); free_TokenList( node->atom ); free( node ); } }
void free_ParseExpNode( ParseExpNode *n ) { if ( n ) { free_TokenList( n->atom ); free_ParseExpNode( n->leftson ); free_ParseExpNode( n->rightson ); free( n ); } }
void free_TokenList( TokenList *source ) { if ( source ) { free_TokenList( source->next ); if ( source->item ) { free( source->item ); } free( source ); } }
void free_TypedList( TypedList *t ) { if ( t ) { if ( t->name ) { free( t->name ); t->name = NULL; } if ( t->type ) { free_TokenList( t->type ); t->type = NULL; } free_TypedList( t->next ); free( t ); } }