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

Diff of /parser/parser.ml

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

revision 52 by abate, Tue Jul 10 17:01:20 2007 UTC revision 54 by abate, Tue Jul 10 17:01:32 2007 UTC
# Line 65  Line 65 
65          mk loc (Abstraction { fun_name = f; fun_iface = a; fun_body = b })          mk loc (Abstraction { fun_name = f; fun_iface = a; fun_body = b })
66      | (p,e1) = let_binding; "in"; e2 = expr LEVEL "top"->      | (p,e1) = let_binding; "in"; e2 = expr LEVEL "top"->
67          mk loc (Match (e1,[p,e2]))          mk loc (Match (e1,[p,e2]))
68        | e = expr; ":"; p = pat ->
69            mk loc (Forget (e,p))
70      ]      ]
71    
72    
# Line 109  Line 111 
111    
112    let_binding: [    let_binding: [
113      [ "let"; p = pat; "="; e = expr -> (p,e)      [ "let"; p = pat; "="; e = expr -> (p,e)
114        | "let"; p = pat; ":"; t = pat; "="; e = expr -> (p, mk noloc (Forget (e,t)))
115      | "let"; "fun"; (f,a,b) = fun_decl ->      | "let"; "fun"; (f,a,b) = fun_decl ->
116          let p = match f with          let p = match f with
117            | Some x -> mk loc (Capture x)            | Some x -> mk loc (Capture x)
# Line 175  Line 178 
178              -> mk loc (Recurs (x,b)) ]              -> mk loc (Recurs (x,b)) ]
179      | RIGHTA [ x = pat; "->"; y = pat -> mk loc (Arrow (x,y)) ]      | RIGHTA [ x = pat; "->"; y = pat -> mk loc (Arrow (x,y)) ]
180      | "no_arrow" [ x = pat; "|"; y = pat -> mk loc (Or (x,y)) ]      | "no_arrow" [ x = pat; "|"; y = pat -> mk loc (Or (x,y)) ]
181      | "simple" [ x = pat; "&"; y = pat -> mk loc (And (x,y))      | "simple" [ x = pat; "&"; y = pat -> mk loc (And (x,y,true))
182    (*             | x = pat; ":"; y = pat -> mk loc (And (x,y,false))   *)
183        | x = pat; "-"; y = pat -> mk loc (Diff (x,y)) ]        | x = pat; "-"; y = pat -> mk loc (Diff (x,y)) ]
184      |      |
185        [ "{"; r = record_spec; "}" -> r        [ "{"; r = record_spec; "}" -> r
# Line 220  Line 224 
224                  ] SEP ";" ->                  ] SEP ";" ->
225          match r with          match r with
226            | [] -> mk loc (Internal Types.Record.any)            | [] -> mk loc (Internal Types.Record.any)
227            | h::t -> List.fold_left (fun t1 t2 -> mk loc (And (t1,t2))) h t            | h::t -> List.fold_left (fun t1 t2 -> mk loc (And (t1,t2,true))) h t
228        ] ];        ] ];
229    
230    char:    char:

Legend:
Removed from v.52  
changed lines
  Added in v.54

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