lrama 0.6.10 → 0.6.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yaml +5 -1
  3. data/Gemfile +2 -2
  4. data/NEWS.md +65 -30
  5. data/Steepfile +3 -0
  6. data/doc/development/compressed_state_table/main.md +635 -0
  7. data/doc/development/compressed_state_table/parse.output +174 -0
  8. data/doc/development/compressed_state_table/parse.y +22 -0
  9. data/doc/development/compressed_state_table/parser.rb +282 -0
  10. data/lib/lrama/bitmap.rb +1 -1
  11. data/lib/lrama/context.rb +3 -3
  12. data/lib/lrama/counterexamples/derivation.rb +6 -5
  13. data/lib/lrama/counterexamples/example.rb +7 -4
  14. data/lib/lrama/counterexamples/path.rb +4 -0
  15. data/lib/lrama/counterexamples.rb +19 -9
  16. data/lib/lrama/grammar/parameterizing_rule/rhs.rb +1 -1
  17. data/lib/lrama/grammar/rule_builder.rb +1 -1
  18. data/lib/lrama/grammar/symbols/resolver.rb +4 -0
  19. data/lib/lrama/grammar.rb +2 -2
  20. data/lib/lrama/lexer/token/user_code.rb +1 -1
  21. data/lib/lrama/lexer.rb +1 -0
  22. data/lib/lrama/parser.rb +520 -487
  23. data/lib/lrama/state/reduce.rb +2 -3
  24. data/lib/lrama/version.rb +1 -1
  25. data/parser.y +38 -27
  26. data/rbs_collection.lock.yaml +10 -2
  27. data/sig/lrama/counterexamples/derivation.rbs +33 -0
  28. data/sig/lrama/counterexamples/example.rbs +45 -0
  29. data/sig/lrama/counterexamples/path.rbs +21 -0
  30. data/sig/lrama/counterexamples/production_path.rbs +11 -0
  31. data/sig/lrama/counterexamples/start_path.rbs +13 -0
  32. data/sig/lrama/counterexamples/state_item.rbs +10 -0
  33. data/sig/lrama/counterexamples/transition_path.rbs +11 -0
  34. data/sig/lrama/counterexamples/triple.rbs +20 -0
  35. data/sig/lrama/counterexamples.rbs +29 -0
  36. data/sig/lrama/grammar/symbol.rbs +1 -1
  37. data/sig/lrama/grammar/symbols/resolver.rbs +3 -3
  38. data/sig/lrama/grammar.rbs +13 -0
  39. data/sig/lrama/state/reduce_reduce_conflict.rbs +2 -2
  40. data/sig/lrama/state.rbs +79 -0
  41. data/sig/lrama/states.rbs +101 -0
  42. metadata +17 -2
@@ -26,9 +26,8 @@ module Lrama
26
26
  end
27
27
 
28
28
  def selected_look_ahead
29
- if @look_ahead
30
- # @type ivar @look_ahead: Array<Grammar::Symbol>
31
- @look_ahead - @not_selected_symbols
29
+ if look_ahead
30
+ look_ahead - @not_selected_symbols
32
31
  else
33
32
  []
34
33
  end
data/lib/lrama/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lrama
4
- VERSION = "0.6.10".freeze
4
+ VERSION = "0.6.11".freeze
5
5
  end
data/parser.y CHANGED
@@ -61,26 +61,26 @@ rule
61
61
  | symbol_declaration
62
62
  | rule_declaration
63
63
  | inline_declaration
64
- | "%destructor" param generic_symbol+
64
+ | "%destructor" param (symbol | TAG)+
65
65
  {
66
66
  @grammar.add_destructor(
67
- ident_or_tags: val[2],
67
+ ident_or_tags: val[2].flatten,
68
68
  token_code: val[1],
69
69
  lineno: val[1].line
70
70
  )
71
71
  }
72
- | "%printer" param generic_symbol+
72
+ | "%printer" param (symbol | TAG)+
73
73
  {
74
74
  @grammar.add_printer(
75
- ident_or_tags: val[2],
75
+ ident_or_tags: val[2].flatten,
76
76
  token_code: val[1],
77
77
  lineno: val[1].line
78
78
  )
79
79
  }
80
- | "%error-token" param generic_symbol+
80
+ | "%error-token" param (symbol | TAG)+
81
81
  {
82
82
  @grammar.add_error_token(
83
- ident_or_tags: val[2],
83
+ ident_or_tags: val[2].flatten,
84
84
  token_code: val[1],
85
85
  lineno: val[1].line
86
86
  )
@@ -115,6 +115,18 @@ rule
115
115
  }
