test.c 1011 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include "lexer.h"
  4. #include "cpp.h"
  5. #include "parser.h"
  6. int main(int argc, char* argv[]) {
  7. cpp_tu_t* tu = calloc(1, sizeof(*tu));
  8. // need to pre-define __X86_64__
  9. // VEC_PUSH(&tu->system_inc_dirs, "/");
  10. VEC_PUSH(&tu->system_inc_dirs, "/usr/include/");
  11. VEC_PUSH(&tu->system_inc_dirs, "/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.1/include/");
  12. preprocess_file(tu, NULL, "./sample.c", 0);
  13. // preprocess_file(tu, NULL, "/usr/include/stdint.h", 1);
  14. ast_tu_t* atu = calloc(1, sizeof(*atu));
  15. atu->cpp = tu;
  16. c_parser_tu(tu, atu);
  17. /*
  18. cpp_context_t* ctx = tu->root_ctx;
  19. printf("\noutput:\n");
  20. int was_ws = 0;
  21. VEC_EACH(&ctx->out->tokens, i, t) {
  22. if(t->type == LEXER_TOK_COMMENT) {}
  23. else if(t->type == LEXER_TOK_SPACE) {
  24. if(was_ws) continue;
  25. printf(" ");
  26. was_ws = 1;
  27. if(t->has_newline) printf("\n");
  28. }
  29. else {
  30. printf("%s ", t->text);
  31. was_ws = 0;
  32. if(t->has_newline) printf("\n");
  33. }
  34. }
  35. printf("\n");
  36. */
  37. return 0;
  38. }