summaryrefslogtreecommitdiff
path: root/module
diff options
context:
space:
mode:
authorKonstantin Kirik (snegovick) <snegovick@uprojects.org>2025-12-13 05:10:17 +0300
committerKonstantin Kirik (snegovick) <snegovick@uprojects.org>2025-12-13 05:10:17 +0300
commit70c48bade8529b4b5f762754db96982c8c95c31a (patch)
treea4c8bc098ecba5bd88fedbbf536ba0d3d0f2fa52 /module
parent9d5b2a5363d5052a8ef08ad2b3fe4d56994cac20 (diff)
Add parser context
Diffstat (limited to 'module')
-rw-r--r--module/sh9parser.m24
1 files changed, 23 insertions, 1 deletions
diff --git a/module/sh9parser.m b/module/sh9parser.m
index 0807105..22d3f09 100644
--- a/module/sh9parser.m
+++ b/module/sh9parser.m
@@ -19,11 +19,33 @@ TokNode: adt {
typ: string;
};
+ModProc: adt {
+ name: string;
+ start: int;
+};
+
+ModVar: adt {
+ name: string;
+ val: string;
+};
+
+ShModule: adt {
+ name: string;
+ vars: list of ref ModVar;
+ procs: list of ref ModProc;
+};
+
+ParserCtx: adt {
+ modules: list of ref ShModule;
+ add_module: fn(ctx: self ref ParserCtx, name: string);
+};
+
GrammarNode: adt {
expr: array of string;
transform: string;
- callback: ref fn(toks: array of ref TokNode);
+ callback: ref fn(ctx: ref ParserCtx, toks: array of ref TokNode): array of ref TokNode;
+ ctx: ref ParserCtx;
print_expr: fn(gn: self ref GrammarNode);
};
};