rley 0.7.07 → 0.7.08

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +348 -54
  3. data/LICENSE.txt +1 -1
  4. data/README.md +3 -2
  5. data/examples/NLP/engtagger.rb +193 -190
  6. data/examples/NLP/nano_eng/nano_grammar.rb +5 -5
  7. data/examples/data_formats/JSON/cli_options.rb +1 -1
  8. data/examples/data_formats/JSON/json_ast_builder.rb +12 -9
  9. data/examples/data_formats/JSON/json_ast_nodes.rb +12 -21
  10. data/examples/data_formats/JSON/json_grammar.rb +2 -2
  11. data/examples/data_formats/JSON/json_lexer.rb +8 -8
  12. data/examples/data_formats/JSON/json_minifier.rb +1 -1
  13. data/examples/general/calc_iter1/calc_ast_builder.rb +13 -10
  14. data/examples/general/calc_iter1/calc_ast_nodes.rb +23 -37
  15. data/examples/general/calc_iter1/calc_grammar.rb +2 -2
  16. data/examples/general/calc_iter1/calc_lexer.rb +6 -4
  17. data/examples/general/calc_iter1/spec/calculator_spec.rb +5 -5
  18. data/examples/general/calc_iter2/calc_ast_builder.rb +5 -3
  19. data/examples/general/calc_iter2/calc_ast_nodes.rb +27 -43
  20. data/examples/general/calc_iter2/calc_grammar.rb +3 -3
  21. data/examples/general/calc_iter2/calc_lexer.rb +11 -10
  22. data/examples/general/calc_iter2/spec/calculator_spec.rb +26 -26
  23. data/examples/general/left.rb +2 -2
  24. data/examples/general/right.rb +2 -2
  25. data/lib/rley/base/dotted_item.rb +23 -31
  26. data/lib/rley/constants.rb +2 -2
  27. data/lib/rley/engine.rb +20 -23
  28. data/lib/rley/formatter/asciitree.rb +3 -3
  29. data/lib/rley/formatter/bracket_notation.rb +1 -8
  30. data/lib/rley/formatter/debug.rb +6 -6
  31. data/lib/rley/formatter/json.rb +2 -2
  32. data/lib/rley/gfg/call_edge.rb +1 -1
  33. data/lib/rley/gfg/edge.rb +5 -5
  34. data/lib/rley/gfg/end_vertex.rb +2 -6
  35. data/lib/rley/gfg/epsilon_edge.rb +1 -5
  36. data/lib/rley/gfg/grm_flow_graph.rb +27 -23
  37. data/lib/rley/gfg/item_vertex.rb +10 -10
  38. data/lib/rley/gfg/non_terminal_vertex.rb +4 -4
  39. data/lib/rley/gfg/scan_edge.rb +1 -1
  40. data/lib/rley/gfg/shortcut_edge.rb +2 -2
  41. data/lib/rley/gfg/start_vertex.rb +4 -8
  42. data/lib/rley/gfg/vertex.rb +43 -39
  43. data/lib/rley/lexical/token_range.rb +6 -6
  44. data/lib/rley/parse_forest_visitor.rb +5 -5
  45. data/lib/rley/parse_rep/ast_base_builder.rb +9 -11
  46. data/lib/rley/parse_rep/cst_builder.rb +5 -6
  47. data/lib/rley/parse_rep/parse_forest_builder.rb +20 -18
  48. data/lib/rley/parse_rep/parse_forest_factory.rb +3 -3
  49. data/lib/rley/parse_rep/parse_rep_creator.rb +11 -13
  50. data/lib/rley/parse_rep/parse_tree_builder.rb +4 -4
  51. data/lib/rley/parse_rep/parse_tree_factory.rb +27 -27
  52. data/lib/rley/parse_tree_visitor.rb +1 -1
  53. data/lib/rley/parser/error_reason.rb +4 -5
  54. data/lib/rley/parser/gfg_chart.rb +20 -22
  55. data/lib/rley/parser/gfg_parsing.rb +16 -30
  56. data/lib/rley/parser/parse_entry.rb +25 -31
  57. data/lib/rley/parser/parse_entry_set.rb +18 -15
  58. data/lib/rley/parser/parse_entry_tracker.rb +4 -4
  59. data/lib/rley/parser/parse_state.rb +16 -21
  60. data/lib/rley/parser/parse_state_tracker.rb +4 -4
  61. data/lib/rley/parser/parse_tracer.rb +13 -13
  62. data/lib/rley/parser/parse_walker_factory.rb +23 -28
  63. data/lib/rley/parser/state_set.rb +9 -10
  64. data/lib/rley/ptree/non_terminal_node.rb +7 -5
  65. data/lib/rley/ptree/parse_tree.rb +3 -3
  66. data/lib/rley/ptree/parse_tree_node.rb +5 -5
  67. data/lib/rley/ptree/terminal_node.rb +7 -7
  68. data/lib/rley/rley_error.rb +12 -12
  69. data/lib/rley/sppf/alternative_node.rb +6 -6
  70. data/lib/rley/sppf/composite_node.rb +7 -7
  71. data/lib/rley/sppf/epsilon_node.rb +3 -3
  72. data/lib/rley/sppf/leaf_node.rb +3 -3
  73. data/lib/rley/sppf/parse_forest.rb +16 -16
  74. data/lib/rley/sppf/sppf_node.rb +7 -8
  75. data/lib/rley/sppf/token_node.rb +3 -3
  76. data/lib/rley/syntax/grammar.rb +5 -5
  77. data/lib/rley/syntax/grammar_builder.rb +9 -9
  78. data/lib/rley/syntax/grm_symbol.rb +6 -6
  79. data/lib/rley/syntax/non_terminal.rb +9 -15
  80. data/lib/rley/syntax/production.rb +10 -10
  81. data/lib/rley/syntax/symbol_seq.rb +7 -9
  82. data/lib/rley/syntax/terminal.rb +4 -5
  83. data/lib/rley/syntax/verbatim_symbol.rb +3 -3
  84. data/lib/support/base_tokenizer.rb +19 -18
  85. data/spec/rley/base/dotted_item_spec.rb +2 -2
  86. data/spec/rley/engine_spec.rb +17 -15
  87. data/spec/rley/formatter/asciitree_spec.rb +7 -7
  88. data/spec/rley/formatter/bracket_notation_spec.rb +13 -13
  89. data/spec/rley/formatter/json_spec.rb +1 -1
  90. data/spec/rley/gfg/end_vertex_spec.rb +5 -5
  91. data/spec/rley/gfg/item_vertex_spec.rb +10 -10
  92. data/spec/rley/gfg/non_terminal_vertex_spec.rb +3 -3
  93. data/spec/rley/gfg/shortcut_edge_spec.rb +1 -1
  94. data/spec/rley/gfg/start_vertex_spec.rb +5 -5
  95. data/spec/rley/gfg/vertex_spec.rb +3 -3
  96. data/spec/rley/lexical/token_range_spec.rb +16 -16
  97. data/spec/rley/lexical/token_spec.rb +2 -2
  98. data/spec/rley/parse_forest_visitor_spec.rb +165 -163
  99. data/spec/rley/parse_rep/ambiguous_parse_spec.rb +44 -44
  100. data/spec/rley/parse_rep/ast_builder_spec.rb +6 -6
  101. data/spec/rley/parse_rep/cst_builder_spec.rb +5 -5
  102. data/spec/rley/parse_rep/groucho_spec.rb +21 -21
  103. data/spec/rley/parse_rep/parse_forest_builder_spec.rb +26 -26
  104. data/spec/rley/parse_rep/parse_forest_factory_spec.rb +6 -6
  105. data/spec/rley/parse_rep/parse_tree_factory_spec.rb +2 -2
  106. data/spec/rley/parse_tree_visitor_spec.rb +10 -8
  107. data/spec/rley/parser/error_reason_spec.rb +6 -6
  108. data/spec/rley/parser/gfg_earley_parser_spec.rb +4 -2
  109. data/spec/rley/parser/gfg_parsing_spec.rb +4 -8
  110. data/spec/rley/parser/parse_entry_spec.rb +19 -19
  111. data/spec/rley/parser/parse_state_spec.rb +5 -5
  112. data/spec/rley/parser/parse_walker_factory_spec.rb +1 -1
  113. data/spec/rley/parser/state_set_spec.rb +22 -22
  114. data/spec/rley/ptree/non_terminal_node_spec.rb +5 -3
  115. data/spec/rley/ptree/parse_tree_node_spec.rb +4 -4
  116. data/spec/rley/ptree/terminal_node_spec.rb +6 -6
  117. data/spec/rley/sppf/alternative_node_spec.rb +6 -6
  118. data/spec/rley/sppf/non_terminal_node_spec.rb +3 -3
  119. data/spec/rley/sppf/token_node_spec.rb +4 -4
  120. data/spec/rley/support/ambiguous_grammar_helper.rb +3 -4
  121. data/spec/rley/support/grammar_abc_helper.rb +2 -4
  122. data/spec/rley/support/grammar_ambig01_helper.rb +4 -5
  123. data/spec/rley/support/grammar_arr_int_helper.rb +4 -5
  124. data/spec/rley/support/grammar_b_expr_helper.rb +4 -5
  125. data/spec/rley/support/grammar_l0_helper.rb +10 -11
  126. data/spec/rley/support/grammar_pb_helper.rb +6 -5
  127. data/spec/rley/support/grammar_sppf_helper.rb +1 -1
  128. data/spec/rley/syntax/grammar_builder_spec.rb +5 -5
  129. data/spec/rley/syntax/grammar_spec.rb +6 -6
  130. data/spec/rley/syntax/grm_symbol_spec.rb +1 -1
  131. data/spec/rley/syntax/non_terminal_spec.rb +8 -8
  132. data/spec/rley/syntax/production_spec.rb +13 -13
  133. data/spec/rley/syntax/symbol_seq_spec.rb +2 -2
  134. data/spec/rley/syntax/terminal_spec.rb +5 -5
  135. data/spec/rley/syntax/verbatim_symbol_spec.rb +1 -1
  136. data/spec/spec_helper.rb +0 -12
  137. data/spec/support/base_tokenizer_spec.rb +7 -2
  138. metadata +21 -62
  139. data/.simplecov +0 -8
