diff options
Diffstat (limited to 'module/sh9parser.m')
| -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); }; }; |
