Class: Lrama::State::ResolvedConflict
- Inherits:
-
Object
- Object
- Lrama::State::ResolvedConflict
- Defined in:
- lib/lrama/state/resolved_conflict.rb
Overview
- state: A state on which the conflct is resolved
- symbol: A symbol under discussion
- reduce: A reduce under discussion
- which: For which a conflict is resolved. :shift, :reduce or :error (for nonassociative)
- resolved_by_precedence: If the conflict is resolved by precedence definition or not
Instance Attribute Summary collapse
-
#reduce ⇒ Object
readonly
: State::Action::Reduce.
-
#resolved_by_precedence ⇒ Object
readonly
: bool.
-
#state ⇒ Object
readonly
@rbs! type which_enum = :reduce | :shift | :error.
-
#symbol ⇒ Object
readonly
: Grammar::Symbol.
-
#which ⇒ Object
readonly
: which_enum.
Instance Method Summary collapse
-
#initialize(state:, symbol:, reduce:, which:, resolved_by_precedence:) ⇒ ResolvedConflict
constructor
A new instance of ResolvedConflict.
- #report_message ⇒ Object
- #report_precedences_message ⇒ Object
Constructor Details
#initialize(state:, symbol:, reduce:, which:, resolved_by_precedence:) ⇒ ResolvedConflict
Returns a new instance of ResolvedConflict.
22 23 24 25 26 27 28 |
# File 'lib/lrama/state/resolved_conflict.rb', line 22 def initialize(state:, symbol:, reduce:, which:, resolved_by_precedence:) @state = state @symbol = symbol @reduce = reduce @which = which @resolved_by_precedence = resolved_by_precedence end |
Instance Attribute Details
#reduce ⇒ Object (readonly)
: State::Action::Reduce
17 18 19 |
# File 'lib/lrama/state/resolved_conflict.rb', line 17 def reduce @reduce end |
#resolved_by_precedence ⇒ Object (readonly)
: bool
19 20 21 |
# File 'lib/lrama/state/resolved_conflict.rb', line 19 def resolved_by_precedence @resolved_by_precedence end |
#state ⇒ Object (readonly)
@rbs! type which_enum = :reduce | :shift | :error
15 16 17 |
# File 'lib/lrama/state/resolved_conflict.rb', line 15 def state @state end |
#symbol ⇒ Object (readonly)
: Grammar::Symbol
16 17 18 |
# File 'lib/lrama/state/resolved_conflict.rb', line 16 def symbol @symbol end |
#which ⇒ Object (readonly)
: which_enum
18 19 20 |
# File 'lib/lrama/state/resolved_conflict.rb', line 18 def which @which end |
Instance Method Details
#report_message ⇒ Object
31 32 33 |
# File 'lib/lrama/state/resolved_conflict.rb', line 31 def "Conflict between rule #{reduce.rule.id} and token #{symbol.display_name} #{how_resolved}." end |
#report_precedences_message ⇒ Object
36 37 38 |
# File 'lib/lrama/state/resolved_conflict.rb', line 36 def "Conflict between reduce by \"#{reduce.rule.display_name}\" and shift #{symbol.display_name} #{how_resolved}." end |