Example #1
0
Token *read_token(void) {
  if (ungotten) {
    Token *tok = ungotten;
    ungotten = NULL;
    return tok;
  }
  return read_token_int();
}
Example #2
0
File: cpp.c Project: rui314/8cc-old
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);
    }
}
Example #3
0
File: cpp.c Project: rui314/8cc-old
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;
    }
}