| 24 |
| x :: l -> mk (x.loc) (Pair (x, tuple loc l)) |
| x :: l -> mk (x.loc) (Pair (x, tuple loc l)) |
| 25 |
| [] -> assert false |
| [] -> assert false |
| 26 |
|
|
| 27 |
|
let tuple_queue = |
| 28 |
|
List.fold_right (fun x q -> mk x.loc (Pair (x, q))) |
| 29 |
|
|
| 30 |
let char = mk noloc (Internal (Types.char Chars.any)) |
let char = mk noloc (Internal (Types.char Chars.any)) |
| 31 |
let string_regexp = Star (Elem char) |
let string_regexp = Star (Elem char) |
| 32 |
|
|
| 127 |
| "("; l = LIST1 expr SEP ","; ")" -> tuple loc l |
| "("; l = LIST1 expr SEP ","; ")" -> tuple loc l |
| 128 |
| "["; l = LIST0 seq_elem; e = OPT [ ";"; e = expr -> e ]; "]" -> |
| "["; l = LIST0 seq_elem; e = OPT [ ";"; e = expr -> e ]; "]" -> |
| 129 |
let e = match e with Some e -> e | None -> cst_nil in |
let e = match e with Some e -> e | None -> cst_nil in |
| 130 |
let l = List.flatten l in |
List.fold_right |
| 131 |
tuple loc (l @ [e]) |
(fun x q -> |
| 132 |
|
match x with |
| 133 |
|
| `Elems l -> tuple_queue l q |
| 134 |
|
| `Explode x -> mk x.loc (Op ("@",[x;q])) |
| 135 |
|
) l e |
| 136 |
| t = [ a = TAG -> |
| t = [ a = TAG -> |
| 137 |
mk loc (Cst (Types.Atom (Types.AtomPool.mk a))) |
mk loc (Cst (Types.Atom (Types.AtomPool.mk a))) |
| 138 |
| "<"; e = expr LEVEL "no_appl" -> e ]; |
| "<"; e = expr LEVEL "no_appl" -> e ]; |
| 141 |
| "{"; r = [ expr_record_spec | -> mk loc (RecordLitt []) ]; "}" -> r |
| "{"; r = [ expr_record_spec | -> mk loc (RecordLitt []) ]; "}" -> r |
| 142 |
| s = STRING2 -> |
| s = STRING2 -> |
| 143 |
tuple loc (char_list loc s @ [cst_nil]) |
tuple loc (char_list loc s @ [cst_nil]) |
| 144 |
| "!"; t = pat -> mk loc (DebugTyper t) |
(* | "!"; t = pat -> mk loc (DebugTyper t) *) |
| 145 |
| a = LIDENT -> mk loc (Var a) |
| a = LIDENT -> mk loc (Var a) |
| 146 |
] |
] |
| 147 |
|
|
| 148 |
]; |
]; |
| 149 |
|
|
| 150 |
seq_elem: [ |
seq_elem: [ |
| 151 |
[ x = STRING1 -> char_list loc x |
[ x = STRING1 -> `Elems (char_list loc x) |
| 152 |
| e = expr LEVEL "no_appl" -> [e] |
| e = expr LEVEL "no_appl" -> `Elems [e] |
| 153 |
|
| "!"; e = expr LEVEL "no_appl" -> `Explode e |
| 154 |
] |
] |
| 155 |
]; |
]; |
| 156 |
|
|