aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index b064f39..5a9fd56 100644
--- a/src/main.c
+++ b/src/main.c
@@ -22,6 +22,16 @@ int main(int argc, char** argv) {
strings_init(&included_files);
TokenArray* pp_tokens = preprocess(source, &included_files);
+
+ if (cli_args->preprocess_only) {
+ FILE* output_file = cli_args->output_filename ? fopen(cli_args->output_filename, "w") : stdout;
+ if (!output_file) {
+ fatal_error("Cannot open output file: %s", cli_args->output_filename);
+ }
+ print_token_to_file(output_file, pp_tokens);
+ return 0;
+ }
+
TokenArray* tokens = tokenize(pp_tokens);
Program* prog = parse(tokens);