X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fxpath%2Fcompile.ml;h=c53057e6c5e2d69fabf102c43e4758c8c19baaed;hp=8ab26fbd2475a2dc4a5cf30c3e218b4c7caae6ba;hb=af9d790ca62e678e8e70ab8d8fa7f804985a75e0;hpb=90ce5857f6cad2ebc753fdbc8e37882a1ff47415 diff --git a/src/xpath/compile.ml b/src/xpath/compile.ml index 8ab26fb..c53057e 100644 --- a/src/xpath/compile.ml +++ b/src/xpath/compile.ml @@ -43,7 +43,7 @@ let compile_axis_test axis (test,kind) phi trans states = let q = State.make () in let phi = match kind with Tree.NodeKind.Node -> phi - | _ -> phi %% F.mk_kind kind + | _ -> phi %% F.is kind in let phi', trans', states' = match axis with @@ -229,11 +229,13 @@ let path p = in (StateSet.add ms ams), natrs, nasts) (StateSet.empty, [], StateSet.empty) p in - let a = Ata.create states mstates in + let builder = Ata.Builder.make () in + StateSet.iter + (Ata.Builder.add_state builder ~selecting:true) mstates; + StateSet.iter + (Ata.Builder.add_state builder) states; List.iter (fun (q, l) -> List.iter (fun (lab, phi) -> - Ata.add_trans a q lab phi + Ata.Builder.add_trans builder q lab phi ) l) trans; - Ata.complete_transitions a; - Ata.normalize_negations a; - a + Ata.Builder.finalize builder