116
116
  }
117
117
  }
118
+ | "%nterm" symbol_declarations
119
+ {
120
+ val[1].each {|hash|
121
+ hash[:tokens].each {|id|
122
+ if @grammar.find_term_by_s_value(id.s_value)
123
+ on_action_error("symbol #{id.s_value} redeclared as a nonterminal", id)
124
+ else
125
+ @grammar.add_type(id: id, tag: hash[:tag])
126
+ end
127
+ }
128
+ }
129
+ }
118
130
  | "%left" token_declarations_for_precedence
119
131
  {
120
132
  val[1].each {|hash|
@@ -156,13 +168,7 @@ rule
156
168
  @precedence_number += 1
157
169
  }
158
170
 
159
- token_declarations: token_declaration+
160
- {
161
- val[0].each {|token_declaration|
162
- @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: nil, replace: true)
163
- }
164
- }
165
- | TAG token_declaration+
171
+ token_declarations: TAG? token_declaration+
166
172
  {
167
173
  val[1].each {|token_declaration|
168
174
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[0], replace: true)
@@ -208,7 +214,7 @@ rule
208
214
  result = val[0].append(builder)
209
215
  }
210
216
 
211
- rule_rhs: empty
217
+ rule_rhs: "%empty"?
212
218
  {
213
219
  reset_precs
214
220
  result = Grammar::ParameterizingRule::Rhs.new
@@ -250,11 +256,16 @@ rule
250
256
  result = builder
251
257
  }
252
258
 
253
- alias: # empty
254
- | string_as_id { result = val[0].s_value }
259
+ alias: string_as_id? { result = val[0].s_value if val[0] }
255
260
 
256
- symbol_declarations: symbol+ { result = [{tag: nil, tokens: val[0]}] }
257
- | TAG symbol+ { result = [{tag: val[0], tokens: val[1]}] }
261
+ symbol_declarations: TAG? symbol+
262
+ {
263
+ result = if val[0]
264
+ [{tag: val[0], tokens: val[1]}]
265
+ else
266
+ [{tag: nil, tokens: val[1]}]
267
+ end
268
+ }
258
269
  | symbol_declarations TAG symbol+ { result = val[0].append({tag: val[1], tokens: val[2]}) }
259
270
 
260
271
  symbol: id
@@ -311,7 +322,7 @@ rule
311
322
  result = val[0].append(builder)
312
323
  }
313
324
 
314
- rhs: empty
325
+ rhs: "%empty"?
315
326
  {
316
327
  reset_precs
317
328
  result = @grammar.create_rule_builder(@rule_counter, @midrule_action_counter)
@@ -362,9 +373,15 @@ rule
362
373
  | "+" { result = "nonempty_list" }
363
374
  | "*" { result = "list" }
364
375
 
365
- parameterizing_args: symbol { result = [val[0]] }
376
+ parameterizing_args: symbol parameterizing_suffix?
377
+ {
378
+ result = if val[1]
379
+ [Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[0])]
380
+ else
381
+ [val[0]]
382
+ end
383
+ }
366
384
  | parameterizing_args ',' symbol { result = val[0].append(val[2]) }
367
- | symbol parameterizing_suffix { result = [Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[0])] }
368
385
  | IDENTIFIER "(" parameterizing_args ")" { result = [Lrama::Lexer::Token::InstantiateRule.new(s_value: val[0].s_value, location: @lexer.location, args: val[2])] }
369
386
 
370
387
  midrule_action: "{"
@@ -404,12 +421,6 @@ rule
404
421
  | STRING
405
422
  | "{...}"
406
423
 
407
- generic_symbol: symbol
408
- | TAG
409
-
410
- empty: /* empty */
411
- | "%empty"
412
-
413
424
  string_as_id: STRING { result = Lrama::Lexer::Token::Ident.new(s_value: val[0]) }
414
425
  end
415
426
 
@@ -1,6 +1,14 @@
1
1
  ---
2
2
  path: ".gem_rbs_collection"
3
3
  gems:
4
+ - name: diff-lcs
5
+ version: '1.5'
6
+ source:
7
+ type: git
8
+ name: ruby/gem_rbs_collection
9
+ revision: 71fb7ae83789ae150bdee1cd8a7cd3035b5d79e2
10
+ remote: https://github.com/ruby/gem_rbs_collection.git
11
+ repo_dir: gems
4
12
  - name: erb
