class Antlr4::Runtime::DFA

Attributes

atn_start_state[R]
decision[R]
precedence_dfa[R]
s0[RW]
states[RW]

Public Class Methods

new(atn_start_state, decision = 0) click to toggle source
# File lib/antlr4/runtime/dfa.rb, line 10
def initialize(atn_start_state, decision = 0)
  @atn_start_state = atn_start_state
  @decision = decision
  @states = {}

  @precedence_dfa = false
  if atn_start_state.is_a? StarLoopEntryState
    if atn_start_state.is_precedence_pecision
      @precedence_dfa = true
      precedence_state = DFAState.new(ATNConfigSet.new)
      precedence_state.edges = []
      precedence_state.is_accept_state = false
      precedence_state.requires_full_context = false
      @s0 = precedence_state
    end
  end

end

Public Instance Methods

get_states() click to toggle source
# File lib/antlr4/runtime/dfa.rb, line 60
def get_states
  result = @states.keys
  result.sort! {|i, j| i.state_number - j.state_number}

  result
end
precedence_dfa?() click to toggle source
# File lib/antlr4/runtime/dfa.rb, line 29
def precedence_dfa?
  @precedence_dfa
end
precedence_start_state(precedence) click to toggle source
# File lib/antlr4/runtime/dfa.rb, line 33
def precedence_start_state(precedence)
  unless @precedence_dfa
    raise IllegalStateException, 'Only precedence DFAs may contain a precedence start state.'
  end

  # s0.edges is never nil for a precedence DFA
  return nil if precedence < 0 || precedence >= @s0.edges.length

  @s0.edges[precedence]
end
precedence_start_state2(precedence, start_state) click to toggle source
# File lib/antlr4/runtime/dfa.rb, line 44
def precedence_start_state2(precedence, start_state)
  unless @precedence_dfa
    raise IllegalStateException, 'Only precedence DFAs may contain a precedence start state.'
  end

  return if precedence < 0

  @s0.edges[precedence] = start_state
end
set_precedence_dfa(precedence_dfa) click to toggle source
# File lib/antlr4/runtime/dfa.rb, line 54
def set_precedence_dfa(precedence_dfa)
  if precedence_dfa != @precedence_dfa
    raise UnsupportedOperationException, 'The precedence_dfa field cannot change after a DFA is constructed.'
  end
end
to_lexer_string() click to toggle source
# File lib/antlr4/runtime/dfa.rb, line 87
def to_lexer_string
  return '' if @s0.nil?

  serializer = LexerDFASerializer.new(self)
  serializer.to_s
end
to_s() click to toggle source
# File lib/antlr4/runtime/dfa.rb, line 67
def to_s
  to_s2(VocabularyImpl.EMPTY_VOCABULARY)
end
to_s1(token_names) click to toggle source
# File lib/antlr4/runtime/dfa.rb, line 71
def to_s1(token_names)
  return '' if @s0.nil?

  serializer = DFASerializer.new
  serializer.init_from_token_names(self, token_names)
  serializer.to_s
end
to_s2(vocabulary) click to toggle source
# File lib/antlr4/runtime/dfa.rb, line 79
def to_s2(vocabulary)
  return '' if @s0.nil?

  serializer = DFASerializer.new
  serializer.init_from_vocabulary(self, vocabulary)
  serializer.to_s
end