Skip to content

Commit

Permalink
Testing preprocessed outputs
Browse files Browse the repository at this point in the history
  • Loading branch information
keyvank committed Nov 12, 2024
1 parent 7614717 commit 41b0349
Show file tree
Hide file tree
Showing 25 changed files with 2,363 additions and 29 deletions.
24 changes: 16 additions & 8 deletions main.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ char *read_source_file(FILE *fp);
(p) = NULL; \
} while (0)

int lex = 0;

typed_token *process(const char *filename, int depth)
typed_token *process(const char *filename, int depth, int log_lex, int log_prep)
{
typed_token *tkn = NULL;
char *content = NULL;
Expand All @@ -50,7 +48,7 @@ typed_token *process(const char *filename, int depth)
}

tkn = tokenize(content);
if (lex)
if (log_lex)
{
typed_token *t = tkn;
while (t)
Expand All @@ -60,6 +58,15 @@ typed_token *process(const char *filename, int depth)
}
}
tkn = preprocess(tkn, filename, depth);
if (log_prep)
{
typed_token *t = tkn;
while (t)
{
t->debug(t);
t = t->next;
}
}

cleanup:
if (fp)
Expand All @@ -73,18 +80,19 @@ int main(int argc, char *argv[])
{
if (argc != 3)
{
fprintf(stderr, "Usage: %s <filename> <mode> (<mode>: --lex, --asm or --tree)\n", argv[0]);
fprintf(stderr, "Usage: %s <filename> <mode> (<mode>: --lex, --prep, --asm or --tree)\n", argv[0]);
return 1;
}

if (strcmp(argv[2], "--lex") != 0 && strcmp(argv[2], "--asm") != 0 && strcmp(argv[2], "--tree") != 0) {
if (strcmp(argv[2], "--lex") != 0 && strcmp(argv[2], "--asm") != 0 && strcmp(argv[2], "--tree") != 0&& strcmp(argv[2], "--prep") != 0) {
fprintf(stderr, "Unknown argument %s", argv[2]);
return 1;
}

lex = !strcmp(argv[2], "--lex");
int log_lex = !strcmp(argv[2], "--lex");
int log_prep = !strcmp(argv[2], "--prep");

typed_token *tkn = process(argv[1], 0);
typed_token *tkn = process(argv[1], 0, log_lex, log_prep);
if (tkn == NULL)
{
return 1;
Expand Down
3 changes: 2 additions & 1 deletion scripts/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"./examples/inp_preprocess.c",
"./examples/inp_pointer.c",
"./examples/switch.c",
"./examples/inp_arg_macro.c",
]
C_PROGRAM_NAME = "./a.out"
OUTPUT_FOLDER = "tests/output"
Expand Down Expand Up @@ -109,7 +110,7 @@ def main():

diff_count = 0
for test_file in TEST_FILES:
for mode in ['lex', 'tree', 'asm']:
for mode in ['lex', 'prep', 'tree', 'asm']:
output_file = os.path.join(
OUTPUT_FOLDER, f"{os.path.basename(test_file)}_{mode}_output.txt"
)
Expand Down
59 changes: 59 additions & 0 deletions tests/output/inp.c_prep_output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
TKN_VOID
TKN_ID(printf)
TKN_L_PAREN
TKN_CHAR
TKN_STAR
TKN_COMMA
TKN_DOTS
TKN_R_PAREN
TKN_SEMICOLON
TKN_INT
TKN_ID(main)
TKN_L_PAREN
TKN_R_PAREN
TKN_L_BRACE
TKN_INT
TKN_ID(i)
TKN_ASSIGN
TKN_LIT_INT(10)
TKN_SEMICOLON
TKN_FOR
TKN_L_PAREN
TKN_INT
TKN_ID(i)
TKN_ASSIGN
TKN_LIT_INT(0)
TKN_SEMICOLON
TKN_ID(i)
TKN_LT
TKN_LIT_INT(5)
TKN_SEMICOLON
TKN_ID(i)
TKN_ASSIGN
TKN_ID(i)
TKN_PLUS
TKN_LIT_INT(1)
TKN_R_PAREN
TKN_L_BRACE
TKN_INT
TKN_ID(i)
TKN_ASSIGN
TKN_LIT_INT(2)
TKN_SEMICOLON
TKN_ID(printf)
TKN_L_PAREN
TKN_LIT_STR(%u )
TKN_COMMA
TKN_ID(i)
TKN_R_PAREN
TKN_SEMICOLON
TKN_R_BRACE
TKN_ID(printf)
TKN_L_PAREN
TKN_LIT_STR(%u )
TKN_COMMA
TKN_ID(i)
TKN_R_PAREN
TKN_SEMICOLON
TKN_R_BRACE
TKN_EOF
Loading

0 comments on commit 41b0349

Please sign in to comment.