5
13
  version: '0'
6
14
  source:
@@ -18,7 +26,7 @@ gems:
18
26
  source:
19
27
  type: git
20
28
  name: ruby/gem_rbs_collection
21
- revision: 4b0d2f72e63b6c3e92dc54e19ce23dd24524f9a7
29
+ revision: 71fb7ae83789ae150bdee1cd8a7cd3035b5d79e2
22
30
  remote: https://github.com/ruby/gem_rbs_collection.git
23
31
  repo_dir: gems
24
32
  - name: stackprof
@@ -26,7 +34,7 @@ gems:
26
34
  source:
27
35
  type: git
28
36
  name: ruby/gem_rbs_collection
29
- revision: 4b0d2f72e63b6c3e92dc54e19ce23dd24524f9a7
37
+ revision: 71fb7ae83789ae150bdee1cd8a7cd3035b5d79e2
30
38
  remote: https://github.com/ruby/gem_rbs_collection.git
31
39
  repo_dir: gems
32
40
  - name: strscan
@@ -0,0 +1,33 @@
1
+ module Lrama
2
+ class Counterexamples
3
+ class Derivation
4
+ @item: States::Item
5
+
6
+ @left: Derivation?
7
+
8
+ @right: Derivation?
9
+
10
+ attr_reader item: States::Item
11
+
12
+ attr_reader left: Derivation?
13
+
14
+ attr_reader right: Derivation?
15
+
16
+ attr_writer right: Derivation?
17
+
18
+ def initialize: (States::Item item, Derivation? left, ?Derivation? right) -> void
19
+
20
+ def to_s: () -> ::String
21
+
22
+ alias inspect to_s
23
+
24
+ def render_strings_for_report: () -> Array[String]
25
+
26
+ def render_for_report: () -> String
27
+
28
+ private
29
+
30
+ def _render_for_report: (Derivation derivation, Integer offset, Array[String] strings, Integer index) -> Integer
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,45 @@
1
+ module Lrama
2
+ class Counterexamples
3
+ class Example
4
+ @path1: ::Array[StartPath | TransitionPath | ProductionPath]
5
+
6
+ @path2: ::Array[StartPath | TransitionPath | ProductionPath]
7
+
8
+ @conflict: (State::ShiftReduceConflict | State::ReduceReduceConflict)
9
+
10
+ @conflict_symbol: Grammar::Symbol
11
+
12
+ @counterexamples: Counterexamples
13
+
14
+ @derivations1: Derivation
15
+
16
+ @derivations2: Derivation
17
+
18
+ attr_reader path1: ::Array[StartPath | TransitionPath | ProductionPath]
19
+
20
+ attr_reader path2: ::Array[StartPath | TransitionPath | ProductionPath]
21
+
22
+ attr_reader conflict: (State::ShiftReduceConflict | State::ReduceReduceConflict)
23
+
24
+ attr_reader conflict_symbol: Grammar::Symbol
25
+
26
+ def initialize: (::Array[StartPath | TransitionPath | ProductionPath]? path1, ::Array[StartPath | TransitionPath | ProductionPath]? path2, (State::ShiftReduceConflict | State::ReduceReduceConflict) conflict, Grammar::Symbol conflict_symbol, Counterexamples counterexamples) -> void
27
+
28
+ def type: () -> (:shift_reduce | :reduce_reduce)
29
+
30
+ def path1_item: () -> States::Item
31
+
32
+ def path2_item: () -> States::Item
33
+
34
+ def derivations1: () -> Derivation
35
+
36
+ def derivations2: () -> Derivation
37
+
38
+ private
39
+
40
+ def _derivations: (::Array[StartPath | TransitionPath | ProductionPath] paths) -> Derivation
41
+
42
+ def find_derivation_for_symbol: (StateItem state_item, Grammar::Symbol sym) -> Derivation?
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,21 @@
1
+ module Lrama
2
+ class Counterexamples
3
+ class Path
4
+ @from_state_item: StateItem?
5
+
6
+ @to_state_item: StateItem
7
+
8
+ def initialize: (StateItem? from_state_item, StateItem to_state_item) -> void
9
+
10
+ def from: () -> StateItem?
11
+
12
+ def to: () -> StateItem
13
+
14
+ def to_s: () -> ::String
15
+
16
+ alias inspect to_s
17
+
18
+ def type: -> bot
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ module Lrama
2
+ class Counterexamples
3
+ class ProductionPath < Path
4
+ def type: () -> :production
5
+
6
+ def transition?: () -> false
7
+
8
+ def production?: () -> true
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ module Lrama
2
+ class Counterexamples
3
+ class StartPath < Path
4
+ def initialize: (StateItem to_state_item) -> void
5
+
6
+ def type: () -> :start
7
+
8
+ def transition?: () -> false
9
+
10
+ def production?: () -> false
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ module Lrama
2
+ class Counterexamples
3
+ class StateItem
4
+ attr_accessor state: State
5
+ attr_accessor item: States::Item
6
+
7
+ def initialize: (State state, States::Item item) -> void
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ module Lrama
2
+ class Counterexamples
3
+ class TransitionPath < Path
4
+ def type: () -> :transition
5
+
6
+ def transition?: () -> true
7
+
8
+ def production?: () -> false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,20 @@
1
+ module Lrama
2
+ class Counterexamples
3
+ class Triple
4
+ attr_accessor s: State
5
+ attr_accessor itm: States::Item
6
+ attr_accessor l: Set[Grammar::Symbol]
7
+
8
+ alias state s
9
+ alias item itm
10
+ alias precise_lookahead_set l
11
+
12
+ def initialize: (State s, States::Item itm, Set[Grammar::Symbol] l) -> void
13
+
14
+ def state_item: () -> StateItem
15
+ def inspect: () -> ::String
16
+
17
+ alias to_s inspect
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,29 @@
1
+ module Lrama
2
+ class Counterexamples
3
+ @states: States
4
+ @transitions: Hash[[StateItem, Grammar::Symbol], StateItem]
5
+ @reverse_transitions: Hash[[StateItem, Grammar::Symbol], Set[StateItem]]
6
+ @productions: Hash[StateItem, Set[States::Item]]
7
+ @reverse_productions: Hash[[State, Grammar::Symbol], Set[States::Item]]
8
+
9
+ attr_reader transitions: Hash[[StateItem, Grammar::Symbol], StateItem]
10
+ attr_reader productions: Hash[StateItem, Set[States::Item]]
11
+
12
+ def initialize: (States states) -> void
13
+ def to_s: () -> "#<Counterexamples>"
14
+ alias inspect to_s
15
+ def compute: (State conflict_state) -> Array[Example]
16
+
17
+ private
18
+
19
+ def setup_transitions: () -> void
20
+ def setup_productions: () -> void
21
+ def shift_reduce_example: (State conflict_state, State::ShiftReduceConflict conflict) -> Example
22
+ def reduce_reduce_examples: (State conflict_state, State::ReduceReduceConflict conflict) -> Example
23
+ def find_shift_conflict_shortest_path: (::Array[StartPath|TransitionPath|ProductionPath]? reduce_path, State conflict_state, States::Item conflict_item) -> ::Array[StartPath|TransitionPath|ProductionPath]
24
+ def find_shift_conflict_shortest_state_items: (::Array[StartPath|TransitionPath|ProductionPath]? reduce_path, State conflict_state, States::Item conflict_item) -> Array[StateItem]
25
+ def build_paths_from_state_items: (Array[StateItem] state_items) -> ::Array[StartPath|TransitionPath|ProductionPath]
26
+ def shortest_path: (State conflict_state, States::Item conflict_reduce_item, Grammar::Symbol conflict_term) -> ::Array[StartPath|TransitionPath|ProductionPath]?
27
+ def follow_l: (States::Item item, Set[Grammar::Symbol] current_l) -> Set[Grammar::Symbol]
28
+ end
29
+ end
@@ -13,7 +13,7 @@ module Lrama
13
13
  attr_accessor destructor: Destructor?
