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

Diff of /parser/parser.ml

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

revision 158 by abate, Tue Jul 10 17:10:43 2007 UTC revision 159 by abate, Tue Jul 10 17:11:29 2007 UTC
# Line 259  Line 259 
259      | "simple" [ x = pat; "&"; y = pat -> mk loc (And (x,y))      | "simple" [ x = pat; "&"; y = pat -> mk loc (And (x,y))
260                 | x = pat; "\\"; y = pat -> mk loc (Diff (x,y)) ]                 | x = pat; "\\"; y = pat -> mk loc (Diff (x,y)) ]
261      |      |
262        [ "{"; r = record_spec; "}" -> r        [ "{"; r = record_spec; "}" -> mk loc (Record (true,r))
263          | "{|"; r = record_spec; "|}" -> mk loc (Record (false,r))
264        | LIDENT "_" -> mk loc (Internal Types.any)        | LIDENT "_" -> mk loc (Internal Types.any)
265        | a = LIDENT -> mk loc (Capture a)        | a = LIDENT -> mk loc (Capture a)
266        | "("; a = LIDENT; ":="; c = const; ")" -> mk loc (Constant (a,c))        | "("; a = LIDENT; ":="; c = const; ")" -> mk loc (Constant (a,c))
# Line 313  Line 314 
314    record_spec:    record_spec:
315      [ [ r = LIST0 [ l = [LIDENT | UIDENT]; "=";      [ [ r = LIST0 [ l = [LIDENT | UIDENT]; "=";
316                    o = [ "?" -> true | -> false];                    o = [ "?" -> true | -> false];
317                    x = pat ->                    x = pat -> (Types.LabelPool.mk l,o,x)
                     mk loc (Record (Types.LabelPool.mk l,o,x))  
318                  ] SEP ";" ->                  ] SEP ";" ->
319          match r with            (* TODO: check here uniqueness *)
320            | [] -> mk loc (Internal Types.Record.any)            List.sort (fun (l1,_,_) (l2,_,_) -> compare l1 l2) r
           | h::t -> List.fold_left (fun t1 t2 -> mk loc (And (t1,t2))) h t  
321        ] ];        ] ];
322    
323    char:    char:
# Line 337  Line 336 
336    
337    
338    attrib_spec:    attrib_spec:
339      [ [ r = record_spec -> r | "("; t = pat; ")" -> t ] ];      [ [ r = record_spec -> mk loc (Record (true,r))
340          | "("; t = pat; ")" -> t ] ];
341    
342    expr_record_spec:    expr_record_spec:
343      [ [ r = LIST1      [ [ r = LIST1

Legend:
Removed from v.158  
changed lines
  Added in v.159

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