Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions bootstrap/bin/hocc/aplr.ml
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ let remergeable_actions states remergeables frontiers spines =
-> begin
(* All states in the mergeable set must either have an empty action set or identical
* nonempty action set. Note that these are post-conflict-resolution action sets; were
* they pre-conflict-resolution action sets, the equivalent remergeability test would
* require identical dominant actions (or identical [possibly unresolvable] action
* sets). *)
* they pre-conflict-resolution action sets (i.e. conflict resolution to be performed
* after remerging), the equivalent remergeability test would require identical
* dominant actions (or identical [possibly unresolvable] action sets). *)
match reduces_only action_set with
| false -> remergeables, frontiers, NotRemergeable spines
| true -> begin
Expand Down
27 changes: 15 additions & 12 deletions bootstrap/bin/hocc/aplr.mli
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,18 @@ val remerge_states: Io.t -> Symbols.t -> Isocores.t -> State.t array
to be remergeable, every state pair's pairwise out-transitions must meet at least one of the
following criteria:

- The successor state indexes are equal, i.e. no successor state splitting is present.
- The successor states are transitively remergeable. Note that cycles of arbitrary length may
occur.
- State [X₀] takes no action for a symbol [s], and state [X₁] performs only reduction(s) for
symbol [s]. Furthermore, for more than two states to be remergeable, all additional states
must contain either no actions on symbol [s], or actions identical to those of state [X₁].
(This formulation assumes operation on post-conflict-resolution states; the corresponding
pre-conflict-resolution algorithm requires identical conflict resolution results.)
- State [X₀] contains no goto for a symbol [s], and state [X₁] does contain a goto for symbol
[s]. Furthermore, for more than two states to be remergeable, all additional states must
contain either no goto for symbol [s], or a goto successor that is remergeable with that of
state [X₁]. *)
- Shifts:
+ The successor state indexes are equal.
+ The successor states are transitively remergeable.
- Reductions:
+ The states perform identical reductions.
+ State `X₀` takes no action for a symbol `s`, and state `X₁` performs only reduction(s) for
symbol `s`. Furthermore, for more than two states to be remergeable, all additional states
must contain either no actions on symbol `s`, or actions identical to those of state `X₁`.
- Gotos:
+ The successor state indexes are equal.
+ The successor states are transitively remergeable.
+ State `X₀` contains no goto for a symbol `s`, and state `X₁` does contain a goto for symbol
`s`. Furthermore, for more than two states to be remergeable, all additional states must
contain either no goto for symbol `s`, or a goto successor that is remergeable with that of
state `X₁`. *)
Loading
Loading