rley 0.7.06 → 0.8.01

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +362 -62
  3. data/.travis.yml +6 -6
  4. data/CHANGELOG.md +20 -4
  5. data/LICENSE.txt +1 -1
  6. data/README.md +7 -7
  7. data/examples/NLP/engtagger.rb +193 -190
  8. data/examples/NLP/nano_eng/nano_en_demo.rb +7 -11
  9. data/examples/NLP/nano_eng/nano_grammar.rb +21 -21
  10. data/examples/NLP/pico_en_demo.rb +2 -2
  11. data/examples/data_formats/JSON/cli_options.rb +1 -1
  12. data/examples/data_formats/JSON/json_ast_builder.rb +21 -27
  13. data/examples/data_formats/JSON/json_ast_nodes.rb +12 -21
  14. data/examples/data_formats/JSON/json_demo.rb +1 -2
  15. data/examples/data_formats/JSON/json_grammar.rb +13 -13
  16. data/examples/data_formats/JSON/json_lexer.rb +8 -8
  17. data/examples/data_formats/JSON/json_minifier.rb +1 -1
  18. data/examples/general/calc_iter1/calc_ast_builder.rb +13 -10
  19. data/examples/general/calc_iter1/calc_ast_nodes.rb +23 -37
  20. data/examples/general/calc_iter1/calc_grammar.rb +7 -6
  21. data/examples/general/calc_iter1/calc_lexer.rb +6 -4
  22. data/examples/general/calc_iter1/spec/calculator_spec.rb +5 -5
  23. data/examples/general/calc_iter2/calc_ast_builder.rb +5 -3
  24. data/examples/general/calc_iter2/calc_ast_nodes.rb +27 -43
  25. data/examples/general/calc_iter2/calc_grammar.rb +12 -12
  26. data/examples/general/calc_iter2/calc_lexer.rb +11 -10
  27. data/examples/general/calc_iter2/spec/calculator_spec.rb +26 -26
  28. data/examples/general/left.rb +2 -2
  29. data/examples/general/right.rb +2 -2
  30. data/lib/rley.rb +1 -1
  31. data/lib/rley/base/dotted_item.rb +28 -31
  32. data/lib/rley/base/grm_items_builder.rb +6 -0
  33. data/lib/rley/constants.rb +2 -2
  34. data/lib/rley/engine.rb +22 -25
  35. data/lib/rley/formatter/asciitree.rb +3 -3
  36. data/lib/rley/formatter/bracket_notation.rb +1 -8
  37. data/lib/rley/formatter/debug.rb +6 -6
  38. data/lib/rley/formatter/json.rb +2 -2
  39. data/lib/rley/gfg/call_edge.rb +1 -1
  40. data/lib/rley/gfg/edge.rb +5 -5
  41. data/lib/rley/gfg/end_vertex.rb +2 -6
  42. data/lib/rley/gfg/epsilon_edge.rb +1 -5
  43. data/lib/rley/gfg/grm_flow_graph.rb +27 -23
  44. data/lib/rley/gfg/item_vertex.rb +10 -10
  45. data/lib/rley/gfg/non_terminal_vertex.rb +4 -4
  46. data/lib/rley/gfg/scan_edge.rb +1 -1
  47. data/lib/rley/gfg/shortcut_edge.rb +2 -2
  48. data/lib/rley/gfg/start_vertex.rb +4 -8
  49. data/lib/rley/gfg/vertex.rb +43 -39
  50. data/lib/rley/interface.rb +16 -0
  51. data/lib/rley/lexical/token_range.rb +6 -6
  52. data/lib/rley/notation/all_notation_nodes.rb +2 -0
  53. data/lib/rley/notation/ast_builder.rb +191 -0
  54. data/lib/rley/notation/ast_node.rb +44 -0
  55. data/lib/rley/notation/ast_visitor.rb +113 -0
  56. data/lib/rley/notation/grammar.rb +49 -0
  57. data/lib/rley/notation/grammar_builder.rb +504 -0
  58. data/lib/rley/notation/grouping_node.rb +23 -0
  59. data/lib/rley/notation/parser.rb +56 -0
  60. data/lib/rley/notation/sequence_node.rb +35 -0
  61. data/lib/rley/notation/symbol_node.rb +29 -0
  62. data/lib/rley/notation/tokenizer.rb +192 -0
  63. data/lib/rley/parse_forest_visitor.rb +5 -5
  64. data/lib/rley/parse_rep/ast_base_builder.rb +48 -11
  65. data/lib/rley/parse_rep/cst_builder.rb +5 -6
  66. data/lib/rley/parse_rep/parse_forest_builder.rb +22 -18
  67. data/lib/rley/parse_rep/parse_forest_factory.rb +3 -3
  68. data/lib/rley/parse_rep/parse_rep_creator.rb +14 -16
  69. data/lib/rley/parse_rep/parse_tree_builder.rb +4 -4
  70. data/lib/rley/parse_rep/parse_tree_factory.rb +27 -27
  71. data/lib/rley/parse_tree_visitor.rb +1 -1
  72. data/lib/rley/parser/error_reason.rb +4 -5
  73. data/lib/rley/parser/gfg_chart.rb +118 -26
  74. data/lib/rley/parser/gfg_parsing.rb +22 -33
  75. data/lib/rley/parser/parse_entry.rb +25 -31
  76. data/lib/rley/parser/parse_entry_set.rb +19 -16
  77. data/lib/rley/parser/parse_entry_tracker.rb +4 -4
  78. data/lib/rley/parser/parse_tracer.rb +13 -13
  79. data/lib/rley/parser/parse_walker_factory.rb +23 -28
  80. data/lib/rley/ptree/non_terminal_node.rb +7 -5
  81. data/lib/rley/ptree/parse_tree.rb +3 -3
  82. data/lib/rley/ptree/parse_tree_node.rb +5 -5
  83. data/lib/rley/ptree/terminal_node.rb +7 -7
  84. data/lib/rley/rley_error.rb +12 -12
  85. data/lib/rley/sppf/alternative_node.rb +6 -6
  86. data/lib/rley/sppf/composite_node.rb +7 -7
  87. data/lib/rley/sppf/epsilon_node.rb +3 -3
  88. data/lib/rley/sppf/leaf_node.rb +3 -3
  89. data/lib/rley/sppf/parse_forest.rb +16 -16
  90. data/lib/rley/sppf/sppf_node.rb +7 -8
  91. data/lib/rley/sppf/token_node.rb +3 -3
  92. data/lib/rley/syntax/{grammar_builder.rb → base_grammar_builder.rb} +61 -23
  93. data/lib/rley/syntax/grammar.rb +5 -5
  94. data/lib/rley/syntax/grm_symbol.rb +7 -7
  95. data/lib/rley/syntax/match_closest.rb +43 -0
  96. data/lib/rley/syntax/non_terminal.rb +9 -15
  97. data/lib/rley/syntax/production.rb +16 -10
  98. data/lib/rley/syntax/symbol_seq.rb +7 -9
  99. data/lib/rley/syntax/terminal.rb +4 -5
  100. data/lib/rley/syntax/verbatim_symbol.rb +3 -3
  101. data/lib/support/base_tokenizer.rb +19 -18
  102. data/spec/rley/base/dotted_item_spec.rb +2 -2
  103. data/spec/rley/engine_spec.rb +23 -21
  104. data/spec/rley/formatter/asciitree_spec.rb +7 -7
  105. data/spec/rley/formatter/bracket_notation_spec.rb +13 -13
  106. data/spec/rley/formatter/json_spec.rb +1 -1
  107. data/spec/rley/gfg/end_vertex_spec.rb +5 -5
  108. data/spec/rley/gfg/grm_flow_graph_spec.rb +2 -2
  109. data/spec/rley/gfg/item_vertex_spec.rb +10 -10
  110. data/spec/rley/gfg/non_terminal_vertex_spec.rb +3 -3
  111. data/spec/rley/gfg/shortcut_edge_spec.rb +1 -1
  112. data/spec/rley/gfg/start_vertex_spec.rb +5 -5
  113. data/spec/rley/gfg/vertex_spec.rb +3 -3
  114. data/spec/rley/lexical/token_range_spec.rb +16 -16
  115. data/spec/rley/lexical/token_spec.rb +2 -2
  116. data/spec/rley/notation/grammar_builder_spec.rb +302 -0
  117. data/spec/rley/notation/parser_spec.rb +184 -0
  118. data/spec/rley/notation/tokenizer_spec.rb +370 -0
  119. data/spec/rley/parse_forest_visitor_spec.rb +165 -163
  120. data/spec/rley/parse_rep/ambiguous_parse_spec.rb +44 -44
  121. data/spec/rley/parse_rep/ast_builder_spec.rb +6 -7
  122. data/spec/rley/parse_rep/cst_builder_spec.rb +5 -5
  123. data/spec/rley/parse_rep/groucho_spec.rb +24 -26
  124. data/spec/rley/parse_rep/parse_forest_builder_spec.rb +27 -27
  125. data/spec/rley/parse_rep/parse_forest_factory_spec.rb +8 -8
  126. data/spec/rley/parse_rep/parse_tree_factory_spec.rb +3 -3
  127. data/spec/rley/parse_tree_visitor_spec.rb +10 -8
  128. data/spec/rley/parser/dangling_else_spec.rb +445 -0
  129. data/spec/rley/parser/error_reason_spec.rb +6 -6
  130. data/spec/rley/parser/gfg_earley_parser_spec.rb +120 -12
  131. data/spec/rley/parser/gfg_parsing_spec.rb +6 -13
  132. data/spec/rley/parser/parse_entry_spec.rb +19 -19
  133. data/spec/rley/parser/parse_walker_factory_spec.rb +10 -10
  134. data/spec/rley/ptree/non_terminal_node_spec.rb +5 -3
  135. data/spec/rley/ptree/parse_tree_node_spec.rb +4 -4
  136. data/spec/rley/ptree/terminal_node_spec.rb +6 -6
  137. data/spec/rley/sppf/alternative_node_spec.rb +6 -6
  138. data/spec/rley/sppf/non_terminal_node_spec.rb +3 -3
  139. data/spec/rley/sppf/token_node_spec.rb +4 -4
  140. data/spec/rley/support/ambiguous_grammar_helper.rb +4 -5
  141. data/spec/rley/support/grammar_abc_helper.rb +3 -5
  142. data/spec/rley/support/grammar_ambig01_helper.rb +5 -6
  143. data/spec/rley/support/grammar_arr_int_helper.rb +5 -6
  144. data/spec/rley/support/grammar_b_expr_helper.rb +5 -6
  145. data/spec/rley/support/grammar_int_seq_helper.rb +51 -0
  146. data/spec/rley/support/grammar_l0_helper.rb +14 -17
  147. data/spec/rley/support/grammar_pb_helper.rb +8 -7
  148. data/spec/rley/support/grammar_sppf_helper.rb +3 -3
  149. data/spec/rley/syntax/{grammar_builder_spec.rb → base_grammar_builder_spec.rb} +35 -16
  150. data/spec/rley/syntax/grammar_spec.rb +6 -6
  151. data/spec/rley/syntax/grm_symbol_spec.rb +1 -1
  152. data/spec/rley/syntax/match_closest_spec.rb +46 -0
  153. data/spec/rley/syntax/non_terminal_spec.rb +8 -8
  154. data/spec/rley/syntax/production_spec.rb +17 -13
  155. data/spec/rley/syntax/symbol_seq_spec.rb +2 -2
  156. data/spec/rley/syntax/terminal_spec.rb +5 -5
  157. data/spec/rley/syntax/verbatim_symbol_spec.rb +1 -1
  158. data/spec/spec_helper.rb +0 -12
  159. data/spec/support/base_tokenizer_spec.rb +7 -2
  160. metadata +48 -74
  161. data/.simplecov +0 -7
  162. data/lib/rley/parser/parse_state.rb +0 -83
  163. data/lib/rley/parser/parse_state_tracker.rb +0 -59
  164. data/lib/rley/parser/state_set.rb +0 -101
  165. data/spec/rley/parser/parse_state_spec.rb +0 -125
  166. data/spec/rley/parser/parse_tracer_spec.rb +0 -200
  167. data/spec/rley/parser/state_set_spec.rb +0 -130
