diff options
| author | hachem <im@hachem.wtf> | 2026-08-31 00:19:10 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-31 00:19:10 +0200 |
| commit | 3e20038bbf7206e2270655418d7884ccfe91a4e4 (patch) | |
| tree | dfc7bf806a00c1dbec6c889351c108702a0e9d40 /src/sema | |
| parent | 8eac30c13cfa4f47a8a0aa0772b96f0813fe33a5 (diff) | |
add directives and directive based entry points
Diffstat (limited to 'src/sema')
| -rw-r--r-- | src/sema/sema.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/sema/sema.c b/src/sema/sema.c index 99ec4f1..55f4a93 100644 --- a/src/sema/sema.c +++ b/src/sema/sema.c @@ -49,14 +49,16 @@ static bool check_duplicate_names(struct Program* program) static bool check_entry_point(struct Program* program) { + if (!program->config.has_entry) + return true; + + struct Token entry = program->config.entry; for (size_t i = 0; i < program->proc_count; i += 1) - { - struct Token name = program->procs[i].name; - if (name.length == 4 && memcmp(name.start, "main", 4) == 0) + if (names_equal(program->procs[i].name, entry)) return true; - } - fprintf(stderr, "error: no 'main' procedure defined\n"); + fprintf(stderr, "error: line %u: entry point '%.*s' is not defined\n", + entry.line, (int)entry.length, entry.start); return false; } |