@@ -15,13 +15,13 @@ module Rley # This module is used as a namespace
15
15
  def builder(aParseResult, _builder = nil)
16
16
  ParseForestBuilder.new(aParseResult.tokens)
17
17
  end
18
-
18
+
19
19
  # When an end vertex is re-visited then jump
20
20
  # its corresponding start vertex. This behaviour
21
21
  # makes sense for sharing nodes.
22
- def jump_to_start()
22
+ def jump_to_start
23
23
  true
24
- end
24
+ end
25
25
  end # class
26
26
  end # module
27
27
  end # module
@@ -7,18 +7,18 @@ module Rley # This module is used as a namespace
7
7
  # Utility class that helps to create a representation of a parse from
8
8
  # a given Parsing object.
9
9
  class ParseRepCreator
10
- # @return [Rley::Parser::GFGParsing]
10
+ # @return [Rley::Parser::GFGParsing]
11
11
  # Link to Parsing object (= results of recognizer)
12
12
  attr_reader(:parsing)
13
-
13
+
14
14
  # Constructor. Creates and initialize a ParseRepCreator instance.
15
15
  # @return [ParseRepCreator]
16
16
  def initialize(aParsingResult)
17
17
  @parsing = aParsingResult
18
- end
19
-
18
+ end
19
+
20
20
  # Factory method that produces the representation of the parse.
