summaryrefslogtreecommitdiff
path: root/module
diff options
context:
space:
mode:
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);
};
};