aboutsummaryrefslogtreecommitdiff
path: root/src/sema
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-31 00:19:10 +0200
committerhachem <im@hachem.wtf>2026-08-31 00:19:10 +0200
commit3e20038bbf7206e2270655418d7884ccfe91a4e4 (patch)
treedfc7bf806a00c1dbec6c889351c108702a0e9d40 /src/sema
parent8eac30c13cfa4f47a8a0aa0772b96f0813fe33a5 (diff)
add directives and directive based entry points
Diffstat (limited to 'src/sema')
-rw-r--r--src/sema/sema.c12
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;
}