21
- # @return [Rley::PTree::ParseTree, Rley::SPPF::ParseForest]
21
+ # @return [Rley::PTree::ParseTree, Rley::SPPF::ParseForest]
22
22
  # The parse representation.
23
23
  def create(aBuilder = nil)
24
24
  a_walker = walker(parsing)
@@ -38,14 +38,14 @@ module Rley # This module is used as a namespace
38
38
  end
39
39
  raise e
40
40
  end
41
-
41
+
42
42
  a_builder.done!
43
43
 
44
- return a_builder.result
44
+ a_builder.result
45
45
  end
46
-
46
+
47
47
  private
48
-
48
+
49
49
  # Create a Parsing walker, that is, an object
50
50
  # that will iterate over the relevant nodes (= parsing entries)
51
51
  # of a GFGParsing
@@ -58,13 +58,11 @@ module Rley # This module is used as a namespace
58
58
 
59
59
  # By default, when a end vertex is re-visited don't jump
60
60
  # its corresponding start vertex.
61
- def jump_to_start()
61
+ def jump_to_start
62
62
  false
63
63
  end
64
-
65
64
  end # class
66
65
  end # module
67
66
  end # module
68
67
 
69
- # End of file
70
-
68
+ # End of file
@@ -50,7 +50,7 @@ module Rley # This module is used as a namespace
50
50
  end
