rley 0.4.06 → 0.4.07
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 +22 -13
- data/.travis.yml +8 -7
- data/CHANGELOG.md +9 -0
- data/README.md +9 -10
- data/examples/NLP/mini_en_demo.rb +7 -7
- data/examples/data_formats/JSON/cli_options.rb +5 -6
- data/examples/data_formats/JSON/{JSON_demo.rb → json_demo.rb} +2 -2
- data/examples/data_formats/JSON/{JSON_grammar.rb → json_grammar.rb} +10 -10
- data/examples/data_formats/JSON/{JSON_lexer.rb → json_lexer.rb} +17 -22
- data/examples/data_formats/JSON/{JSON_parser.rb → json_parser.rb} +2 -2
- data/examples/general/calc/calc_demo.rb +1 -1
- data/examples/general/calc/calc_grammar.rb +5 -5
- data/examples/general/calc/calc_lexer.rb +14 -17
- data/examples/general/calc/calc_parser.rb +2 -2
- data/lib/rley/constants.rb +1 -1
- data/lib/rley/formatter/asciitree.rb +15 -16
- data/lib/rley/formatter/bracket_notation.rb +3 -6
- data/lib/rley/formatter/debug.rb +0 -1
- data/lib/rley/formatter/json.rb +0 -1
- data/lib/rley/gfg/grm_flow_graph.rb +11 -10
- data/lib/rley/parse_forest_visitor.rb +0 -3
- data/lib/rley/parse_tree_visitor.rb +0 -3
- data/lib/rley/parser/error_reason.rb +1 -5
- data/lib/rley/parser/gfg_chart.rb +2 -2
- data/lib/rley/parser/gfg_earley_parser.rb +1 -2
- data/lib/rley/parser/gfg_parsing.rb +3 -7
- data/lib/rley/parser/parse_entry.rb +0 -1
- data/lib/rley/parser/parse_entry_set.rb +15 -16
- data/lib/rley/parser/parse_forest_builder.rb +8 -23
- data/lib/rley/parser/parse_state.rb +1 -1
- data/lib/rley/parser/parse_tree_builder.rb +2 -30
- data/lib/rley/parser/parse_tree_factory.rb +1 -1
- data/lib/rley/parser/parse_walker_factory.rb +3 -6
- data/lib/rley/parser/state_set.rb +0 -1
- data/lib/rley/ptree/parse_tree.rb +0 -1
- data/lib/rley/ptree/terminal_node.rb +4 -1
- data/lib/rley/rley_error.rb +1 -1
- data/lib/rley/sppf/composite_node.rb +0 -1
- data/lib/rley/sppf/parse_forest.rb +0 -1
- data/lib/rley/syntax/grammar.rb +5 -9
- data/lib/rley/syntax/grammar_builder.rb +8 -11
- data/lib/rley/syntax/grm_symbol.rb +0 -1
- data/lib/rley/syntax/production.rb +5 -4
- data/lib/rley/tokens/token_range.rb +0 -1
- data/spec/rley/formatter/bracket_notation_spec.rb +3 -1
- data/spec/rley/gfg/grm_flow_graph_spec.rb +15 -46
- data/spec/rley/gfg/item_vertex_spec.rb +1 -1
- data/spec/rley/parse_forest_visitor_spec.rb +1 -1
- data/spec/rley/parse_tree_visitor_spec.rb +2 -2
- data/spec/rley/parser/error_reason_spec.rb +19 -14
- data/spec/rley/parser/gfg_chart_spec.rb +1 -1
- data/spec/rley/parser/gfg_earley_parser_spec.rb +15 -15
- data/spec/rley/parser/gfg_parsing_spec.rb +3 -3
- data/spec/rley/parser/groucho_spec.rb +6 -7
- data/spec/rley/parser/parse_forest_builder_spec.rb +5 -5
- data/spec/rley/parser/parse_forest_factory_spec.rb +5 -5
- data/spec/rley/parser/parse_state_spec.rb +8 -0
- data/spec/rley/parser/parse_tracer_spec.rb +1 -1
- data/spec/rley/parser/parse_tree_builder_spec.rb +26 -29
- data/spec/rley/parser/parse_tree_factory_spec.rb +5 -5
- data/spec/rley/parser/parse_walker_factory_spec.rb +5 -5
- data/spec/rley/ptree/parse_tree_node_spec.rb +2 -2
- data/spec/rley/ptree/terminal_node_spec.rb +1 -1
- data/spec/rley/support/ambiguous_grammar_helper.rb +1 -1
- data/spec/rley/support/expectation_helper.rb +0 -1
- data/spec/rley/support/grammar_abc_helper.rb +1 -1
- data/spec/rley/support/grammar_ambig01_helper.rb +2 -3
- data/spec/rley/support/grammar_b_expr_helper.rb +2 -2
- data/spec/rley/support/grammar_l0_helper.rb +7 -8
- data/spec/rley/support/grammar_pb_helper.rb +3 -4
- data/spec/rley/support/grammar_sppf_helper.rb +4 -4
- data/spec/rley/syntax/grammar_builder_spec.rb +5 -4
- data/spec/rley/syntax/grammar_spec.rb +10 -11
- data/spec/rley/syntax/symbol_seq_spec.rb +2 -2
- data/spec/rley/syntax/terminal_spec.rb +1 -1
- metadata +31 -31
@@ -12,12 +12,12 @@ module GrammarSPPFHelper
|
|
12
12
|
builder = Rley::Syntax::GrammarBuilder.new do
|
13
13
|
add_terminals('a', 'b')
|
14
14
|
rule 'Phi' => 'S'
|
15
|
-
rule 'S' => %w
|
16
|
-
rule 'S' => %w
|
15
|
+
rule 'S' => %w[A T]
|
16
|
+
rule 'S' => %w[a T]
|
17
17
|
rule 'A' => 'a'
|
18
|
-
rule 'A' => %w
|
18
|
+
rule 'A' => %w[B A]
|
19
19
|
rule 'B' => []
|
20
|
-
rule 'T' => %w
|
20
|
+
rule 'T' => %w[b b b]
|
21
21
|
end
|
22
22
|
|
23
23
|
return builder
|
@@ -22,7 +22,8 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
22
22
|
|
23
23
|
context 'Initialization with argument:' do
|
24
24
|
it 'could be created with a block argument' do
|
25
|
-
expect do
|
25
|
+
expect do
|
26
|
+
GrammarBuilder.new { nil }
|
26
27
|
end.not_to raise_error
|
27
28
|
end
|
28
29
|
|
@@ -90,7 +91,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
90
91
|
expect(new_prod.lhs).to eq(subject['S'])
|
91
92
|
expect(new_prod.rhs[0]).to eq(subject['A'])
|
92
93
|
|
93
|
-
subject.add_production('A' => %w
|
94
|
+
subject.add_production('A' => %w[a A c])
|
94
95
|
expect(subject.productions.size).to eq(2)
|
95
96
|
new_prod = subject.productions.last
|
96
97
|
expect(new_prod.lhs).to eq(subject['A'])
|
@@ -111,7 +112,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
111
112
|
instance = GrammarBuilder.new do
|
112
113
|
add_terminals('a', 'b', 'c')
|
113
114
|
add_production('S' => ['A'])
|
114
|
-
add_production('A' => %w
|
115
|
+
add_production('A' => %w[a A c])
|
115
116
|
add_production('A' => ['b'])
|
116
117
|
end
|
117
118
|
|
@@ -175,7 +176,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
175
176
|
builder = GrammarBuilder.new
|
176
177
|
builder.add_terminals(t_a, t_star, t_slash)
|
177
178
|
builder.add_production('S' => 'E')
|
178
|
-
builder.add_production('E' => %w
|
179
|
+
builder.add_production('E' => %w[E Q F])
|
179
180
|
builder.add_production('E' => 'F')
|
180
181
|
builder.add_production('F' => t_a)
|
181
182
|
builder.add_production('Q' => t_star)
|
@@ -79,7 +79,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
79
79
|
let(:prod_S) { Production.new(nt_S, [nt_A]) }
|
80
80
|
let(:prod_A1) { Production.new(nt_A, [a_, nt_A, c_]) }
|
81
81
|
let(:prod_A2) { Production.new(nt_A, [b_]) }
|
82
|
-
let(:prod_A3) {Production.new(nt_A, [c_, nt_C]
|
82
|
+
let(:prod_A3) { Production.new(nt_A, [c_, nt_C]) }
|
83
83
|
|
84
84
|
=begin
|
85
85
|
# Non-terminals that specify the lexicon of the language
|
@@ -170,7 +170,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
170
170
|
prod_S1 = Rley::Syntax::Production.new(nt_S, [nt_A])
|
171
171
|
prod_S2 = Rley::Syntax::Production.new(nt_S, [nt_B])
|
172
172
|
prod_A = Rley::Syntax::Production.new(nt_A, [a_])
|
173
|
-
prod_B = Rley::Syntax::Production.new(nt_B, [nt_C, b_]) # C
|
173
|
+
prod_B = Rley::Syntax::Production.new(nt_B, [nt_C, b_]) # C undefined
|
174
174
|
instance = Grammar.new([prod_S1, prod_S2, prod_A, prod_B])
|
175
175
|
undefineds = instance.non_terminals.select(&:undefined?)
|
176
176
|
expect(undefineds.size).to eq(1)
|
@@ -185,7 +185,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
185
185
|
prod_S1 = Rley::Syntax::Production.new(nt_S, [nt_A])
|
186
186
|
prod_S2 = Rley::Syntax::Production.new(nt_S, [nt_B])
|
187
187
|
prod_A = Rley::Syntax::Production.new(nt_A, [a_])
|
188
|
-
prod_B = Rley::Syntax::Production.new(nt_B, [nt_C, b_]) # C
|
188
|
+
prod_B = Rley::Syntax::Production.new(nt_B, [nt_C, b_]) # C undefined
|
189
189
|
instance = Grammar.new([prod_S1, prod_S2, prod_A, prod_B])
|
190
190
|
partitioning = instance.non_terminals.partition(&:generative?)
|
191
191
|
expect(partitioning[0].size).to eq(2)
|
@@ -200,13 +200,13 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
200
200
|
# 'B' => 'C'
|
201
201
|
# 'C' => 'D'
|
202
202
|
# 'D' => 'B'
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
instance = Grammar.new([
|
203
|
+
prd_S1 = Rley::Syntax::Production.new(nt_S, [nt_A])
|
204
|
+
prd_S2 = Rley::Syntax::Production.new(nt_S, [nt_B])
|
205
|
+
prd_A = Rley::Syntax::Production.new(nt_A, [a_])
|
206
|
+
prd_B = Rley::Syntax::Production.new(nt_B, [nt_C])
|
207
|
+
prd_C = Rley::Syntax::Production.new(nt_C, [nt_D])
|
208
|
+
prd_D = Rley::Syntax::Production.new(nt_D, [nt_B])
|
209
|
+
instance = Grammar.new([prd_S1, prd_S2, prd_A, prd_B, prd_C, prd_D])
|
210
210
|
partitioning = instance.non_terminals.partition(&:generative?)
|
211
211
|
expect(partitioning[0].size).to eq(2)
|
212
212
|
expect(partitioning[0]).to eq([nt_S, nt_A])
|
@@ -241,7 +241,6 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
241
241
|
end
|
242
242
|
end
|
243
243
|
end # context
|
244
|
-
|
245
244
|
end # describe
|
246
245
|
end # module
|
247
246
|
end # module
|
@@ -58,8 +58,8 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
58
58
|
|
59
59
|
it 'should complain when unable to compare' do
|
60
60
|
err = StandardError
|
61
|
-
msg =
|
62
|
-
expect { subject ==
|
61
|
+
msg = "Cannot compare a SymbolSeq with a String"
|
62
|
+
expect { subject == 'dummy-text' }.to raise_error(err, msg)
|
63
63
|
end
|
64
64
|
end # context
|
65
65
|
end # describe
|
@@ -26,7 +26,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
26
26
|
expect(subject).not_to be_nullable
|
27
27
|
end
|
28
28
|
|
29
|
-
it
|
29
|
+
it 'should know that it is generative' do
|
30
30
|
expect(subject).to be_generative
|
31
31
|
end
|
32
32
|
end # context
|
metadata
CHANGED
@@ -1,115 +1,115 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rley
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.07
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitri Geshef
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: coveralls
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0.7'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 0.7.0
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '0.7'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 0.7.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: rake
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '10.0'
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
42
|
+
version: 10.0.0
|
43
43
|
type: :development
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
49
|
+
version: '10.0'
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
52
|
+
version: 10.0.0
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
|
-
name:
|
54
|
+
name: rspec
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
57
|
- - "~>"
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: '
|
59
|
+
version: '3.5'
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 3.5.0
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '3.5'
|
70
70
|
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version:
|
72
|
+
version: 3.5.0
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
|
-
name:
|
74
|
+
name: rubygems
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
76
76
|
requirements:
|
77
77
|
- - "~>"
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version: '0
|
79
|
+
version: '2.0'
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
82
|
+
version: 2.0.0
|
83
83
|
type: :development
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0
|
89
|
+
version: '2.0'
|
90
90
|
- - ">="
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version: 0.
|
92
|
+
version: 2.0.0
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
|
-
name:
|
94
|
+
name: simplecov
|
95
95
|
requirement: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
97
|
- - "~>"
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: '
|
99
|
+
version: '0.1'
|
100
100
|
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
102
|
+
version: 0.1.0
|
103
103
|
type: :development
|
104
104
|
prerelease: false
|
105
105
|
version_requirements: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
109
|
+
version: '0.1'
|
110
110
|
- - ">="
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version:
|
112
|
+
version: 0.1.0
|
113
113
|
description: A general parser using the Earley algorithm.
|
114
114
|
email: famished.tiger@yahoo.com
|
115
115
|
executables: []
|
@@ -131,11 +131,11 @@ files:
|
|
131
131
|
- Rakefile
|
132
132
|
- appveyor.yml
|
133
133
|
- examples/NLP/mini_en_demo.rb
|
134
|
-
- examples/data_formats/JSON/JSON_demo.rb
|
135
|
-
- examples/data_formats/JSON/JSON_grammar.rb
|
136
|
-
- examples/data_formats/JSON/JSON_lexer.rb
|
137
|
-
- examples/data_formats/JSON/JSON_parser.rb
|
138
134
|
- examples/data_formats/JSON/cli_options.rb
|
135
|
+
- examples/data_formats/JSON/json_demo.rb
|
136
|
+
- examples/data_formats/JSON/json_grammar.rb
|
137
|
+
- examples/data_formats/JSON/json_lexer.rb
|
138
|
+
- examples/data_formats/JSON/json_parser.rb
|
139
139
|
- examples/general/calc/calc_demo.rb
|
140
140
|
- examples/general/calc/calc_grammar.rb
|
141
141
|
- examples/general/calc/calc_lexer.rb
|