/* * pop symbol table identifiers at this level symbol_right_bracket(); */ void symbol_right_bracket( void) { CLIPS *clips; /* * print the complete symbol table before poping symbols off */ #ifdef YYDEBUG if( IS_FLAGS_SYMBOL( data.flags)) { printf( "pop symbol table level: %d\n", data.level); print_symbol_table(); } #endif /* * check and remove all clips above level */ for( clips = data.symbol_table; clips; clips = data.symbol_table) { if( clips->level < data.level) break; put_address( clips->address); data.symbol_table = clips->next; de_clips( clips); } /* * decrement the symbol table level */ data.level--; return; }
/* * deallocate a clips linked list */ void de_clips_list( CLIPS *clips) { CLIPS *clips_next; /* * deallocate the clips linked list structure */ while( clips) { clips_next = clips->next; de_clips( clips); clips = clips_next; } return; }