- [ p1 = SELF; SYMBOL "\\sub"; p2 = SELF ->
- return_term loc (Ast.Layout (Ast.Sub (p1, p2)))
- | p1 = SELF; SYMBOL "\\sup"; p2 = SELF ->
- return_term loc (Ast.Layout (Ast.Sup (p1, p2)))
- | p1 = SELF; SYMBOL "\\below"; p2 = SELF ->
- return_term loc (Ast.Layout (Ast.Below (p1, p2)))
- | p1 = SELF; SYMBOL "\\above"; p2 = SELF ->
- return_term loc (Ast.Layout (Ast.Above (p1, p2)))
- | p1 = SELF; SYMBOL "\\over"; p2 = SELF ->
- return_term loc (Ast.Layout (Ast.Over (p1, p2)))
- | p1 = SELF; SYMBOL "\\atop"; p2 = SELF ->
- return_term loc (Ast.Layout (Ast.Atop (p1, p2)))
-(* | "array"; p = SELF; csep = OPT field_sep; rsep = OPT row_sep ->
- return_term loc (Array (p, csep, rsep)) *)
- | SYMBOL "\\frac"; p1 = SELF; p2 = SELF ->
- return_term loc (Ast.Layout (Ast.Frac (p1, p2)))
- | SYMBOL "\\sqrt"; p = SELF -> return_term loc (Ast.Layout (Ast.Sqrt p))
- | SYMBOL "\\root"; index = SELF; SYMBOL "\\of"; arg = SELF ->
- return_term loc (Ast.Layout (Ast.Root (arg, index)))
+ [ p1 = SELF; SYMBOL "\\sub "; p2 = SELF ->
+ return_term_of_level loc
+ (fun l -> Ast.Layout (Ast.Sub (p1 l, p2 l)))
+ | p1 = SELF; SYMBOL "\\sup "; p2 = SELF ->
+ return_term_of_level loc
+ (fun l -> Ast.Layout (Ast.Sup (p1 l, p2 l)))
+ | p1 = SELF; SYMBOL "\\below "; p2 = SELF ->
+ return_term_of_level loc
+ (fun l -> Ast.Layout (Ast.Below (p1 l, p2 l)))
+ | p1 = SELF; SYMBOL "\\above "; p2 = SELF ->
+ return_term_of_level loc
+ (fun l -> Ast.Layout (Ast.Above (p1 l, p2 l)))
+ | p1 = SELF; SYMBOL "\\over "; p2 = SELF ->
+ return_term_of_level loc
+ (fun l -> Ast.Layout (Ast.Over (p1 l, p2 l)))
+ | p1 = SELF; SYMBOL "\\atop "; p2 = SELF ->
+ return_term_of_level loc
+ (fun l -> Ast.Layout (Ast.Atop (p1 l, p2 l)))
+ | p1 = SELF; SYMBOL "\\frac "; p2 = SELF ->
+ return_term_of_level loc
+ (fun l -> Ast.Layout (Ast.Frac (p1 l, p2 l)))
+ | SYMBOL "\\infrule "; p1 = SELF; p2 = SELF; p3 = SELF ->
+ return_term_of_level loc
+ (fun l -> Ast.Layout (Ast.InfRule (p1 l, p2 l, p3 l)))
+ | SYMBOL "\\sqrt "; p = SELF ->
+ return_term_of_level loc (fun l -> Ast.Layout (Ast.Sqrt p l))
+ | SYMBOL "\\root "; index = SELF; SYMBOL "\\of "; arg = SELF ->
+ return_term_of_level loc
+ (fun l -> Ast.Layout (Ast.Root (arg l, index l)))