$NetBSD: patch-aw,v 1.1 2010/12/17 09:40:14 wiz Exp $ From upstream SVN. --- src/libmojave-external/util/lm_lexer.ml.orig 2007-01-25 18:31:18 UTC +++ src/libmojave-external/util/lm_lexer.ml @@ -1325,10 +1325,8 @@ struct * Expressions. *) let pp_print_exp buf exp = - let { exp_clauses = clauses; - exp_id = id - } = exp - in + let clauses = exp.exp_clauses in + let id = exp.exp_id in fprintf buf "Id: %d" id; List.iter (fun (action, id, regex) -> fprintf buf "@ @[Clause:@ id = %d@ action = %a@ @[regex =@ %a@]@]" (**) @@ -1370,10 +1368,8 @@ struct let add_clause_exp exp action s = let regex = regex_of_string s in let arity = regex_arg_count 0 regex in - let { exp_clauses = clauses; - exp_id = id - } = exp - in + let clauses = exp.exp_clauses in + let id = exp.exp_id in let exp = { exp_clauses = (action, id, regex) :: clauses; exp_id = succ id @@ -1395,11 +1391,9 @@ struct * Take the union of two expression lists. *) let union_exp exp1 exp2 = - let { exp_clauses = clauses1; - exp_id = id1 - } = exp1 - in - let { exp_clauses = clauses2 } = exp2 in + let clauses1 = exp1.exp_clauses in + let id1 = exp1.exp_id in + let clauses2 = exp2.exp_clauses in let actions = List.fold_left (fun actions (action, _, _) -> ActionSet.add actions action) ActionSet.empty clauses1 @@ -1474,20 +1468,16 @@ struct counter min final max start let pp_print_nfa_state buf nfa_state = - let { nfa_state_index = index; - nfa_state_action = action - } = nfa_state - in + let index = nfa_state.nfa_state_index in + let action = nfa_state.nfa_state_action in fprintf buf "@[NFA state %d:@ action %a@]" index pp_print_nfa_action action let pp_print_nfa buf nfa = - let { nfa_hash = hash; - nfa_start = start; - nfa_search_start = search; - nfa_search_states = search_states; - nfa_table = table - } = nfa - in + let hash = nfa.nfa_hash in + let start = nfa.nfa_start in + let search = nfa.nfa_search_start in + let search_states = nfa.nfa_search_states in + let table = nfa.nfa_table in fprintf buf "@[NFA:@ start = %a@ search = %a@ @[search-states =%a@]" (**) (pp_print_nfa_id hash) start (pp_print_nfa_id hash) search @@ -1500,7 +1490,7 @@ struct * Construct a new state. *) let nfa_state accum action = - let { nfa_index = index } = accum in + let index = accum.nfa_index in let state = { nfa_state_index = index; nfa_state_action = action @@ -1582,7 +1572,7 @@ struct in accum, info, start, start1 :: final1 :: states | RegexInterval (regex, min, max) -> - let { nfa_counter = counter } = accum in + let counter = accum.nfa_counter in let accum, start1 = nfa_state accum NfaActionNone in let accum, final1 = nfa_state accum (NfaActionIncrCounter (counter, min, final.nfa_state_index, max, start1.nfa_state_index)) @@ -1605,11 +1595,11 @@ struct (* Arguments *) | RegexArg regex -> - let { nfa_arg_index = argindex } = accum in + let argindex = accum.nfa_arg_index in let accum, final1 = nfa_state accum (NfaActionArgStop (argindex, final.nfa_state_index)) in let accum, start1 = nfa_state accum NfaActionNone in let start = set_action start (NfaActionArgStart (argindex, start1.nfa_state_index)) in - let { nfa_arg_number = argnumber } = info in + let argnumber = info.nfa_arg_number in let accum = { accum with nfa_arg_index = succ argindex } in let info = { info with nfa_arg_number = succ argnumber } in let accum, info, start1, states = @@ -1783,10 +1773,8 @@ struct fprintf buf "search-stop at %d" off let pp_print_dfa_actions nfa_hash buf action = - let { dfa_action_final = final; - dfa_action_actions = actions - } = action - in + let final = action.dfa_action_final in + let actions = action.dfa_action_actions in let () = fprintf buf "@[(action" in @@ -1798,20 +1786,16 @@ struct () in NfaStateTable.iter (fun dst action -> - let { dfa_action_src = src; - dfa_action_args = args - } = action - in + let src = action.dfa_action_src in + let args = action.dfa_action_args in fprintf buf "@ @[(%a -> %a" (pp_print_nfa_id nfa_hash) src (pp_print_nfa_id nfa_hash) dst; List.iter (fun action -> fprintf buf "@ %a" pp_print_dfa_arg_action action) args; fprintf buf ")@]") actions; fprintf buf ")@]" let pp_print_pre_actions buf action = - let { pre_action_final = final; - pre_action_args = args - } = action - in + let final = action.pre_action_final in + let args = action.pre_action_args in let () = fprintf buf "@[(pre-action@ " in @@ -1897,10 +1881,10 @@ struct * DFA actions. *) let dfa_action_is_empty action = - match action with - { dfa_action_final = None; dfa_action_actions = actions } -> - NfaStateTable.is_empty actions - | { dfa_action_final = Some _ } -> + match action.dfa_action_final with + None -> + NfaStateTable.is_empty action.dfa_action_actions + | Some _ -> false (* @@ -1920,21 +1904,15 @@ struct ArgTable.add args ArgSearch pos let dfa_eval_action dfa info action = - let { dfa_channel = channel; - dfa_args = args_table - } = info - in - let { dfa_action_final = final; - dfa_action_actions = actions - } = action - in + let channel = info.dfa_channel in + let args_table = info.dfa_args in + let final = action.dfa_action_final in + let actions = action.dfa_action_actions in let pos = Input.lex_pos channel in let args_table = NfaStateTable.map (fun action -> - let { dfa_action_src = src; - dfa_action_args = actions - } = action - in + let src = action.dfa_action_src in + let actions = action.dfa_action_args in let args = try NfaStateTable.find args_table src with Not_found -> @@ -2140,10 +2118,8 @@ struct * the DFA state. *) let close_state dfa table nids c = - let { dfa_search_states = search_states; - dfa_nfa_hash = nfa_hash - } = dfa - in + let search_states = dfa.dfa_search_states in + let nfa_hash = dfa.dfa_nfa_hash in let final, actions = List.fold_left (fun final_actions nid -> let frontier = @@ -2152,10 +2128,8 @@ struct if !debug_lexgen then eprintf "@[Frontier:@ %a@]@." (pp_print_frontier nfa_hash) frontier; NfaStateTable.fold (fun (final', actions) id action -> - let { pre_action_final = final; - pre_action_args = args - } = action - in + let final = action.pre_action_final in + let args = action.pre_action_args in let final = match final', final with Some (clause_id', _nid'), Some clause_id -> @@ -2264,11 +2238,9 @@ struct extend_args ("" :: args) (succ len1) len2 let dfa_args dfa_info lexeme = - let { dfa_start_pos = start; - dfa_stop_pos = stop; - dfa_stop_args = args - } = dfa_info - in + let start = dfa_info.dfa_start_pos in + let stop = dfa_info.dfa_stop_pos in + let args = dfa_info.dfa_stop_args in (* Get the pairs of argument info *) let info, start_pos = @@ -2326,11 +2298,9 @@ struct * Add a state to the DFA. It is initially empty. *) let dfa_find_state dfa nids = - let { dfa_map = map; - dfa_length = dfa_id; - dfa_states = states - } = dfa - in + let map = dfa.dfa_map in + let dfa_id = dfa.dfa_length in + let states = dfa.dfa_states in try DfaStateTable.find map nids with Not_found -> (* Make a new state *) @@ -2362,14 +2332,10 @@ struct * an entry in the transition table yet. *) let create_entry dfa dfa_state c = - let { dfa_dfa_hash = dfa_hash; - dfa_table = table - } = dfa - in - let { dfa_state_set = nids; - dfa_state_delta = delta - } = dfa_state - in + let dfa_hash = dfa.dfa_dfa_hash in + let table = dfa.dfa_table in + let nids = dfa_state.dfa_state_set in + let delta = dfa_state.dfa_state_delta in let frontier, actions = close_next_state dfa table (DfaState.get dfa_hash nids) c in if frontier = [] && dfa_action_is_empty actions then dfa_state.dfa_state_delta <- TransTable.add delta c DfaNoTransition @@ -2437,10 +2403,8 @@ struct let () = loop dfa_state c in (* Now figure out what happened *) - let { dfa_stop_clause = clause; - dfa_stop_pos = stop; - } = dfa_info - in + let clause = dfa_info.dfa_stop_clause in + let stop = dfa_info.dfa_stop_pos in (* * If we did not get a match, return the channel to * the starting position, and raise an exception. @@ -2489,10 +2453,8 @@ struct let () = loop dfa_state c in (* Now figure out what happened *) - let { dfa_stop_clause = clause; - dfa_stop_pos = stop; - } = dfa_info - in + let clause = dfa_info.dfa_stop_clause in + let stop = dfa_info.dfa_stop_pos in (* * If we did not get a match, return the channel to * the starting position, and raise an exception. @@ -2551,10 +2513,8 @@ struct let () = loop dfa_state c in (* Now figure out what happened *) - let { dfa_stop_clause = clause; - dfa_stop_pos = stop; - } = dfa_info - in + let clause = dfa_info.dfa_stop_clause in + let stop = dfa_info.dfa_stop_pos in (* * If we did not get a match, return all the text to * the end of the channel. @@ -2610,14 +2570,12 @@ struct if !debug_lexgen || !debug_lex then eprintf "%a@." pp_print_nfa nfa in - let { nfa_hash = nfa_hash; - nfa_table = nfa_table; - nfa_start = nfa_start; - nfa_actions = actions; - nfa_search_start = nfa_search_start; - nfa_search_states = nfa_search_states - } = nfa - in + let nfa_hash = nfa.nfa_hash in + let nfa_table = nfa.nfa_table in + let nfa_start = nfa.nfa_start in + let actions = nfa.nfa_actions in + let nfa_search_start = nfa.nfa_search_start in + let nfa_search_states = nfa.nfa_search_states in let dfa_hash = DfaState.create_state () in let nfa_start = DfaState.create dfa_hash [nfa_start] in let start = @@ -2673,8 +2631,8 @@ struct * then we have seen all the rest of the clauses too. *) let union info1 info2 = - let { lex_exp = exp1 } = info1 in - let { lex_exp = exp2 } = info2 in + let exp1 = info1.lex_exp in + let exp2 = info2.lex_exp in (* Catch degenerate cases first *) match exp1.exp_clauses, exp2.exp_clauses with [], _ -> info2 @@ -2711,7 +2669,7 @@ struct ignore (dfa_of_info info) let pp_print_lexer buf info = - let { lex_exp = exp } = info in + let exp = info.lex_exp in let dfa = dfa_of_info info in fprintf buf "@[@[Lexer:@ %a@]" pp_print_exp exp; fprintf buf "@ @[NFA:";