Forester def of \def [fst-0005]

Forester 的 def 语法定义大致摘抄自 ocaml-forester 中的 lib/frontend/Grammar.mly

%token <string> IDENT
let ident :=
| ident = IDENT;
 { String.split_on_char '/' ident }

let bvar :=
| x = TEXT; { [x] }
let binder == list(squares(bvar))

let textual_expr == list(locate(textual_node))
let arg == braces(textual_expr)
let textual_node :=
| ~ = TEXT; <Code.Text>
| ~ = WHITESPACE; <Code.Text>
| ~ = head_node; <Fun.id>

let fun_spec == ~ = ident; ~ = binder; ~ = arg; <>

let head_node :=
(* ... *)
| DEF; (~,~,~) = fun_spec; <Code.Def>