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.
- checksums.yaml +4 -4
- data/.rubocop.yml +362 -62
- data/.travis.yml +6 -6
- data/CHANGELOG.md +20 -4
- data/LICENSE.txt +1 -1
- data/README.md +7 -7
- data/examples/NLP/engtagger.rb +193 -190
- data/examples/NLP/nano_eng/nano_en_demo.rb +7 -11
- data/examples/NLP/nano_eng/nano_grammar.rb +21 -21
- data/examples/NLP/pico_en_demo.rb +2 -2
- data/examples/data_formats/JSON/cli_options.rb +1 -1
- data/examples/data_formats/JSON/json_ast_builder.rb +21 -27
- data/examples/data_formats/JSON/json_ast_nodes.rb +12 -21
- data/examples/data_formats/JSON/json_demo.rb +1 -2
- data/examples/data_formats/JSON/json_grammar.rb +13 -13
- data/examples/data_formats/JSON/json_lexer.rb +8 -8
- data/examples/data_formats/JSON/json_minifier.rb +1 -1
- data/examples/general/calc_iter1/calc_ast_builder.rb +13 -10
- data/examples/general/calc_iter1/calc_ast_nodes.rb +23 -37
- data/examples/general/calc_iter1/calc_grammar.rb +7 -6
- data/examples/general/calc_iter1/calc_lexer.rb +6 -4
- data/examples/general/calc_iter1/spec/calculator_spec.rb +5 -5
- data/examples/general/calc_iter2/calc_ast_builder.rb +5 -3
- data/examples/general/calc_iter2/calc_ast_nodes.rb +27 -43
- data/examples/general/calc_iter2/calc_grammar.rb +12 -12
- data/examples/general/calc_iter2/calc_lexer.rb +11 -10
- data/examples/general/calc_iter2/spec/calculator_spec.rb +26 -26
- data/examples/general/left.rb +2 -2
- data/examples/general/right.rb +2 -2
- data/lib/rley.rb +1 -1
- data/lib/rley/base/dotted_item.rb +28 -31
- data/lib/rley/base/grm_items_builder.rb +6 -0
- data/lib/rley/constants.rb +2 -2
- data/lib/rley/engine.rb +22 -25
- data/lib/rley/formatter/asciitree.rb +3 -3
- data/lib/rley/formatter/bracket_notation.rb +1 -8
- data/lib/rley/formatter/debug.rb +6 -6
- data/lib/rley/formatter/json.rb +2 -2
- data/lib/rley/gfg/call_edge.rb +1 -1
- data/lib/rley/gfg/edge.rb +5 -5
- data/lib/rley/gfg/end_vertex.rb +2 -6
- data/lib/rley/gfg/epsilon_edge.rb +1 -5
- data/lib/rley/gfg/grm_flow_graph.rb +27 -23
- data/lib/rley/gfg/item_vertex.rb +10 -10
- data/lib/rley/gfg/non_terminal_vertex.rb +4 -4
- data/lib/rley/gfg/scan_edge.rb +1 -1
- data/lib/rley/gfg/shortcut_edge.rb +2 -2
- data/lib/rley/gfg/start_vertex.rb +4 -8
- data/lib/rley/gfg/vertex.rb +43 -39
- data/lib/rley/interface.rb +16 -0
- data/lib/rley/lexical/token_range.rb +6 -6
- data/lib/rley/notation/all_notation_nodes.rb +2 -0
- data/lib/rley/notation/ast_builder.rb +191 -0
- data/lib/rley/notation/ast_node.rb +44 -0
- data/lib/rley/notation/ast_visitor.rb +113 -0
- data/lib/rley/notation/grammar.rb +49 -0
- data/lib/rley/notation/grammar_builder.rb +504 -0
- data/lib/rley/notation/grouping_node.rb +23 -0
- data/lib/rley/notation/parser.rb +56 -0
- data/lib/rley/notation/sequence_node.rb +35 -0
- data/lib/rley/notation/symbol_node.rb +29 -0
- data/lib/rley/notation/tokenizer.rb +192 -0
- data/lib/rley/parse_forest_visitor.rb +5 -5
- data/lib/rley/parse_rep/ast_base_builder.rb +48 -11
- data/lib/rley/parse_rep/cst_builder.rb +5 -6
- data/lib/rley/parse_rep/parse_forest_builder.rb +22 -18
- data/lib/rley/parse_rep/parse_forest_factory.rb +3 -3
- data/lib/rley/parse_rep/parse_rep_creator.rb +14 -16
- data/lib/rley/parse_rep/parse_tree_builder.rb +4 -4
- data/lib/rley/parse_rep/parse_tree_factory.rb +27 -27
- data/lib/rley/parse_tree_visitor.rb +1 -1
- data/lib/rley/parser/error_reason.rb +4 -5
- data/lib/rley/parser/gfg_chart.rb +118 -26
- data/lib/rley/parser/gfg_parsing.rb +22 -33
- data/lib/rley/parser/parse_entry.rb +25 -31
- data/lib/rley/parser/parse_entry_set.rb +19 -16
- data/lib/rley/parser/parse_entry_tracker.rb +4 -4
- data/lib/rley/parser/parse_tracer.rb +13 -13
- data/lib/rley/parser/parse_walker_factory.rb +23 -28
- data/lib/rley/ptree/non_terminal_node.rb +7 -5
- data/lib/rley/ptree/parse_tree.rb +3 -3
- data/lib/rley/ptree/parse_tree_node.rb +5 -5
- data/lib/rley/ptree/terminal_node.rb +7 -7
- data/lib/rley/rley_error.rb +12 -12
- data/lib/rley/sppf/alternative_node.rb +6 -6
- data/lib/rley/sppf/composite_node.rb +7 -7
- data/lib/rley/sppf/epsilon_node.rb +3 -3
- data/lib/rley/sppf/leaf_node.rb +3 -3
- data/lib/rley/sppf/parse_forest.rb +16 -16
- data/lib/rley/sppf/sppf_node.rb +7 -8
- data/lib/rley/sppf/token_node.rb +3 -3
- data/lib/rley/syntax/{grammar_builder.rb → base_grammar_builder.rb} +61 -23
- data/lib/rley/syntax/grammar.rb +5 -5
- data/lib/rley/syntax/grm_symbol.rb +7 -7
- data/lib/rley/syntax/match_closest.rb +43 -0
- data/lib/rley/syntax/non_terminal.rb +9 -15
- data/lib/rley/syntax/production.rb +16 -10
- data/lib/rley/syntax/symbol_seq.rb +7 -9
- data/lib/rley/syntax/terminal.rb +4 -5
- data/lib/rley/syntax/verbatim_symbol.rb +3 -3
- data/lib/support/base_tokenizer.rb +19 -18
- data/spec/rley/base/dotted_item_spec.rb +2 -2
- data/spec/rley/engine_spec.rb +23 -21
- data/spec/rley/formatter/asciitree_spec.rb +7 -7
- data/spec/rley/formatter/bracket_notation_spec.rb +13 -13
- data/spec/rley/formatter/json_spec.rb +1 -1
- data/spec/rley/gfg/end_vertex_spec.rb +5 -5
- data/spec/rley/gfg/grm_flow_graph_spec.rb +2 -2
- data/spec/rley/gfg/item_vertex_spec.rb +10 -10
- data/spec/rley/gfg/non_terminal_vertex_spec.rb +3 -3
- data/spec/rley/gfg/shortcut_edge_spec.rb +1 -1
- data/spec/rley/gfg/start_vertex_spec.rb +5 -5
- data/spec/rley/gfg/vertex_spec.rb +3 -3
- data/spec/rley/lexical/token_range_spec.rb +16 -16
- data/spec/rley/lexical/token_spec.rb +2 -2
- data/spec/rley/notation/grammar_builder_spec.rb +302 -0
- data/spec/rley/notation/parser_spec.rb +184 -0
- data/spec/rley/notation/tokenizer_spec.rb +370 -0
- data/spec/rley/parse_forest_visitor_spec.rb +165 -163
- data/spec/rley/parse_rep/ambiguous_parse_spec.rb +44 -44
- data/spec/rley/parse_rep/ast_builder_spec.rb +6 -7
- data/spec/rley/parse_rep/cst_builder_spec.rb +5 -5
- data/spec/rley/parse_rep/groucho_spec.rb +24 -26
- data/spec/rley/parse_rep/parse_forest_builder_spec.rb +27 -27
- data/spec/rley/parse_rep/parse_forest_factory_spec.rb +8 -8
- data/spec/rley/parse_rep/parse_tree_factory_spec.rb +3 -3
- data/spec/rley/parse_tree_visitor_spec.rb +10 -8
- data/spec/rley/parser/dangling_else_spec.rb +445 -0
- data/spec/rley/parser/error_reason_spec.rb +6 -6
- data/spec/rley/parser/gfg_earley_parser_spec.rb +120 -12
- data/spec/rley/parser/gfg_parsing_spec.rb +6 -13
- data/spec/rley/parser/parse_entry_spec.rb +19 -19
- data/spec/rley/parser/parse_walker_factory_spec.rb +10 -10
- data/spec/rley/ptree/non_terminal_node_spec.rb +5 -3
- data/spec/rley/ptree/parse_tree_node_spec.rb +4 -4
- data/spec/rley/ptree/terminal_node_spec.rb +6 -6
- data/spec/rley/sppf/alternative_node_spec.rb +6 -6
- data/spec/rley/sppf/non_terminal_node_spec.rb +3 -3
- data/spec/rley/sppf/token_node_spec.rb +4 -4
- data/spec/rley/support/ambiguous_grammar_helper.rb +4 -5
- data/spec/rley/support/grammar_abc_helper.rb +3 -5
- data/spec/rley/support/grammar_ambig01_helper.rb +5 -6
- data/spec/rley/support/grammar_arr_int_helper.rb +5 -6
- data/spec/rley/support/grammar_b_expr_helper.rb +5 -6
- data/spec/rley/support/grammar_int_seq_helper.rb +51 -0
- data/spec/rley/support/grammar_l0_helper.rb +14 -17
- data/spec/rley/support/grammar_pb_helper.rb +8 -7
- data/spec/rley/support/grammar_sppf_helper.rb +3 -3
- data/spec/rley/syntax/{grammar_builder_spec.rb → base_grammar_builder_spec.rb} +35 -16
- data/spec/rley/syntax/grammar_spec.rb +6 -6
- data/spec/rley/syntax/grm_symbol_spec.rb +1 -1
- data/spec/rley/syntax/match_closest_spec.rb +46 -0
- data/spec/rley/syntax/non_terminal_spec.rb +8 -8
- data/spec/rley/syntax/production_spec.rb +17 -13
- data/spec/rley/syntax/symbol_seq_spec.rb +2 -2
- data/spec/rley/syntax/terminal_spec.rb +5 -5
- data/spec/rley/syntax/verbatim_symbol_spec.rb +1 -1
- data/spec/spec_helper.rb +0 -12
- data/spec/support/base_tokenizer_spec.rb +7 -2
- metadata +48 -74
- data/.simplecov +0 -7
- data/lib/rley/parser/parse_state.rb +0 -83
- data/lib/rley/parser/parse_state_tracker.rb +0 -59
- data/lib/rley/parser/state_set.rb +0 -101
- data/spec/rley/parser/parse_state_spec.rb +0 -125
- data/spec/rley/parser/parse_tracer_spec.rb +0 -200
- 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
|
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
|
-
|
38
|
-
|
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.
|
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:
|
11
|
+
date: 2021-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
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
|
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
|
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/
|
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.
|
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.
|
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/
|
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,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
|