/[svn]/runtime/run_dispatch.ml
ViewVC logotype

Diff of /runtime/run_dispatch.ml

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

revision 231 by abate, Tue Jul 10 17:17:09 2007 UTC revision 232 by abate, Tue Jul 10 17:17:12 2007 UTC
# Line 34  Line 34 
34      ) r in      ) r in
35    (code,ret)    (code,ret)
36    
37    let tail_string i j s q =
38      if i + 1 = j then q else String (i + 1,j,s,q)
39    let make_result_string i j s q r1 r2 (code,r) =
40      let ret = Array.map
41        (function
42           | Catch -> String (i,j,s,q)
43           | Const c -> const c
44           | Left n -> if (n < 0) then Char (Chars.mk_char s.[i]) else r1.(n)
45           | Right m -> if (m < 0) then tail_string i j s q else r2.(m)
46           | Recompose (n,m) ->
47               Pair ((if (n < 0) then Char (Chars.mk_char s.[i]) else r1.(n)),
48                     (if (m < 0) then tail_string i j s q else r2.(m)))
49        ) r in
50      (code,ret)
51    
52    
53  let rec run_disp_basic v f =  function  let rec run_disp_basic v f =  function
54    | [(_,r)] -> make_result_basic v r    | [(_,r)] -> make_result_basic v r
55    | (t,r)::rem -> if f t then make_result_basic v r else run_disp_basic v f rem    | (t,r)::rem -> if f t then make_result_basic v r else run_disp_basic v f rem
# Line 153  Line 169 
169  and run_disp_string2 r1 i j s q = function  and run_disp_string2 r1 i j s q = function
170    | Impossible -> assert false    | Impossible -> assert false
171    | Ignore r ->    | Ignore r ->
172        make_result_prod Absent (* *) r1 Absent dummy_r Absent r        make_result_string i j s q r1 dummy_r r
173    | TailCall d2 -> run_disp_string_loop i j s q d2    | TailCall d2 -> run_disp_string_loop i j s q d2
174    | Dispatch (d2,b2) ->    | Dispatch (d2,b2) ->
175        let (code2,r2) = run_disp_string_loop i j s q d2 in        let (code2,r2) = run_disp_string_loop i j s q d2 in
176        make_result_prod Absent (* *) r1 Absent r2 Absent b2.(code2)        make_result_string i j s q r1 r2 b2.(code2)
177  and run_disp_string_loop i j s q d =  and run_disp_string_loop i j s q d =
178    match actions d with    match actions d with
179      | AIgnore r -> make_result_basic Absent r      | AIgnore r -> make_result_basic Absent r

Legend:
Removed from v.231  
changed lines
  Added in v.232

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