diff options
| author | Konstantin Kirik (snegovick) <snegovick@uprojects.org> | 2025-12-13 05:10:17 +0300 |
|---|---|---|
| committer | Konstantin Kirik (snegovick) <snegovick@uprojects.org> | 2025-12-13 05:10:17 +0300 |
| commit | 70c48bade8529b4b5f762754db96982c8c95c31a (patch) | |
| tree | a4c8bc098ecba5bd88fedbbf536ba0d3d0f2fa52 /module | |
| parent | 9d5b2a5363d5052a8ef08ad2b3fe4d56994cac20 (diff) | |
Add parser context
Diffstat (limited to 'module')
| -rw-r--r-- | module/sh9parser.m | 24 |
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); }; }; |