14
14
  attr_accessor error_token: ErrorToken
15
15
 
16
- attr_accessor first_set: Set[Array[Symbol]] | Set[Symbol]
16
+ attr_accessor first_set: Set[Grammar::Symbol]
17
17
  attr_accessor first_set_bitmap: Integer
18
18
  attr_writer eof_symbol: bool
19
19
  attr_writer error_symbol: bool
@@ -14,8 +14,8 @@ module Lrama
14
14
  def sort_by_number!: () -> Array[Grammar::Symbol]
15
15
  def add_term: (id: Lexer::Token, ?alias_name: String?, ?tag: Lexer::Token::Tag?, ?token_id: Integer?, ?replace: bool) -> Grammar::Symbol
16
16
  def add_nterm: (id: Lexer::Token, ?alias_name: String?, ?tag: Lexer::Token::Tag?) -> Grammar::Symbol
17
- def find_symbol_by_s_value: (Grammar::Symbol s_value) -> Grammar::Symbol?
18
- def find_symbol_by_s_value!: (Grammar::Symbol s_value) -> Grammar::Symbol
17
+ def find_symbol_by_s_value: (::String s_value) -> Grammar::Symbol?
18
+ def find_symbol_by_s_value!: (::String s_value) -> Grammar::Symbol
19
19
  def find_symbol_by_id: (Lexer::Token id) -> Grammar::Symbol?
