class Antlr4::Runtime::DFASerializer

Public Instance Methods

edge_label(i) click to toggle source
# File lib/antlr4/runtime/dfa_serializer.rb, line 40
def edge_label(i)
  @vocabulary.display_name(i - 1)
end
init_from_token_names(dfa, token_names) click to toggle source
# File lib/antlr4/runtime/dfa_serializer.rb, line 4
def init_from_token_names(dfa, token_names)
  init_from_vocabulary(dfa, VocabularyImpl.from_token_names(token_names))
end
init_from_vocabulary(dfa, vocabulary) click to toggle source
# File lib/antlr4/runtime/dfa_serializer.rb, line 8
def init_from_vocabulary(dfa, vocabulary)
  @dfa = dfa
  @vocabulary = vocabulary
end
state_string(s) click to toggle source
# File lib/antlr4/runtime/dfa_serializer.rb, line 44
def state_string(s)
  n = s.state_number
  base_state_str = (s.is_accept_state ? ':' : '') << 's' << n.to_s << (s.requires_full_context ? '^' : '')
  if s.is_accept_state
    if !s.predicates.nil?
      preds = ''
      s.predicates.each do |p|
        preds << p.to_s
      end

      return base_state_str << '=>' << preds
    else
      return base_state_str << '=>' << @vocabulary.symbolic_name(s.prediction)
    end
  end
  base_state_str
end
to_s() click to toggle source
# File lib/antlr4/runtime/dfa_serializer.rb, line 13
def to_s
  return nil if @dfa.s0.nil?

  buf = ''
  states = @dfa.get_states
  states.each do |s|
    n = 0
    n = s.edges.length unless s.edges.nil?
    i = 0
    while i < n
      t = s.edges[i]
      if !t.nil? && t.state_number != Integer::MAX
        buf << state_string(s)
        label = edge_label(i)
        buf << '-' << label << '->' << state_string(t) << '\n'
      end
      i += 1
    end
  end

  output = buf
  return '' if output.empty?

  # return Utils.sortLinesInString(output)
  output
end