summaryrefslogtreecommitdiff
path: root/src/parser.c
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-06-29 20:29:36 -0400
committerLLLL Colonq <llll@colonq>2026-06-29 20:29:36 -0400
commit8909986b89eaac74bb4cd8dc7019f96e4f650470 (patch)
treede2865d7d7fffefddb38c7d36e556f67e305f6c1 /src/parser.c
parent3324b894adfc06d88c65ea7cb70d98a446f733d5 (diff)
Initial annotations
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/parser.c b/src/parser.c
index 77b4172..002641e 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -3,6 +3,8 @@
#include <lcq/pit/parser.h>
#include <lcq/pit/runtime.h>
+#include <stdio.h>
+
static pit_lex_token peek(pit_parser *st) {
if (!st) return PIT_LEX_TOKEN_ERROR;
return st->next.token;
@@ -106,6 +108,14 @@ pit_value pit_parse(pit_runtime *rt, pit_parser *st, bool *eof) {
ret = pit_cons(rt, *v, ret);
}
rt->scratch->next = scratch_reset;
+ if (pit_value_sort(ret) == PIT_VALUE_SORT_REF) {
+ fprintf(stderr, "adding annotation (%ld): ", pit_as_ref(rt, ret));
+ pit_trace_(rt, "%s\n", ret);
+ pit_expr_annotations_push(rt->annotations,
+ pit_as_ref(rt, ret),
+ rt->source_line, rt->source_column
+ );
+ }
return ret;
}
case PIT_LEX_TOKEN_LSQUARE: {