20
20
  def find_symbol_by_id!: (Lexer::Token id) -> Grammar::Symbol
21
21
  def find_symbol_by_token_id: (Integer token_id) -> Grammar::Symbol?
@@ -47,7 +47,7 @@ module Lrama
47
47
  def find_symbol_by_number!: (Integer number) -> Grammar::Symbol
48
48
  def find_symbol_by_id!: (Lexer::Token id) -> Grammar::Symbol
49
49
  def token_to_symbol: (Lexer::Token token) -> Grammar::Symbol
50
- def find_symbol_by_s_value!: (Grammar::Symbol s_value) -> Grammar::Symbol
50
+ def find_symbol_by_s_value!: (::String s_value) -> Grammar::Symbol
51
51
  def fill_nterm_type: (Array[Grammar::Type] types) -> void
52
52
  def fill_symbol_number: () -> void
53
53
  def fill_printer: (Array[Grammar::Printer] printers) -> void
@@ -91,5 +91,18 @@ module Lrama
91
91
  def fill_sym_to_rules: () -> Array[Rule]
92
92
  def validate_rule_lhs_is_nterm!: () -> void
93
93
  def set_locations: () -> void
94
+
95
+ interface _DelegatedMethods
96
+ def rules: () -> Array[Rule]
97
+ def accept_symbol: () -> Grammar::Symbol
98
+ def eof_symbol: () -> Grammar::Symbol
99
+ def undef_symbol: () -> Grammar::Symbol
100
+
101
+ # delegate to @symbols_resolver
102
+ def symbols: () -> Array[Grammar::Symbol]
103
+ def terms: () -> Array[Grammar::Symbol]
104
+ def nterms: () -> Array[Grammar::Symbol]
105
+ def find_symbol_by_s_value!: (::String s_value) -> Grammar::Symbol
106
+ end
94
107
  end
95
108
  end
@@ -1,11 +1,11 @@
1
1
  module Lrama
2
2
  class State
3
3
  class ReduceReduceConflict
4
- attr_accessor symbols: Array[Grammar::Symbol?]
4
+ attr_accessor symbols: Array[Grammar::Symbol]
5
5
  attr_accessor reduce1: State::Reduce
6
6
  attr_accessor reduce2: State::Reduce
7
7
 
8
- def initialize: (?symbols: Array[Grammar::Symbol?], ?reduce1: State::Reduce, ?reduce2: State::Reduce) -> void
8
+ def initialize: (?symbols: Array[Grammar::Symbol], ?reduce1: State::Reduce, ?reduce2: State::Reduce) -> void
9
9
 
10
10
  def type: () -> :reduce_reduce
11
11
  end