51
51
 
52
52
  # Notify the builder that the parse tree construction is complete.
53
- def done!()
53
+ def done!
54
54
  result.done!
55
55
  end
56
56
 
@@ -92,7 +92,7 @@ module Rley # This module is used as a namespace
92
92
  private
93
93
 
94
94
  # Return the top of stack element.
95
- def tos()
95
+ def tos
96
96
  @stack.last
97
97
  end
98
98
 
@@ -207,7 +207,7 @@ module Rley # This module is used as a namespace
207
207
  # @param anEntry [ParseEntry] The entry being visited
208
208
  def terminal_before_dot?(anEntry)
209
209
  prev_symbol = anEntry.prev_symbol
210
- return prev_symbol && prev_symbol.terminal?
210
+ prev_symbol&.terminal?
211
211
  end
212
212
 
213
213
  # A terminal symbol was detected at left of dot.
@@ -260,7 +260,7 @@ module Rley # This module is used as a namespace
260
260
  non_terminal = anEntry.vertex.lhs
261
261
  end
262
262
 
263
- return non_terminal
263
+ non_terminal
264
264
  end
265
265
  end # class
266
266
  end # module
@@ -1,27 +1,27 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'parse_rep_creator'
4
- # require_relative 'parse_tree_builder' # TODO remove this line
5
- require_relative 'cst_builder'
6
-
7
- module Rley # This module is used as a namespace
8
- module ParseRep # This module is used as a namespace
9
- # Utility class that helps to create a ParseTree from
10
- # a given Parsing object.
11
- class ParseTreeFactory < ParseRepCreator
12
- protected
13
-
14
- # Create a Builder, that is, an object
15
- # that will create piece by piece the forest
16
- def builder(aParseResult, aBuilder = nil)
17
- if aBuilder
18
- aBuilder.new(aParseResult.tokens)
19
- else
20
- CSTBuilder.new(aParseResult.tokens)
21
- end
22
- end
23
- end # class
24
- end # module
25
- end # module
26
-
27
- # End of file
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'parse_rep_creator'
4
+ # require_relative 'parse_tree_builder' # TODO remove this line
5
+ require_relative 'cst_builder'
6
+
7
+ module Rley # This module is used as a namespace
8
+ module ParseRep # This module is used as a namespace
9
+ # Utility class that helps to create a ParseTree from
10
+ # a given Parsing object.
11
+ class ParseTreeFactory < ParseRepCreator
12
+ protected
13
+
14
+ # Create a Builder, that is, an object
15
+ # that will create piece by piece the forest
16
+ def builder(aParseResult, aBuilder = nil)
17
+ if aBuilder
18
+ aBuilder.new(aParseResult.tokens)
19
+ else
20
+ CSTBuilder.new(aParseResult.tokens)
21
+ end
22
+ end
23
+ end # class
24
+ end # module
25
+ end # module
26
+
27
+ # End of file
@@ -37,7 +37,7 @@ module Rley # This module is used as a namespace
37
37
  end
38
38
 
39
39
  # The signal to begin the visit of the parse tree.
40
- def start()
40
+ def start
41
41
  ptree.accept(self)
42
42
  end
43
43
 
@@ -17,7 +17,7 @@ module Rley # Module used as a namespace
17
17
  end
18
18
 
19
19
  # @return [String] the result of invoking reason.to_s
20
- def message()
20
+ def message
21
21
  return to_s
22
22
  end
23
23
 
@@ -27,11 +27,10 @@ module Rley # Module used as a namespace
27
27
  end
28
28
  end # class
29
29
 
30
-
31
30
  # This parse error occurs when no input for parsing was provided
32
31
  # while the grammar requires some non-empty input.
33
32
  class NoInput < ErrorReason
34
- def initialize()
33
+ def initialize
35
34
  super(0)
36
35
  end
37
36
 
@@ -61,7 +60,7 @@ module Rley # Module used as a namespace
61
60
 
62
61
  protected
63
62
 
64
- def position()
63
+ def position
65
64
  return last_token.position if last_token.respond_to?(:position)
66
65
 
67
66
  rank + 1
