- let trans0 = Ata.get_trans auto auto.Ata.states tag in
- let parent_states = if parent == T.nil then auto.Ata.top_states else get cache tree parent in
- let fc_states = if fc == T.nil then auto.Ata.bottom_states else get cache tree fc in
- let ns_states = if ns == T.nil then auto.Ata.bottom_states else get cache tree ns in
- let is_root = parent == T.nil in
- let ctx0 =
- if is_left then
- Ata.make_ctx fc_states ns_states parent_states StateSet.empty states0 is_left is_root
- else
- Ata.make_ctx fc_states ns_states StateSet.empty parent_states states0 is_left is_root
+ let states0 = get cache tree node in
+ let trans0 = Ata.get_trans auto tag auto.Ata.states in
+ let () =
+ TRACE(Html.trace (T.preorder tree node) _i "Pre States: %a<br/>Pre Trans: %a<br/>"
+ StateSet.print states0 (Ata.TransList.print ~sep:"<br/>") trans0)
+ in
+ let ps = get cache tree parent in
+ let fcs = get cache tree fc in
+ let nss = get cache tree ns in
+ let is_left = node == T.first_child tree parent
+ and is_right = node == T.next_sibling tree parent
+ and has_left = fc != T.nil
+ and has_right = ns != T.nil
+ and kind = T.kind tree node
+ in
+ let trans1, states1 =
+ Ata.eval_trans auto trans0
+ fcs nss ps states0
+ is_left is_right has_left has_right kind
+ in
+ let () =
+ TRACE(Html.trace (T.preorder tree node) _i "TD States: %a<br/>TD Trans: %a<br/>" StateSet.print states1 (Ata.TransList.print ~sep:"<br/>") trans1)