From 70c48bade8529b4b5f762754db96982c8c95c31a Mon Sep 17 00:00:00 2001 From: "Konstantin Kirik (snegovick)" Date: Sat, 13 Dec 2025 05:10:17 +0300 Subject: Add parser context --- module/sh9parser.m | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'module') 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); }; }; -- cgit v1.2.3