@@ -0,0 +1,79 @@
1
+ module Lrama
2
+ class State
3
+ @id: untyped
4
+
5
+ @accessing_symbol: untyped
6
+
7
+ @kernels: untyped
8
+
9
+ @items: Array[States::Item]
10
+
11
+ @items_to_state: untyped
12
+
13
+ @conflicts: Array[State::ShiftReduceConflict|State::ReduceReduceConflict]
14
+
15
+ @resolved_conflicts: untyped
16
+
17
+ @default_reduction_rule: untyped
18
+
19
+ @closure: untyped
20
+
21
+ @nterm_transitions: untyped
22
+
23
+ @term_transitions: untyped
24
+
25
+ @transitions: Array[[Shift, State]]
26
+
27
+ attr_reader id: untyped
28
+
29
+ attr_reader accessing_symbol: untyped
30
+
31
+ attr_reader kernels: untyped
32
+
33
+ attr_reader conflicts: Array[State::ShiftReduceConflict|State::ReduceReduceConflict]
34
+
35
+ attr_reader resolved_conflicts: untyped
36
+
37
+ attr_reader default_reduction_rule: untyped
38
+
39
+ attr_reader closure: untyped
40
+
41
+ attr_reader items: Array[States::Item]
42
+
43
+ attr_accessor shifts: Array[Shift]
44
+
45
+ attr_accessor reduces: untyped
46
+
47
+ def initialize: (untyped id, untyped accessing_symbol, Array[States::Item] kernels) -> void
48
+
49
+ def closure=: (untyped closure) -> untyped
50
+
51
+ def non_default_reduces: () -> untyped
52
+
53
+ def compute_shifts_reduces: () -> untyped
54
+
55
+ def set_items_to_state: (untyped items, untyped next_state) -> untyped
56
+
57
+ def set_look_ahead: (untyped rule, untyped look_ahead) -> untyped
58
+
59
+ def nterm_transitions: () -> untyped
60
+
61
+ def term_transitions: () -> untyped
62
+
63
+ def transitions: () -> Array[[Shift, State]]
64
+
65
+ def selected_term_transitions: () -> untyped
66
+
67
+ def transition: (untyped sym) -> untyped
68
+
69
+ def find_reduce_by_item!: (untyped item) -> untyped
70
+
71
+ def default_reduction_rule=: (untyped default_reduction_rule) -> untyped
72
+
73
+ def has_conflicts?: () -> untyped
74
+
75
+ def sr_conflicts: () -> untyped
76
+
77
+ def rr_conflicts: () -> untyped
78
+ end
79
+ end
@@ -0,0 +1,101 @@
1
+ module Lrama
2
+ class States
3
+ include Grammar::_DelegatedMethods
4
+
5
+ @grammar: untyped
6
+
7
+ @warning: untyped
8
+
9
+ @trace_state: untyped
10
+
11
+ @states: Array[State]
12
+
13
+ @direct_read_sets: untyped
14
+
15
+ @reads_relation: untyped
16
+
17
+ @read_sets: untyped
18
+
19
+ @includes_relation: untyped
20
+
21
+ @lookback_relation: untyped
22
+
23
+ @follow_sets: untyped
24
+
25
+ @la: untyped
26
+
27
+ extend Forwardable
28
+
29
+ include Lrama::Report::Duration
30
+
31
+ attr_reader states: Array[State]
32
+
33
+ attr_reader reads_relation: untyped
34
+
35
+ attr_reader includes_relation: untyped
36
+
37
+ attr_reader lookback_relation: untyped
38
+
39
+ def initialize: (untyped grammar, untyped warning, ?trace_state: bool) -> void
40
+
41
+ def compute: () -> untyped
42
+
43
+ def reporter: () -> untyped
44
+
45
+ def states_count: () -> untyped
46
+
47
+ def direct_read_sets: () -> untyped
48
+
49
+ def read_sets: () -> untyped
50
+
51
+ def follow_sets: () -> untyped
52
+
53
+ def la: () -> untyped
54
+
55
+ private
56
+
57
+ def sr_conflicts: () -> untyped
58
+
59
+ def rr_conflicts: () -> untyped
60
+
61
+ def trace_state: () { (untyped) -> untyped } -> (untyped | nil)
62
+
63
+ def create_state: (untyped accessing_symbol, untyped kernels, untyped states_created) -> (::Array[untyped | false] | ::Array[untyped | true])
64
+
65
+ def setup_state: (untyped state) -> untyped
66
+
67
+ def enqueue_state: (untyped states, untyped state) -> untyped
68
+
69
+ def compute_lr0_states: () -> untyped
70
+
71
+ def nterm_transitions: () -> untyped
72
+
73
+ def compute_direct_read_sets: () -> untyped
74
+
75
+ def compute_reads_relation: () -> untyped
76
+
77
+ def compute_read_sets: () -> untyped
78
+
79
+ def transition: (untyped state, untyped symbols) -> untyped
80
+
81
+ def compute_includes_relation: () -> untyped
82
+
83
+ def compute_lookback_relation: () -> untyped
84
+
85
+ def compute_follow_sets: () -> untyped
86
+
87
+ def compute_look_ahead_sets: () -> untyped
88
+
89
+ def bitmap_to_terms: (untyped bit) -> untyped
90
+
91
+ def compute_conflicts: () -> untyped
92
+
93
+ def compute_shift_reduce_conflicts: () -> untyped
94
+
95
+ def compute_reduce_reduce_conflicts: () -> untyped
96
+
97
+ def compute_default_reduction: () -> untyped
98
+
99
+ def check_conflicts: () -> untyped
100
+ end
101
+ end