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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +22 -13
  3. data/.travis.yml +8 -7
  4. data/CHANGELOG.md +9 -0
  5. data/README.md +9 -10
  6. data/examples/NLP/mini_en_demo.rb +7 -7
  7. data/examples/data_formats/JSON/cli_options.rb +5 -6
  8. data/examples/data_formats/JSON/{JSON_demo.rb → json_demo.rb} +2 -2
  9. data/examples/data_formats/JSON/{JSON_grammar.rb → json_grammar.rb} +10 -10
  10. data/examples/data_formats/JSON/{JSON_lexer.rb → json_lexer.rb} +17 -22
  11. data/examples/data_formats/JSON/{JSON_parser.rb → json_parser.rb} +2 -2
  12. data/examples/general/calc/calc_demo.rb +1 -1
  13. data/examples/general/calc/calc_grammar.rb +5 -5
  14. data/examples/general/calc/calc_lexer.rb +14 -17
  15. data/examples/general/calc/calc_parser.rb +2 -2
  16. data/lib/rley/constants.rb +1 -1
  17. data/lib/rley/formatter/asciitree.rb +15 -16
  18. data/lib/rley/formatter/bracket_notation.rb +3 -6
  19. data/lib/rley/formatter/debug.rb +0 -1
  20. data/lib/rley/formatter/json.rb +0 -1
  21. data/lib/rley/gfg/grm_flow_graph.rb +11 -10
  22. data/lib/rley/parse_forest_visitor.rb +0 -3
  23. data/lib/rley/parse_tree_visitor.rb +0 -3
  24. data/lib/rley/parser/error_reason.rb +1 -5
  25. data/lib/rley/parser/gfg_chart.rb +2 -2
  26. data/lib/rley/parser/gfg_earley_parser.rb +1 -2
  27. data/lib/rley/parser/gfg_parsing.rb +3 -7
  28. data/lib/rley/parser/parse_entry.rb +0 -1
  29. data/lib/rley/parser/parse_entry_set.rb +15 -16
  30. data/lib/rley/parser/parse_forest_builder.rb +8 -23
  31. data/lib/rley/parser/parse_state.rb +1 -1
  32. data/lib/rley/parser/parse_tree_builder.rb +2 -30
  33. data/lib/rley/parser/parse_tree_factory.rb +1 -1
  34. data/lib/rley/parser/parse_walker_factory.rb +3 -6
  35. data/lib/rley/parser/state_set.rb +0 -1
  36. data/lib/rley/ptree/parse_tree.rb +0 -1
  37. data/lib/rley/ptree/terminal_node.rb +4 -1
  38. data/lib/rley/rley_error.rb +1 -1
  39. data/lib/rley/sppf/composite_node.rb +0 -1
  40. data/lib/rley/sppf/parse_forest.rb +0 -1
  41. data/lib/rley/syntax/grammar.rb +5 -9
  42. data/lib/rley/syntax/grammar_builder.rb +8 -11
  43. data/lib/rley/syntax/grm_symbol.rb +0 -1
  44. data/lib/rley/syntax/production.rb +5 -4
  45. data/lib/rley/tokens/token_range.rb +0 -1
  46. data/spec/rley/formatter/bracket_notation_spec.rb +3 -1
  47. data/spec/rley/gfg/grm_flow_graph_spec.rb +15 -46
  48. data/spec/rley/gfg/item_vertex_spec.rb +1 -1
  49. data/spec/rley/parse_forest_visitor_spec.rb +1 -1
  50. data/spec/rley/parse_tree_visitor_spec.rb +2 -2
  51. data/spec/rley/parser/error_reason_spec.rb +19 -14
  52. data/spec/rley/parser/gfg_chart_spec.rb +1 -1
  53. data/spec/rley/parser/gfg_earley_parser_spec.rb +15 -15
  54. data/spec/rley/parser/gfg_parsing_spec.rb +3 -3
  55. data/spec/rley/parser/groucho_spec.rb +6 -7
  56. data/spec/rley/parser/parse_forest_builder_spec.rb +5 -5
  57. data/spec/rley/parser/parse_forest_factory_spec.rb +5 -5
  58. data/spec/rley/parser/parse_state_spec.rb +8 -0
  59. data/spec/rley/parser/parse_tracer_spec.rb +1 -1
  60. data/spec/rley/parser/parse_tree_builder_spec.rb +26 -29
  61. data/spec/rley/parser/parse_tree_factory_spec.rb +5 -5
  62. data/spec/rley/parser/parse_walker_factory_spec.rb +5 -5
  63. data/spec/rley/ptree/parse_tree_node_spec.rb +2 -2
  64. data/spec/rley/ptree/terminal_node_spec.rb +1 -1
  65. data/spec/rley/support/ambiguous_grammar_helper.rb +1 -1
  66. data/spec/rley/support/expectation_helper.rb +0 -1
  67. data/spec/rley/support/grammar_abc_helper.rb +1 -1
  68. data/spec/rley/support/grammar_ambig01_helper.rb +2 -3
  69. data/spec/rley/support/grammar_b_expr_helper.rb +2 -2
  70. data/spec/rley/support/grammar_l0_helper.rb +7 -8
  71. data/spec/rley/support/grammar_pb_helper.rb +3 -4
  72. data/spec/rley/support/grammar_sppf_helper.rb +4 -4
  73. data/spec/rley/syntax/grammar_builder_spec.rb +5 -4
  74. data/spec/rley/syntax/grammar_spec.rb +10 -11
  75. data/spec/rley/syntax/symbol_seq_spec.rb +2 -2
  76. data/spec/rley/syntax/terminal_spec.rb +1 -1
  77. 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(A T)
