/[svn]/parser/parser.ml
ViewVC logotype

Diff of /parser/parser.ml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 88 by abate, Tue Jul 10 17:04:54 2007 UTC revision 89 by abate, Tue Jul 10 17:05:13 2007 UTC
# Line 24  Line 24 
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    
# Line 124  Line 127 
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 ];
# Line 134  Line 141 
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    

Legend:
Removed from v.88  
changed lines
  Added in v.89

CVS Admin">CVS Admin
ViewVC Help
Powered by ViewVC 1.1.5