Token *read_token(void) { if (ungotten) { Token *tok = ungotten; ungotten = NULL; return tok; } return read_token_int(); }
Token *read_token(ReadContext *readctx) { if (!LIST_IS_EMPTY(readctx->ungotten)) return list_pop(readctx->ungotten); for (;;) { Token *tok = read_token_int(readctx->cppctx); if (!tok) return NULL; if (tok->toktype == TOKTYPE_NEWLINE) continue; return cpp_token_to_token(tok); } }
void cpp_write(CppContext *ctx, FILE *out) { bool is_bol = true; for (;;) { Token *tok = read_token_int(ctx); if (!tok) return; if (tok->toktype == TOKTYPE_NEWLINE) { fprintf(out, "\n"); is_bol = true; continue; } write_cpp_token(out, tok, is_bol); is_bol = false; } }