rem: Token* tok; assert(tokens_head); tok = tokens_head; if (tokens_head == tokens_tail) { tokens_head = tokens_tail = (Token*) NULL; } else { tokens_head = tokens_head->next; } FreeToken(tok); token_index++;
add: FreeToken(pop_head_token());
context: void free_head_token() {    Token* tok;    assert(tokens_head);    tok = tokens_head;    if (tokens_head == tokens_tail) {        tokens_head = tokens_tail = (Token*) NULL;    } else {        tokens_head = tokens_head->next;    }    FreeToken(tok);    token_index++;}