blob: 0807105eb499439549c4ce3f0e46f6c5278adb0e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
Sh9Parser: module
{
PATH: con "/dis/lib/sh9parser.dis";
DESCR: con "Mostly generic parser for sh9";
mk_tok: fn(start: int, line: int, tok: string, typ: string) : ref TokNode;
set_last_tok: fn(last_tok: ref TokNode, toks: list of ref TokNode): (ref TokNode, list of ref TokNode);
print_toks: fn(toks: array of ref TokNode);
print_toks_short: fn(toks: array of ref TokNode);
check_grammar_node_match: fn(toks: array of ref TokNode, gn: ref GrammarNode): int;
replace_toks: fn(src: array of ref TokNode, replace_start: int, replace_len: int, replace_with: array of ref TokNode): array of ref TokNode;
parse_toks: fn(toks: array of ref TokNode, g: array of ref GrammarNode): array of ref TokNode;
init: fn();
TokNode: adt {
start: int;
line: int;
tok: string;
typ: string;
};
GrammarNode: adt {
expr: array of string;
transform: string;
callback: ref fn(toks: array of ref TokNode);
print_expr: fn(gn: self ref GrammarNode);
};
};
|