| 108 |
[ e1 = expr; op = ["+" | "-" | "@"]; e2 = expr -> mk loc (Op (op,[e1;e2])) |
[ e1 = expr; op = ["+" | "-" | "@"]; e2 = expr -> mk loc (Op (op,[e1;e2])) |
| 109 |
] |
] |
| 110 |
| |
| |
| 111 |
|
[ e1 = expr; "++"; "{"; l = [LIDENT | UIDENT]; "="; e = expr; "}" -> |
| 112 |
|
assert false |
| 113 |
|
] |
| 114 |
|
| |
| 115 |
[ e1 = expr; op = ["*"]; e2 = expr -> mk loc (Op (op,[e1;e2])) |
[ e1 = expr; op = ["*"]; e2 = expr -> mk loc (Op (op,[e1;e2])) |
| 116 |
| e = expr; op = "/"; p = pat -> |
| e = expr; op = "/"; p = pat -> |
| 117 |
|
|
| 326 |
record_spec: |
record_spec: |
| 327 |
[ [ r = LIST0 [ l = [LIDENT | UIDENT]; "="; |
[ [ r = LIST0 [ l = [LIDENT | UIDENT]; "="; |
| 328 |
o = [ "?" -> true | -> false]; |
o = [ "?" -> true | -> false]; |
| 329 |
x = pat -> (Types.LabelPool.mk l,o,x) |
x = pat -> |
| 330 |
|
let x = if o then mk loc (Optional x) else x in |
| 331 |
|
(Types.LabelPool.mk l, x) |
| 332 |
] SEP ";" -> |
] SEP ";" -> |
| 333 |
(* TODO: check here uniqueness *) |
(* TODO: check here uniqueness *) |
| 334 |
List.sort (fun (l1,_,_) (l2,_,_) -> compare l1 l2) r |
List.sort (fun (l1,_) (l2,_) -> compare l1 l2) r |
| 335 |
] ]; |
] ]; |
| 336 |
|
|
| 337 |
char: |
char: |