Skip to content

Commit

Permalink
Complete Contribs -> Attribs refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
Jason Evans committed May 9, 2024
1 parent 2990bd9 commit 463e630
Show file tree
Hide file tree
Showing 31 changed files with 337 additions and 336 deletions.
20 changes: 10 additions & 10 deletions bootstrap/bin/hocc/attrib.ml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ module T = struct
|> Uns.hash_fold 5L |> Contrib.hash_fold contrib

let cmp
{conflict_state_index=csi0; symbol_index=s0; conflict=x0; isucc_lr1itemset=is0; contrib=c0}
{conflict_state_index=csi1; symbol_index=s1; conflict=x1; isucc_lr1itemset=is1; contrib=c1} =
{conflict_state_index=csi0; symbol_index=s0; conflict=x0; isucc_lr1itemset=is0; contrib=c0}
{conflict_state_index=csi1; symbol_index=s1; conflict=x1; isucc_lr1itemset=is1; contrib=c1} =
let open Cmp in
match StateIndex.cmp csi0 csi1 with
| Lt -> Lt
Expand All @@ -43,15 +43,15 @@ module T = struct
| Gt -> Gt

let equal_keys
{conflict_state_index=csi0; symbol_index=s0; conflict=x0; _}
{conflict_state_index=csi1; symbol_index=s1; conflict=x1; _} =
{conflict_state_index=csi0; symbol_index=s0; conflict=x0; _}
{conflict_state_index=csi1; symbol_index=s1; conflict=x1; _} =
StateIndex.(csi0 = csi1) &&
Symbol.Index.(s0 = s1) &&
Contrib.(x0 = x1)

let equal
({isucc_lr1itemset=is0; contrib=c0; _} as t0)
({isucc_lr1itemset=is1; contrib=c1; _} as t1) =
({isucc_lr1itemset=is0; contrib=c0; _} as t0)
({isucc_lr1itemset=is1; contrib=c1; _} as t1) =
assert (equal_keys t0 t1);
Lr0Itemset.equal (Lr1Itemset.core is0) (Lr1Itemset.core is1) && Contrib.equal c0 c1

Expand Down Expand Up @@ -93,17 +93,17 @@ module T = struct
Contrib.is_empty contrib

let union
{conflict_state_index=csi0; symbol_index=s0; conflict=x0; isucc_lr1itemset=is0; contrib=c0}
{conflict_state_index=csi1; symbol_index=s1; conflict=x1; isucc_lr1itemset=is1; contrib=c1} =
{conflict_state_index=csi0; symbol_index=s0; conflict=x0; isucc_lr1itemset=is0; contrib=c0}
{conflict_state_index=csi1; symbol_index=s1; conflict=x1; isucc_lr1itemset=is1; contrib=c1} =
assert StateIndex.(csi0 = csi1);
assert Symbol.Index.(s0 = s1);
assert Contrib.(x0 = x1);
init ~conflict_state_index:csi0 ~symbol_index:s0 ~conflict:x0
~isucc_lr1itemset:(Lr1Itemset.union is0 is1) ~contrib:(Contrib.union c0 c1)

let inter
{conflict_state_index=csi0; symbol_index=s0; conflict=x0; isucc_lr1itemset=is0; contrib=c0}
{conflict_state_index=csi1; symbol_index=s1; conflict=x1; isucc_lr1itemset=is1; contrib=c1} =
{conflict_state_index=csi0; symbol_index=s0; conflict=x0; isucc_lr1itemset=is0; contrib=c0}
{conflict_state_index=csi1; symbol_index=s1; conflict=x1; isucc_lr1itemset=is1; contrib=c1} =
assert StateIndex.(csi0 = csi1);
assert Symbol.Index.(s0 = s1);
assert Contrib.(x0 = x1);
Expand Down
4 changes: 2 additions & 2 deletions bootstrap/bin/hocc/attribs.mli
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(** Conflict-state-invariant map of attributions of conflict contributions on symbols. *)
(** Conflict contribution attributions map, i.e. (conflict state, symbol) -> attrib. *)

open Basis
open! Basis.Rudiments
Expand Down Expand Up @@ -68,7 +68,7 @@ val union: t -> t -> t
(** [union t0 t1] returns the union of conflict attributions in [t0] and [t1]. *)

val reindex: (StateIndex.t, StateIndex.t, StateIndex.cmper_witness) Map.t -> t -> t
(** [reindex index_map t] creates contribs with all state indexes translated according to
(** [reindex index_map t] creates attribs with all state indexes translated according to
[index_map], where keys are the original indexes, and values are the reindexed indexes. *)

val fold_until: init:'accum -> f:('accum -> Attrib.t -> 'accum * bool) -> t -> 'accum
Expand Down
10 changes: 5 additions & 5 deletions bootstrap/bin/hocc/gotoNub.ml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ open! Basis.Rudiments
module T = struct
type t = {
goto: Lr1Itemset.t;
transit_contribs: TransitContribs.t;
transit_attribs: TransitAttribs.t;
attribs: Attribs.t;
}

Expand All @@ -14,18 +14,18 @@ module T = struct
let cmp {goto=g0; _} {goto=g1; _} =
Lr1Itemset.cmp g0 g1

let pp {goto; transit_contribs; attribs} formatter =
let pp {goto; transit_attribs; attribs} formatter =
formatter
|> Fmt.fmt "{goto=" |> Lr1Itemset.pp goto
|> Fmt.fmt "; transit_contribs=" |> TransitContribs.pp transit_contribs
|> Fmt.fmt "; transit_attribs=" |> TransitAttribs.pp transit_attribs
|> Fmt.fmt "; attribs=" |> Attribs.pp attribs
|> Fmt.fmt "}"
end
include T
include Identifiable.Make(T)

let init ~goto ~transit_contribs =
{goto; transit_contribs; attribs=TransitContribs.attribs goto transit_contribs}
let init ~goto ~transit_attribs =
{goto; transit_attribs; attribs=TransitAttribs.attribs goto transit_attribs}

let core {goto; _} =
Lr1Itemset.core goto
12 changes: 6 additions & 6 deletions bootstrap/bin/hocc/gotoNub.mli
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,18 @@ type t = {
goto: Lr1Itemset.t;
(** Goto state kernel. *)

transit_contribs: TransitContribs.t;
(** Transit conflict contributions. *)
transit_attribs: TransitAttribs.t;
(** Transit conflict attributions. *)

attribs: Attribs.t;
(** Memoized attribs computed for `goto` in the context of `transit_contribs`. *)
(** Memoized attribs computed for [goto] in the context of [transit_attribs]. *)
}

include IdentifiableIntf.S with type t := t

val init: goto:Lr1Itemset.t -> transit_contribs:TransitContribs.t -> t
(** [init ~goto ~transit_contribs] initializes a goto nub with given [goto] kernel and conflict
[transits_contribs]. *)
val init: goto:Lr1Itemset.t -> transit_attribs:TransitAttribs.t -> t
(** [init ~goto ~transit_attribs] initializes a goto nub with given [goto] kernel and conflict
[transit_attribs]. *)

val core: t -> Lr0Itemset.t
(** [core t] returns the LR(0) item set corresponding to the goto kernel in [t], i.e. the goto
Expand Down
Loading

0 comments on commit 463e630

Please sign in to comment.