@@ -19,18 +19,18 @@ module Rley # Open this namespace to avoid module qualifier prefixes
19
19
  it 'should know its name' do
20
20
  expect(subject.name).to eq(sample_name)
21
21
  end
22
-
22
+
23
23
  it 'should know that is a terminal symbol' do
24
24
  expect(subject).to be_terminal
25
- end
26
-
25
+ end
26
+
27
27
  it "should know that isn't nullable" do
28
28
  expect(subject).not_to be_nullable
29
29
  end
30
-
30
+
31
31
  it 'should know that it is generative' do
32
32
  expect(subject).to be_generative
33
- end
33
+ end
34
34
  end # context
35
35
  end # describe
36
36
  end # module
@@ -24,7 +24,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
24
24
  expect(subject.text).to eq(sample_name)
25
25
  end
26
26
  end # context
27
-
27
+
28
28
  context 'Provided services:' do
29
29
  it 'should give its text representation' do
30
30
  expected = "'#{sample_name}'"
data/spec/spec_helper.rb CHANGED
@@ -3,18 +3,6 @@
3
3
  # File: spec_helper.rb
4
4
  # Purpose: utility file that is loaded by all our RSpec files
5
5
 
6
- require 'simplecov'
7
- require 'coveralls'
8
-
9
- Coveralls.wear!
10
-
11
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
12
- [
13
- SimpleCov::Formatter::HTMLFormatter,
14
- Coveralls::SimpleCov::Formatter
15
- ]
16
- )
17
-
18
6
  require 'pp' # Use pretty-print for debugging purposes