16
- rule 'S' => %w(a T)
15
+ rule 'S' => %w[A T]
16
+ rule 'S' => %w[a T]
17
17
  rule 'A' => 'a'
18
- rule 'A' => %w(B A)
18
+ rule 'A' => %w[B A]
19
19
  rule 'B' => []
20
- rule 'T' => %w(b b b)
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 GrammarBuilder.new { nil }
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(a A c))
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(a A c))
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(E Q F))
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 is undefined
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 is undefined
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
- prod_S1 = Rley::Syntax::Production.new(nt_S, [nt_A])
204
- prod_S2 = Rley::Syntax::Production.new(nt_S, [nt_B])
205
- prod_A = Rley::Syntax::Production.new(nt_A, [a_])
206
- prod_B = Rley::Syntax::Production.new(nt_B, [nt_C])
207
- prod_C = Rley::Syntax::Production.new(nt_C, [nt_D])
208
- prod_D = Rley::Syntax::Production.new(nt_D, [nt_B])
209
- instance = Grammar.new([prod_S1, prod_S2, prod_A, prod_B, prod_C, prod_D])
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 = 'Cannot compare a SymbolSeq with a Fixnum'
62
- expect { subject == 1 }.to raise_error(err, msg)
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 "should know that it is generative" do
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.06
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-25 00:00:00.000000000 Z
11
+ date: 2017-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
14
+ name: coveralls
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '10.0'
19
+ version: '0.7'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 10.0.0
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: '10.0'
29
+ version: '0.7'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 10.0.0
32
+ version: 0.7.0
33
33
  - !ruby/object:Gem::Dependency
34
- name: rspec
34
+ name: rake
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '3.5'
39
+ version: '10.0'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 3.5.0
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: '3.5'
49
+ version: '10.0'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 3.5.0
52
+ version: 10.0.0
53
53
  - !ruby/object:Gem::Dependency
54
- name: simplecov
54
+ name: rspec
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '0.1'
59
+ version: '3.5'
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 0.1.0
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: '0.1'
69
+ version: '3.5'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 0.1.0
72
+ version: 3.5.0
73
73
  - !ruby/object:Gem::Dependency
74
- name: coveralls
74
+ name: rubygems
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
77
  - - "~>"
78
78
  - !ruby/object:Gem::Version
79
- version: '0.7'
79
+ version: '2.0'
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 0.7.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.7'
89
+ version: '2.0'
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: 0.7.0
92
+ version: 2.0.0
93
93
  - !ruby/object:Gem::Dependency
94
- name: rubygems
94
+ name: simplecov
95
95
  requirement: !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: '2.0'
99
+ version: '0.1'
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: 2.0.0
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: '2.0'
109
+ version: '0.1'
110
110
  - - ">="
111
111
  - !ruby/object:Gem::Version
112
- version: 2.0.0
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