Class: Antlr4ruby::DFA

Inherits:
Object
  • Object
show all
Defined in:
lib/antlr4ruby/dfa/dfa.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(atn_start_state, decision = 0) ⇒ DFA



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/antlr4ruby/dfa/dfa.rb', line 8

def initialize(atn_start_state, decision = 0)
  super()
  @atn_start_state = atn_start_state
  @decision = decision

  precedence_dfa = false
  if @atn_start_state.instance_of?(StarLoopEntryState)
    if @atn_start_state.is_precedence_decision
      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

  @precedence_dfa = precedence_dfa

end

Instance Attribute Details

#atn_start_stateObject

Returns the value of attribute atn_start_state.



3
4
5
# File 'lib/antlr4ruby/dfa/dfa.rb', line 3

def atn_start_state
  @atn_start_state
end

#decisionObject

Returns the value of attribute decision.



3
4
5
# File 'lib/antlr4ruby/dfa/dfa.rb', line 3

def decision
  @decision
end

#s0Object

Returns the value of attribute s0.



3
4
5
# File 'lib/antlr4ruby/dfa/dfa.rb', line 3

def s0
  @s0
end

#statesObject

Returns the value of attribute states.



3
4
5
# File 'lib/antlr4ruby/dfa/dfa.rb', line 3

def states
  @states
end

Instance Method Details

#get_precedence_start_state(precedence) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/antlr4ruby/dfa/dfa.rb', line 34

def get_precedence_start_state(precedence)
  unless is_precedence_dfa
    # todo 抛出一个异常

  end

  s0.edges[precedence]
end

#get_statesObject



58
59
60
# File 'lib/antlr4ruby/dfa/dfa.rb', line 58

def get_states
  # todo

end

#is_precedence_dfaObject



30
31
32
# File 'lib/antlr4ruby/dfa/dfa.rb', line 30

def is_precedence_dfa
  @precedence_dfa
end

#set_precedence_start_state(precedence, start_state) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/antlr4ruby/dfa/dfa.rb', line 42

def set_precedence_start_state(precedence, start_state)
  unless is_precedence_dfa
    # todo 抛出一个异常

  end

  if precedence < 0
    return
  end

  if precedence >= s0.edges.length
    # todo 再检查一下 Arrays.copyOf 是什么意思

    s0.edges = Array.slice(0, precedence + 1)
  end
  s0.edges[precedence] = start_state
end

#to_lexer_stringObject



62
63
64
# File 'lib/antlr4ruby/dfa/dfa.rb', line 62

def to_lexer_string
  # todo

end