19
7
  require 'rspec' # Use the RSpec framework
20
8
 
@@ -25,6 +25,8 @@ describe BaseTokenizer do
25
25
 
26
26
 
27
27
  context 'Provided services:' do
28
+ # Simplistic tokenizer.
29
+ # rubocop: disable Lint/ConstantDefinitionInBlock
28
30
  class PB_Tokenizer < BaseTokenizer
29
31
  @@lexeme2name = {
30
32
  '(' => 'LPAREN',
@@ -34,8 +36,9 @@ describe BaseTokenizer do
34
36
 
35
37
  protected
36
38
 
37
- def recognize_token()
38
- if (lexeme = scanner.scan(/[\(\)]/)) # Single characters
39
+ # rubocop: disable Lint/DuplicateBranch
40
+ def recognize_token
41
+ if (lexeme = scanner.scan(/[()]/)) # Single characters
39
42
  # Delimiters, separators => single character token
40
43
  build_token(@@lexeme2name[lexeme], lexeme)
41
44
  elsif (lexeme = scanner.scan(/(?:\+)(?=\s)/)) # Isolated char
@@ -44,7 +47,9 @@ describe BaseTokenizer do
44
47
  build_token('int', lexeme)
45
48
  end
46
49
  end
50
+ # rubocop: enable Lint/DuplicateBranch
47
51
  end # class
52
+ # rubocop: enable Lint/ConstantDefinitionInBlock
48
53
 
49
54
  # Basic tokenizer
50
55
  # @return [Array<Rley::Lexical::Token>]
metadata CHANGED
@@ -1,115 +1,75 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rley
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.06
4
+ version: 0.8.01
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-22 00:00:00.000000000 Z
11
+ date: 2021-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: coveralls
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 0.7.0
20
17
  - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '0.7'
23
- type: :development
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 0.7.0
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: '0.7'
33
- - !ruby/object:Gem::Dependency
34
- name: rake
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
19
+ version: '10.0'
37
20
  - - ">="
38
21
  - !ruby/object:Gem::Version
39
22
  version: 10.0.0
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: '10.0'
43
23
  type: :development
44
24
  prerelease: false
45
25
  version_requirements: !ruby/object:Gem::Requirement
46
26
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: 10.0.0
50
27
  - - "~>"
51
28
  - !ruby/object:Gem::Version
52
29
  version: '10.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 10.0.0
53
33
  - !ruby/object:Gem::Dependency
54
34
  name: rspec
55
35
  requirement: !ruby/object:Gem::Requirement
56
36
  requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: 3.5.0
60
37
  - - "~>"
61
38
  - !ruby/object:Gem::Version
62
39
  version: '3.5'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 3.5.0
63
43
  type: :development
64
44
  prerelease: false
65
45
  version_requirements: !ruby/object:Gem::Requirement
66
46
  requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: 3.5.0
70
47
  - - "~>"
71
48
  - !ruby/object:Gem::Version
72
49
  version: '3.5'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 3.5.0
73
53
  - !ruby/object:Gem::Dependency
74
54
  name: rubygems
75
55
  requirement: !ruby/object:Gem::Requirement
76
56
  requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: 2.0.0
80
57
  - - "~>"
81
58
  - !ruby/object:Gem::Version
82
59
  version: '2.0'
83
- type: :development
84
- prerelease: false
85
- version_requirements: !ruby/object:Gem::Requirement
86
- requirements:
87
60
  - - ">="
88
61
  - !ruby/object:Gem::Version
89
62
  version: 2.0.0
90
- - - "~>"
91
- - !ruby/object:Gem::Version
92
- version: '2.0'
93
- - !ruby/object:Gem::Dependency
94
- name: simplecov
95
- requirement: !ruby/object:Gem::Requirement
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- version: 0.1.0
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '0.1'
103
63
  type: :development
104
64
  prerelease: false
105
65
  version_requirements: !ruby/object:Gem::Requirement
106
66
  requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: 0.1.0
110
67
  - - "~>"
111
68
  - !ruby/object:Gem::Version
112
- version: '0.1'
69
+ version: '2.0'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 2.0.0
113
73
  description: A general parser using the Earley algorithm.
114
74
  email: famished.tiger@yahoo.com
115
75
  executables: []
@@ -120,7 +80,6 @@ files:
120
80
  - ".rspec"
121
81
  - ".rubocop.yml"
122
82
  - ".ruby-gemset"
123
- - ".simplecov"
124
83
  - ".travis.yml"
125
84
  - ".yardopts"
126
85
  - CHANGELOG.md
@@ -177,8 +136,20 @@ files:
177
136
  - lib/rley/gfg/shortcut_edge.rb
178
137
  - lib/rley/gfg/start_vertex.rb
179
138
  - lib/rley/gfg/vertex.rb
139
+ - lib/rley/interface.rb
180
140
  - lib/rley/lexical/token.rb
181
141
  - lib/rley/lexical/token_range.rb
142
+ - lib/rley/notation/all_notation_nodes.rb
143
+ - lib/rley/notation/ast_builder.rb
144
+ - lib/rley/notation/ast_node.rb
145
+ - lib/rley/notation/ast_visitor.rb
146
+ - lib/rley/notation/grammar.rb
147
+ - lib/rley/notation/grammar_builder.rb
148
+ - lib/rley/notation/grouping_node.rb
149
+ - lib/rley/notation/parser.rb
150
+ - lib/rley/notation/sequence_node.rb
151
+ - lib/rley/notation/symbol_node.rb
152
+ - lib/rley/notation/tokenizer.rb
182
153
  - lib/rley/parse_forest_visitor.rb
183
154
  - lib/rley/parse_rep/ast_base_builder.rb
184
155
  - lib/rley/parse_rep/cst_builder.rb
@@ -195,11 +166,8 @@ files:
195
166
  - lib/rley/parser/parse_entry.rb
196
167
  - lib/rley/parser/parse_entry_set.rb
197
168
  - lib/rley/parser/parse_entry_tracker.rb
198
- - lib/rley/parser/parse_state.rb
199
- - lib/rley/parser/parse_state_tracker.rb
200
169
  - lib/rley/parser/parse_tracer.rb
201
170
  - lib/rley/parser/parse_walker_factory.rb
202
- - lib/rley/parser/state_set.rb
203
171
  - lib/rley/ptree/non_terminal_node.rb
204
172
  - lib/rley/ptree/parse_tree.rb
205
173
  - lib/rley/ptree/parse_tree_node.rb
@@ -213,10 +181,11 @@ files:
213
181
  - lib/rley/sppf/parse_forest.rb
214
182
  - lib/rley/sppf/sppf_node.rb
215
183
  - lib/rley/sppf/token_node.rb
184
+ - lib/rley/syntax/base_grammar_builder.rb
216
185
  - lib/rley/syntax/grammar.rb
217
- - lib/rley/syntax/grammar_builder.rb
218
186
  - lib/rley/syntax/grm_symbol.rb
219
187
  - lib/rley/syntax/literal.rb
188
+ - lib/rley/syntax/match_closest.rb
220
189
  - lib/rley/syntax/non_terminal.rb
221
190
  - lib/rley/syntax/production.rb
222
191
  - lib/rley/syntax/symbol_seq.rb
@@ -244,6 +213,9 @@ files:
244
213
  - spec/rley/gfg/vertex_spec.rb
245
214
  - spec/rley/lexical/token_range_spec.rb
246
215
  - spec/rley/lexical/token_spec.rb
216
+ - spec/rley/notation/grammar_builder_spec.rb
217
+ - spec/rley/notation/parser_spec.rb
218
+ - spec/rley/notation/tokenizer_spec.rb
247
219
  - spec/rley/parse_forest_visitor_spec.rb
248
220
  - spec/rley/parse_rep/ambiguous_parse_spec.rb
249
221
  - spec/rley/parse_rep/ast_builder_spec.rb
@@ -253,16 +225,14 @@ files:
253
225
  - spec/rley/parse_rep/parse_forest_factory_spec.rb
254
226
  - spec/rley/parse_rep/parse_tree_factory_spec.rb
255
227
  - spec/rley/parse_tree_visitor_spec.rb
228
+ - spec/rley/parser/dangling_else_spec.rb
256
229
  - spec/rley/parser/error_reason_spec.rb
257
230
  - spec/rley/parser/gfg_chart_spec.rb
258
231
  - spec/rley/parser/gfg_earley_parser_spec.rb
259
232
  - spec/rley/parser/gfg_parsing_spec.rb
260
233
  - spec/rley/parser/parse_entry_set_spec.rb
261
234
  - spec/rley/parser/parse_entry_spec.rb
262
- - spec/rley/parser/parse_state_spec.rb
263
- - spec/rley/parser/parse_tracer_spec.rb
264
235
  - spec/rley/parser/parse_walker_factory_spec.rb
265
- - spec/rley/parser/state_set_spec.rb
266
236
  - spec/rley/ptree/non_terminal_node_spec.rb
267
237
  - spec/rley/ptree/parse_tree_node_spec.rb
268
238
  - spec/rley/ptree/parse_tree_spec.rb
@@ -277,13 +247,15 @@ files:
277
247
  - spec/rley/support/grammar_arr_int_helper.rb
278
248
  - spec/rley/support/grammar_b_expr_helper.rb
279
249
  - spec/rley/support/grammar_helper.rb
250
+ - spec/rley/support/grammar_int_seq_helper.rb
280
251
  - spec/rley/support/grammar_l0_helper.rb
281
252
  - spec/rley/support/grammar_pb_helper.rb
282
253
  - spec/rley/support/grammar_sppf_helper.rb
283
- - spec/rley/syntax/grammar_builder_spec.rb
254
+ - spec/rley/syntax/base_grammar_builder_spec.rb
284
255
  - spec/rley/syntax/grammar_spec.rb
285
256
  - spec/rley/syntax/grm_symbol_spec.rb
286
257
  - spec/rley/syntax/literal_spec.rb
258
+ - spec/rley/syntax/match_closest_spec.rb
287
259
  - spec/rley/syntax/non_terminal_spec.rb
288
260
  - spec/rley/syntax/production_spec.rb
289
261
  - spec/rley/syntax/symbol_seq_spec.rb
@@ -307,15 +279,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
307
279
  requirements:
308
280
  - - ">="
309
281
  - !ruby/object:Gem::Version
310
- version: 2.3.0
282
+ version: 2.5.0
311
283
  required_rubygems_version: !ruby/object:Gem::Requirement
312
284
  requirements:
313
285
  - - ">="
314
286
  - !ruby/object:Gem::Version
315
287
  version: '0'
316
288
  requirements: []
317
- rubygems_version: 3.0.3
318
- signing_key:
289
+ rubygems_version: 3.1.4
290
+ signing_key:
319
291
  specification_version: 4
320
292
  summary: Ruby implementation of the Earley's parsing algorithm
321
293
  test_files:
@@ -340,16 +312,17 @@ test_files:
340
312
  - spec/rley/gfg/vertex_spec.rb
341
313
  - spec/rley/lexical/token_range_spec.rb
342
314
  - spec/rley/lexical/token_spec.rb
315
+ - spec/rley/notation/grammar_builder_spec.rb
316
+ - spec/rley/notation/parser_spec.rb
317
+ - spec/rley/notation/tokenizer_spec.rb
318
+ - spec/rley/parser/dangling_else_spec.rb
343
319
  - spec/rley/parser/error_reason_spec.rb
344
320
  - spec/rley/parser/gfg_chart_spec.rb
345
321
  - spec/rley/parser/gfg_earley_parser_spec.rb
346
322
  - spec/rley/parser/gfg_parsing_spec.rb
347
323
  - spec/rley/parser/parse_entry_set_spec.rb
348
324
  - spec/rley/parser/parse_entry_spec.rb
349
- - spec/rley/parser/parse_state_spec.rb
350
- - spec/rley/parser/parse_tracer_spec.rb
351
325
  - spec/rley/parser/parse_walker_factory_spec.rb
352
- - spec/rley/parser/state_set_spec.rb
353
326
  - spec/rley/parse_forest_visitor_spec.rb
354
327
  - spec/rley/parse_rep/ambiguous_parse_spec.rb
355
328
  - spec/rley/parse_rep/ast_builder_spec.rb
@@ -366,10 +339,11 @@ test_files:
366
339
  - spec/rley/sppf/alternative_node_spec.rb
367
340
  - spec/rley/sppf/non_terminal_node_spec.rb
368
341
  - spec/rley/sppf/token_node_spec.rb
369
- - spec/rley/syntax/grammar_builder_spec.rb
342
+ - spec/rley/syntax/base_grammar_builder_spec.rb
370
343
  - spec/rley/syntax/grammar_spec.rb
371
344
  - spec/rley/syntax/grm_symbol_spec.rb
372
345
  - spec/rley/syntax/literal_spec.rb
346
+ - spec/rley/syntax/match_closest_spec.rb
373
347
  - spec/rley/syntax/non_terminal_spec.rb
374
348
  - spec/rley/syntax/production_spec.rb
375
349
  - spec/rley/syntax/symbol_seq_spec.rb
data/.simplecov DELETED
@@ -1,7 +0,0 @@
1
- # .simplecov
2
- # Configuration
3
-
4
- SimpleCov.start do
5
- # Remove all files that match /spec/ in their path
6
- add_filter "/spec/"
7
- end
@@ -1,83 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Rley # This module is used as a namespace
4
- module Parser # This module is used as a namespace
5
- class ParseState
6
- attr_reader(:dotted_rule)
7
-
8
- # the position in the input that matches the beginning of the rhs
9
- # of the production.
10
- attr_reader(:origin)
11
-
12
- def initialize(aDottedRule, theOrigin)
13
- @dotted_rule = valid_dotted_rule(aDottedRule)
14
- @origin = theOrigin
15
- end
16
-
17
- # Equality comparison. A parse state behaves as a value object.
18
- def ==(other)
19
- return true if equal?(other)
20
-
21
- result = (dotted_rule == other.dotted_rule) &&
22
- (origin == other.origin)
23
-
24
- return result
25
- end
26
-
27
- # Returns true if the dot is at the end of the rhs of the production.
28
- # In other words, the complete rhs matches the input.
29
- def complete?()
30
- return dotted_rule.reduce_item?
31
- end
32
-
33
- # Returns true if the dot is at the start of the rhs of the production.
34
- def predicted?()
35
- return dotted_rule.predicted_item?
36
- end
37
-
38
- # Next expected symbol in the production
39
- def next_symbol()
40
- return dotted_rule.next_symbol
41
- end
42
-
43
- # Does this parse state have the 'other' as successor?
44
- def precedes?(other)
45
- return false if other == self
46
-
47
- return false unless origin == other.origin
48
-
49
- other_production = other.dotted_rule.production
50
- return false unless dotted_rule.production == other_production
51
-
52
- prev_position = other.dotted_rule.prev_position
53
- result = if prev_position.nil?
54
- false
55
- else
56
- dotted_rule.position == prev_position
57
- end
58
-
59
- return result
60
- end
61
-
62
- # Give a String representation of itself.
63
- # The format of the text representation is
64
- # "format of dotted rule" + " | " + origin
65
- # @return [String]
66
- def to_s()
67
- return dotted_rule.to_s + " | #{origin}"
68
- end
69
-
70
-
71
- private
72
-
73
- # Return the validated dotted item(rule)
74
- def valid_dotted_rule(aDottedRule)
75
- raise StandardError, 'Dotted item cannot be nil' if aDottedRule.nil?
76
-
77
- return aDottedRule
78
- end
79
- end # class
80
- end # module
81
- end # module
82
-
83
- # End of file