main
parse.sats
1staload "scan.sats"
2
3vtypedef binding = @{
4 key = Strptr1,
5 value = List0_vt(stringpart)
6}
7
8vtypedef rule = @{
9 name = Strptr1,
10 bindings = List0_vt(binding)
11}
12
13vtypedef edge = @{
14 output = List1_vt(Strptr1),
15 rule = Strptr1,
16 input = List0_vt(Strptr1),
17 bindings = List0_vt(binding)
18}
19
20vtypedef manifest = @{
21 rules = List0_vt(rule),
22 edges = List0_vt(edge),
23 variables = List0_vt(binding)
24}
25
26fun manifest_free(m: manifest): void
27fun printrule(rules: !List0_vt(rule)): void
28fun parse(s: &scanner, rules: List0_vt(rule), edges: List0_vt(edge), variables: List0_vt(binding)): manifest
29