Class: Lrama::State::ResolvedConflict

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#reduceObject (readonly)

: State::Action::Reduce



17
18
19
# File 'lib/lrama/state/resolved_conflict.rb', line 17

def reduce
  @reduce
end

#resolved_by_precedenceObject (readonly)

: bool



19
20
21
# File 'lib/lrama/state/resolved_conflict.rb', line 19

def resolved_by_precedence
  @resolved_by_precedence
end

#stateObject (readonly)

@rbs! type which_enum = :reduce | :shift | :error



15
16
17
# File 'lib/lrama/state/resolved_conflict.rb', line 15

def state
  @state
end

#symbolObject (readonly)

: Grammar::Symbol



16
17
18
# File 'lib/lrama/state/resolved_conflict.rb', line 16

def symbol
  @symbol
end

#whichObject (readonly)

: which_enum



18
19
20
# File 'lib/lrama/state/resolved_conflict.rb', line 18

def which
  @which
end

Instance Method Details

#report_messageObject



31
32
33
# File 'lib/lrama/state/resolved_conflict.rb', line 31

def report_message
  "Conflict between rule #{reduce.rule.id} and token #{symbol.display_name} #{how_resolved}."
end

#report_precedences_messageObject



36
37
38
# File 'lib/lrama/state/resolved_conflict.rb', line 36

def report_precedences_message
  "Conflict between reduce by \"#{reduce.rule.display_name}\" and shift #{symbol.display_name} #{how_resolved}."
end