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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
open Base
open Prelude
type node =
| Text of string
| Group of delim * t
| Math of math_mode * t
| Link of {dest : t; title : t option}
| Transclude of addr
| Subtree of addr option * tree
| Query of t Query.t
| Embed_tex of {preamble : t; source : t}
| Lam of Symbol.t list * t
| Var of Symbol.t
| Put of Symbol.t * t * t
| Default of Symbol.t * t * t
| Get of Symbol.t
| If_tex of t * t
| Xml_tag of string * (string * t) list * t
| Unresolved of string
| Prim of Prim.t * t
| Object of {self : Symbol.t; methods: (string * t) list}
| Patch of {obj : t; self : Symbol.t; super : Symbol.t; methods : (string * t) list}
| Call of t * string
| Ref of t
| Title of t
| Parent of addr
| Taxon of string
| Meta of string * t
| Author of string
| Contributor of string
| Tag of string
| Date of string
| Number of string
[@@deriving show]
and t = node Range.located list
[@@deriving show]
and tree = t