@@ -76,7 +75,7 @@ module Rley # Module used as a namespace
76
75
  else
77
76
  "'#{term_names[0]}'"
78
77
  end
79
- return explain
78
+ explain
80
79
  end
81
80
  end # class
82
81
 
@@ -16,32 +16,30 @@ module Rley # This module is used as a namespace
16
16
 
17
17
  # @param aGFGraph [GFG::GrmFlowGraph] The GFG for the grammar in use.
18
18
  def initialize(aGFGraph)
19
- @sets = [ ParseEntrySet.new ]
19
+ @sets = [ParseEntrySet.new]
20
20
  push_entry(aGFGraph.start_vertex, 0, 0, :start_rule)
21
21
  end
22
22
 
23
23
  # @return [Syntax::NonTerminal] the start symbol of the grammar.
24
- def start_symbol()
25
- return sets.first.entries[0].vertex.non_terminal
24
+ def start_symbol
25
+ sets.first.entries[0].vertex.non_terminal
26
26
  end
27
27
 
28
28
  # @param index [Integer]
29
29
  # @return [ParseEntrySet] Access the entry set at given position.
30
30
  def [](index)
31
- return sets[index]
31
+ sets[index]
32
32
  end
33
33
 
34
34
  # Return the index value of the last non-empty entry set.
35
35
  # @return [Integer]
36
- def last_index()
36
+ def last_index
37
37
  first_empty = sets.find_index(&:empty?)
38
- index = if first_empty.nil?
39
- sets.size - 1
40
- else
41
- first_empty.zero? ? 0 : first_empty - 1
42
- end
43
-
44
- return index
38
+ if first_empty.nil?
39
+ sets.size - 1
40
+ else
41
+ first_empty.zero? ? 0 : first_empty - 1
42
+ end
45
43
  end
46
44
 
47
45
  # Push a parse entry for the chart entry with given index
@@ -60,20 +58,18 @@ module Rley # This module is used as a namespace
60
58
 
61
59
  add_entry_set
62
60
  end
63
- pushed = self[anIndex].push_entry(new_entry)
64
-
65
- return pushed
61
+ self[anIndex].push_entry(new_entry)
66
62
  end
67
63
 
68
64
  # Retrieve the first parse entry added to this chart
69
65
  # @return [ParseEntry]
70
- def initial_entry()
71
- return sets[0].first
66
+ def initial_entry
67
+ sets[0].first
72
68
  end
73
69
 
74
70
  # Retrieve the entry that corresponds to a complete and successful parse
75
71
  # @return [ParseEntry]
76
- def accepting_entry()
72
+ def accepting_entry
77
73
  # Success can be detected as follows:
78
74
  # The last chart entry set has at least one complete parse entry
79
75
  # for the start symbol with an origin == 0
@@ -95,7 +91,7 @@ module Rley # This module is used as a namespace
95
91
 
96
92
  success_entries.first
97
93
  end
98
-
94
+
99
95
  # @return [Integer] The number of states.
100
96
  def count_states
101
97
  sets.size
@@ -103,6 +99,7 @@ module Rley # This module is used as a namespace
103
99
 
104
100
  # @return [Integer] The total number of entries.
105
101
  def count_entries
102
+ # rubocop: disable Lint/UselessAssignment
106
103
  sets.reduce(0) do |sub_result, a_set|
107
104
  sub_result += a_set.size
108
105
  end
@@ -114,6 +111,7 @@ module Rley # This module is used as a namespace
114
111
  sub_result += a_set.count_edges
115
112
  end
116
113
  end
114
+ # rubocop: enable Lint/UselessAssignment
117
115
 
118
116
  # @ return [String] A human-readable representation of the chart.
119
117
  def to_s
@@ -121,16 +119,16 @@ module Rley # This module is used as a namespace
121
119
  sets.each_with_index do |a_set, i|
122
120
  result << "State[#{i}]\n"
123
121
  a_set.entries.each do |item|
124
- result << ' ' + item.to_s + "\n"
122
+ result << " #{item}\n"
125
123
  end
126
124
  end
127
-
125
+
128
126
  result
129
127
  end
130
128
 
131
129
  private
132
130
 
133
- def add_entry_set()
131
+ def add_entry_set
134
132
  @sets << ParseEntrySet.new
135
133
  end
136
134
  end # class
