rley 0.7.06 → 0.8.01

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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