@@ -179,50 +179,36 @@ module Rley # This module is used as a namespace
179
179
  end
180
180
  end
181
181
 
182
- return true
182
+ true
183
183
  end
184
184
 
185
185
  # Return true if the parse was successful (= input tokens
186
186
  # followed the syntax specified by the grammar)
187
- def success?()
187
+ def success?
188
188
  return false if @failure_reason
189
189
 
190
- return chart.accepting_entry ? true : false
190
+ chart.accepting_entry ? true : false
191
191
  end
192
192
 
193
193
  # Return true if there are more than one complete state
194
194
  # for the same lhs and same origin in any state set.
195
- def ambiguous?()
195
+ def ambiguous?
196
196
  found = chart.sets.find { |set| !set.ambiguities.empty? }
197
- return !found.nil?
198
- end
199
-
200
- # Factory method. Builds a ParseForest from the parse result.
201
- # @return [ParseForest]
202
- def parse_forest()
203
- msg = <<-END_MSG
204
- Method Rley::Parser::GFGParsing.parse_forest is deprecated, call
205
- Rley::Engine::to_pforest. It will be removed June 1st
206
- or version 0.6.1 (whichever is first)
207
- END_MSG
208
- # warn(msg)
209
- factory = ParseRep::ParseForestFactory.new(self)
210
-
211
- return factory.create
197
+ !found.nil?
212
198
  end
213
199
 
214
200
  # Retrieve the very first parse entry added to the chart.
215
201
  # This entry corresponds to the start vertex of the GF graph
216
202
  # with origin equal to zero.
217
- def initial_entry()
218
- return chart.initial_entry
203
+ def initial_entry
204
+ chart.initial_entry
219
205
  end
220
206
 
221
207
  # Retrieve the accepting parse entry that represents
222
208
  # a complete, successful parse
223
209
  # After a successful parse, the last chart entry set
224
210
  # has an end parse entry that involves the start symbol
225
- def accepting_entry()
211
+ def accepting_entry
226
212
  return chart.accepting_entry
227
213
  end
228
214
 
@@ -232,7 +218,7 @@ END_MSG
232
218
  end
233
219
 
234
220
  # A notification that the parsing reached an end
235
- def done()
221
+ def done
236
222
  # Parse not successful and no reason identified
237
223
  # Assuming that parse failed because of a premature end
238
224
  premature_end unless success? || failure_reason
@@ -240,7 +226,7 @@ END_MSG
240
226
 
241
227
  # Clean and normalize the object.
242
228
  # Call this method when the parsing is complete.
243
- def tidy_up!()
229
+ def tidy_up!
244
230
  antecedence.each_key do |entry|
245
231
  antecedence[entry].uniq!
246
232
  end
@@ -259,7 +245,7 @@ END_MSG
259
245
  end
260
246
 
261
247
  # @return [String] A human readable representation of itself.
262
- def to_s()
248
+ def to_s
263
249
  result = +''
264
250
  result << "success? #{success?}\n"
265
251
  result << "chart:\n"
@@ -297,7 +283,6 @@ END_MSG
297
283
 
298
284
  antecedence[consequent] << antecedentEntry
299
285
 
300
-
301
286
  =begin
302
287
  # Invariant checks
303
288
  antecedents = antecedence[consequent]
@@ -335,7 +320,7 @@ END_MSG
335
320
  end
336
321
  =end
337
322
  consequent.add_antecedent(antecedentEntry)
338
- return consequent
323
+ consequent
339
324
  end
340
325
 
341
326
  # Push a parse entry (vertex + origin) to the
@@ -350,15 +335,16 @@ END_MSG
350
335
  def forest_builder(anIndex)
351
336
  full_range = { low: 0, high: anIndex }
352
337
  start_production = chart.start_dotted_rule.production
353
- return ParseForestBuilder.new(start_production, full_range)
338
+
339
+ ParseForestBuilder.new(start_production, full_range)
354
340
  end
355
341
 
356
342
  # Factory method. Creates and initializes a ParseEntryTracker instance.
357
- def new_entry_tracker()
343
+ def new_entry_tracker
358
344
  instance = ParseEntryTracker.new(chart.last_index)
359
345
  instance.parse_entry = accepting_entry
360
346
 
361
- return instance
347
+ instance
362
348
  end
363
349
  end # class
364
350
  end # module