rley 0.4.01 → 0.4.02

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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/LICENSE.txt +2 -2
  4. data/README.md +3 -3
  5. data/examples/NLP/mini_en_demo.rb +1 -1
  6. data/examples/data_formats/JSON/JSON_demo.rb +1 -0
  7. data/examples/data_formats/JSON/JSON_lexer.rb +4 -4
  8. data/examples/general/calc/calc_lexer.rb +2 -2
  9. data/lib/rley.rb +1 -1
  10. data/lib/rley/constants.rb +1 -1
  11. data/lib/rley/formatter/debug.rb +2 -2
  12. data/lib/rley/formatter/json.rb +4 -4
  13. data/lib/rley/parse_tree_visitor.rb +9 -9
  14. data/lib/rley/parser/base_parser.rb +1 -1
  15. data/lib/rley/parser/gfg_parsing.rb +9 -0
  16. data/lib/rley/parser/parse_tree_builder.rb +176 -126
  17. data/lib/rley/parser/parse_tree_factory.rb +57 -0
  18. data/lib/rley/ptree/non_terminal_node.rb +10 -9
  19. data/lib/rley/ptree/parse_tree_node.rb +10 -5
  20. data/lib/rley/ptree/terminal_node.rb +14 -6
  21. data/lib/rley/sppf/sppf_node.rb +2 -2
  22. data/lib/rley/{parser → tokens}/token.rb +1 -4
  23. data/lib/rley/{ptree → tokens}/token_range.rb +1 -1
  24. data/spec/rley/formatter/debug_spec.rb +16 -16
  25. data/spec/rley/formatter/json_spec.rb +8 -8
  26. data/spec/rley/parse_forest_visitor_spec.rb +1 -1
  27. data/spec/rley/parse_tree_visitor_spec.rb +28 -28
  28. data/spec/rley/parser/error_reason_spec.rb +3 -3
  29. data/spec/rley/parser/gfg_chart_spec.rb +2 -2
  30. data/spec/rley/parser/gfg_earley_parser_spec.rb +2 -2
  31. data/spec/rley/parser/gfg_parsing_spec.rb +2 -2
  32. data/spec/rley/parser/groucho_spec.rb +1 -1
  33. data/spec/rley/parser/parse_tracer_spec.rb +2 -2
  34. data/spec/rley/parser/parse_tree_builder_spec.rb +213 -140
  35. data/spec/rley/parser/parse_tree_factory_spec.rb +85 -0
  36. data/spec/rley/parser/parse_walker_factory_spec.rb +11 -10
  37. data/spec/rley/ptree/non_terminal_node_spec.rb +23 -20
  38. data/spec/rley/ptree/terminal_node_spec.rb +7 -12
  39. data/spec/rley/sppf/alternative_node_spec.rb +2 -2
  40. data/spec/rley/sppf/non_terminal_node_spec.rb +2 -2
  41. data/spec/rley/support/ambiguous_grammar_helper.rb +2 -2
  42. data/spec/rley/support/expectation_helper.rb +1 -1
  43. data/spec/rley/support/grammar_ambig01_helper.rb +2 -2
  44. data/spec/rley/support/grammar_b_expr_helper.rb +2 -2
  45. data/spec/rley/support/grammar_helper.rb +3 -3
  46. data/spec/rley/support/grammar_l0_helper.rb +2 -2
  47. data/spec/rley/support/grammar_pb_helper.rb +2 -2
  48. data/spec/rley/{ptree → tokens}/token_range_spec.rb +2 -2
  49. data/spec/rley/{parser → tokens}/token_spec.rb +2 -2
  50. metadata +11 -17
  51. data/lib/rley/parser/chart.rb +0 -82
  52. data/lib/rley/parser/earley_parser.rb +0 -203
  53. data/lib/rley/parser/parsing.rb +0 -265
  54. data/spec/rley/parser/chart_spec.rb +0 -120
  55. data/spec/rley/parser/earley_parser_spec.rb +0 -710
  56. data/spec/rley/parser/parsing_spec.rb +0 -408
@@ -0,0 +1,85 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ require_relative '../../../lib/rley/parser/gfg_earley_parser'
4
+
5
+ require_relative '../../../lib/rley/syntax/grammar_builder'
6
+ require_relative '../support/grammar_helper'
7
+ require_relative '../support/expectation_helper'
8
+
9
+ # Load the class under test
10
+ require_relative '../../../lib/rley/parser/parse_forest_factory'
11
+
12
+ module Rley # Open this namespace to avoid module qualifier prefixes
13
+ module Parser
14
+ describe ParseForestFactory do
15
+ include GrammarHelper # Mix-in with token factory method
16
+ include ExpectationHelper # Mix-in with expectation on parse entry sets
17
+
18
+ let(:sample_grammar) do
19
+ # Grammar based on paper from Elisabeth Scott
20
+ # "SPPF-Style Parsing From Earley Recognizers" in
21
+ # Notes in Theoretical Computer Science 203, (2008), pp. 53-67
22
+ # contains a hidden left recursion and a cycle
23
+ builder = Syntax::GrammarBuilder.new do
24
+ add_terminals('a', 'b')
25
+ rule 'Phi' => 'S'
26
+ rule 'S' => %w(A T)
27
+ rule 'S' => %w(a T)
28
+ rule 'A' => 'a'
29
+ rule 'A' => %w(B A)
30
+ rule 'B' => []
31
+ rule 'T' => %w(b b b)
32
+ end
33
+ builder.grammar
34
+ end
35
+
36
+ let(:sample_tokens) do
37
+ build_token_sequence(%w(a b b b), sample_grammar)
38
+ end
39
+
40
+ let(:sample_result) do
41
+ parser = Parser::GFGEarleyParser.new(sample_grammar)
42
+ parser.parse(sample_tokens)
43
+ end
44
+
45
+
46
+ subject do
47
+ ParseForestFactory.new(sample_result)
48
+ end
49
+
50
+ # Emit a text representation of the current path.
51
+ def path_to_s()
52
+ text_parts = subject.curr_path.map do |path_element|
53
+ path_element.to_string(0)
54
+ end
55
+ return text_parts.join('/')
56
+ end
57
+
58
+
59
+ context 'Initialization:' do
60
+ it 'should be created with a GFGParsing' do
61
+ expect { ParseForestFactory.new(sample_result) }.not_to raise_error
62
+ end
63
+
64
+ it 'should know the parse result' do
65
+ expect(subject.parsing).to eq(sample_result)
66
+ end
67
+ end
68
+
69
+ context 'Parse forest construction' do
70
+ it 'should build a parse forest' do
71
+ forest = subject.build_parse_forest
72
+ expect(forest).to be_kind_of(SPPF::ParseForest)
73
+ =begin
74
+ require 'yaml'
75
+ require_relative '../../../exp/lab/forest_representation'
76
+ File.open("forest.yml", "w") { |f| YAML.dump(forest, f) }
77
+ pen = ForestRepresentation.new
78
+ pen.generate_graph(forest, File.open("forest.dot", "w"))
79
+ =end
80
+ end
81
+ end # context
82
+ end # describe
83
+ end # module
84
+ end # module
85
+ # End of file
@@ -29,7 +29,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
29
29
  case entry
30
30
  when Parser::ParseEntry
31
31
  expect(entry.to_s).to eq(expectations[1])
32
- when Parser::Token
32
+ when Tokens::Token
33
33
  expect(entry.lexeme).to eq(expectations[1])
34
34
  end
35
35
  else
@@ -43,15 +43,16 @@ module Rley # Open this namespace to avoid module qualifier prefixes
43
43
  # "SPPF=Style Parsing From Earley Recognizers" in
44
44
  # Notes in Theoretical Computer Science 203, (2008), pp. 53-67
45
45
  # contains a hidden left recursion and a cycle
46
- builder = Syntax::GrammarBuilder.new
47
- builder.add_terminals('a', 'b')
48
- builder.add_production('Phi' => 'S')
49
- builder.add_production('S' => %w(A T))
50
- builder.add_production('S' => %w(a T))
51
- builder.add_production('A' => 'a')
52
- builder.add_production('A' => %w(B A))
53
- builder.add_production('B' => [])
54
- builder.add_production('T' => %w(b b b))
46
+ builder = Syntax::GrammarBuilder.new do
47
+ add_terminals('a', 'b')
48
+ rule'Phi' => 'S'
49
+ rule'S' => %w(A T)
50
+ rule'S' => %w(a T)
51
+ rule'A' => 'a'
52
+ rule'A' => %w(B A)
53
+ rule'B' => []
54
+ rule'T' => %w(b b b)
55
+ end
55
56
  builder.grammar
56
57
  end
57
58
 
@@ -10,7 +10,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
10
10
  describe NonTerminalNode do
11
11
  # Factory method. Generate a range from its boundary values.
12
12
  def range(low, high)
13
- return TokenRange.new(low: low, high: high)
13
+ return Tokens::TokenRange.new(low: low, high: high)
14
14
  end
15
15
 
16
16
  let(:sample_symbol) do
@@ -21,20 +21,25 @@ module Rley # Open this namespace to avoid module qualifier prefixes
21
21
  subject { NonTerminalNode.new(sample_symbol, sample_range) }
22
22
 
23
23
  context 'Initialization:' do
24
- it "shouldn't have children yet" do
25
- expect(subject.children).to be_empty
24
+ it "shouldn't have subnodes yet" do
25
+ expect(subject.subnodes).to be_empty
26
26
  end
27
27
  end # context
28
28
 
29
29
  context 'Provided services:' do
30
- it 'should accept the addition of children' do
30
+ def build_token(aLexeme, aSymbolName)
31
+ terminal = OpenStruct.new(name: aSymbolName)
32
+ return OpenStruct.new(lexeme: aLexeme, terminal: terminal)
33
+ end
34
+
35
+ it 'should accept the addition of subnodes' do
31
36
  child1 = double('first_child')
32
37
  child2 = double('second_child')
33
38
  child3 = double('third_child')
34
- expect { subject.add_child(child1) }.not_to raise_error
35
- subject.add_child(child2)
36
- subject.add_child(child3)
37
- expect(subject.children).to eq([child1, child2, child3])
39
+ expect { subject.add_subnode(child1) }.not_to raise_error
40
+ subject.add_subnode(child2)
41
+ subject.add_subnode(child3)
42
+ expect(subject.subnodes).to eq([child3, child2, child1])
38
43
  end
39
44
 
40
45
  it 'should provide a text representation of itself' do
@@ -42,25 +47,23 @@ module Rley # Open this namespace to avoid module qualifier prefixes
42
47
  expected_text = 'VP[0, 3]'
43
48
  expect(subject.to_string(0)).to eq(expected_text)
44
49
 
45
- # Case 2: with children
46
- verb = OpenStruct.new(name: 'Verb')
50
+ # Case 2: with subnodes
51
+ verb = build_token('catch', 'Verb')
47
52
  child_1_1 = TerminalNode.new(verb, range(0, 1))
48
53
  np = OpenStruct.new(name: 'NP')
49
54
  child_1_2 = NonTerminalNode.new(np, range(1, 3))
50
- det = OpenStruct.new(name: 'Determiner')
55
+ det = build_token('that', 'Determiner')
51
56
  child_2_1 = TerminalNode.new(det, range(1, 2))
52
57
  nominal = OpenStruct.new(name: 'Nominal')
53
58
  child_2_2 = NonTerminalNode.new(nominal, range(2, 3))
54
- noun = OpenStruct.new(name: 'Noun')
59
+ noun = build_token('bus', 'Noun')
55
60
  child_3_1 = TerminalNode.new(noun, range(2, 3))
56
- subject.add_child(child_1_1)
57
- subject.add_child(child_1_2)
58
- child_1_2.add_child(child_2_1)
59
- child_1_2.add_child(child_2_2)
60
- child_2_2.add_child(child_3_1)
61
- child_1_1.token = OpenStruct.new(lexeme: 'catch')
62
- child_2_1.token = OpenStruct.new(lexeme: 'that')
63
- child_3_1.token = OpenStruct.new(lexeme: 'bus')
61
+ # We reverse the sequence of subnode addition
62
+ subject.add_subnode(child_1_2)
63
+ subject.add_subnode(child_1_1)
64
+ child_1_2.add_subnode(child_2_2)
65
+ child_1_2.add_subnode(child_2_1)
66
+ child_2_2.add_subnode(child_3_1)
64
67
  expected_text = <<-SNIPPET
65
68
  VP[0, 3]
66
69
  +- Verb[0, 1]: 'catch'
@@ -7,28 +7,23 @@ require_relative '../../../lib/rley/ptree/terminal_node'
7
7
  module Rley # Open this namespace to avoid module qualifier prefixes
8
8
  module PTree # Open this namespace to avoid module qualifier prefixes
9
9
  describe TerminalNode do
10
- let(:sample_symbol) do
11
- OpenStruct.new(name: 'Noun')
10
+ let(:sample_symbol) { OpenStruct.new(name: 'Noun') }
11
+ let(:sample_token) do
12
+ OpenStruct.new(lexeme: 'world', terminal: sample_symbol)
12
13
  end
13
14
  let(:sample_range) { double('fake-range') }
14
15
 
15
- subject { TerminalNode.new(sample_symbol, sample_range) }
16
+ subject { TerminalNode.new(sample_token, sample_range) }
16
17
 
17
18
  context 'Initialization:' do
18
- it "shouldn't be already bound to a token" do
19
- expect(subject.token).to be_nil
19
+ it "should be bound to a token" do
20
+ expect(subject.token).to eq(sample_token)
20
21
  end
21
22
  end # context
22
23
 
23
24
  context 'Provided services:' do
24
25
  it 'should provide a text representation of itself' do
25
- # Case 1: not bound to a token
26
- expected_text = "Noun[?, ?]: '(nil)'"
27
- expect(subject.to_string(0)).to eq(expected_text)
28
-
29
- # Case 2: bound to token
30
- subject.token = OpenStruct.new(lexeme: 'peace')
31
- expected_text = "Noun[?, ?]: 'peace'"
26
+ expected_text = "Noun[?, ?]: 'world'"
32
27
  expect(subject.to_string(0)).to eq(expected_text)
33
28
  end
34
29
  end # context
@@ -4,7 +4,7 @@ require_relative '../../spec_helper'
4
4
  require_relative '../../../lib/rley/gfg/item_vertex'
5
5
  require_relative '../../../lib/rley/syntax/terminal'
6
6
  require_relative '../../../lib/rley/syntax/production'
7
- require_relative '../../../lib/rley/ptree/token_range'
7
+ require_relative '../../../lib/rley/tokens/token_range'
8
8
  require_relative '../../../lib/rley/parser/dotted_item'
9
9
 
10
10
  # Load the class under test
@@ -15,7 +15,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
15
15
  describe AlternativeNode do
16
16
  # Factory method. Generate a range from its boundary values.
17
17
  def range(low, high)
18
- return PTree::TokenRange.new(low: low, high: high)
18
+ return Tokens::TokenRange.new(low: low, high: high)
19
19
  end
20
20
 
21
21
  let(:t_a) { Syntax::Terminal.new('A') }
@@ -2,7 +2,7 @@ require 'ostruct'
2
2
  require_relative '../../spec_helper'
3
3
 
4
4
  require_relative '../../../lib/rley/syntax/non_terminal'
5
- require_relative '../../../lib/rley/ptree/token_range'
5
+ require_relative '../../../lib/rley/tokens/token_range'
6
6
 
7
7
  # Load the class under test
8
8
  require_relative '../../../lib/rley/sppf/non_terminal_node'
@@ -12,7 +12,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
12
12
  describe NonTerminalNode do
13
13
  # Factory method. Generate a range from its boundary values.
14
14
  def range(low, high)
15
- return PTree::TokenRange.new(low: low, high: high)
15
+ return Tokens::TokenRange.new(low: low, high: high)
16
16
  end
17
17
 
18
18
  let(:sample_symbol) do
@@ -1,6 +1,6 @@
1
1
  # Load the builder class
2
2
  require_relative '../../../lib/rley/syntax/grammar_builder'
3
- require_relative '../../../lib/rley/parser/token'
3
+ require_relative '../../../lib/rley/tokens/token'
4
4
 
5
5
 
6
6
  module AmbiguousGrammarHelper
@@ -29,7 +29,7 @@ module AmbiguousGrammarHelper
29
29
  msg = "Unknown input text '#{lexeme}'"
30
30
  raise StandardError, msg
31
31
  end
32
- Rley::Parser::Token.new(lexeme, terminal)
32
+ Rley::Tokens::Token.new(lexeme, terminal)
33
33
  end
34
34
 
35
35
  return tokens
@@ -1,5 +1,5 @@
1
1
  # Load the builder class
2
- require_relative '../../../lib/rley/parser/token'
2
+ require_relative '../../../lib/rley/tokens/token'
3
3
 
4
4
 
5
5
  # Mixin module implementing expectation helper methods.
@@ -1,6 +1,6 @@
1
1
  # Load the builder class
2
2
  require_relative '../../../lib/rley/syntax/grammar_builder'
3
- require_relative '../../../lib/rley/parser/token'
3
+ require_relative '../../../lib/rley/tokens/token'
4
4
 
5
5
 
6
6
  module GrammarAmbig01Helper
@@ -33,7 +33,7 @@ module GrammarAmbig01Helper
33
33
  msg = "Unknown input text '#{lexeme}'"
34
34
  raise StandardError, msg
35
35
  end
36
- Rley::Parser::Token.new(lexeme, terminal)
36
+ Rley::Tokens::Token.new(lexeme, terminal)
37
37
  end
38
38
 
39
39
  return tokens
@@ -1,6 +1,6 @@
1
1
  # Load the builder class
2
2
  require_relative '../../../lib/rley/syntax/grammar_builder'
3
- require_relative '../../../lib/rley/parser/token'
3
+ require_relative '../../../lib/rley/tokens/token'
4
4
 
5
5
 
6
6
  module GrammarBExprHelper
@@ -32,7 +32,7 @@ module GrammarBExprHelper
32
32
  msg = "Unknown input text '#{lexeme}'"
33
33
  raise StandardError, msg
34
34
  end
35
- Rley::Parser::Token.new(lexeme, terminal)
35
+ Rley::Tokens::Token.new(lexeme, terminal)
36
36
  end
37
37
 
38
38
  return tokens
@@ -1,5 +1,5 @@
1
1
  # Load the builder class
2
- require_relative '../../../lib/rley/parser/token'
2
+ require_relative '../../../lib/rley/tokens/token'
3
3
 
4
4
 
5
5
  # Mixin module implementing helper methods.
@@ -12,13 +12,13 @@ module GrammarHelper
12
12
  case lexeme
13
13
  when String
14
14
  terminal = aGrammar.name2symbol[lexeme]
15
- Rley::Parser::Token.new(lexeme, terminal)
15
+ Rley::Tokens::Token.new(lexeme, terminal)
16
16
 
17
17
  when Hash # lexeme is reality a Hash: literal => terminal name
18
18
  sub_array = lexeme.to_a
19
19
  sub_array.map do |(literal, name)|
20
20
  terminal = aGrammar.name2symbol[name]
21
- Rley::Parser::Token.new(literal, terminal)
21
+ Rley::Tokens::Token.new(literal, terminal)
22
22
  end
23
23
  end
24
24
  end
@@ -1,6 +1,6 @@
1
1
  # Load the builder class
2
2
  require_relative '../../../lib/rley/syntax/grammar_builder'
3
- require_relative '../../../lib/rley/parser/token'
3
+ require_relative '../../../lib/rley/tokens/token'
4
4
 
5
5
 
6
6
  module GrammarL0Helper
@@ -74,7 +74,7 @@ module GrammarL0Helper
74
74
  raise StandardError, "Word '#{word}' not found in lexicon"
75
75
  end
76
76
  terminal = aGrammar.name2symbol[term_name]
77
- Rley::Parser::Token.new(word, terminal)
77
+ Rley::Tokens::Token.new(word, terminal)
78
78
  end
79
79
 
80
80
  return tokens
@@ -1,6 +1,6 @@
1
1
  # Load the builder class
2
2
  require_relative '../../../lib/rley/syntax/grammar_builder'
3
- require_relative '../../../lib/rley/parser/token'
3
+ require_relative '../../../lib/rley/tokens/token'
4
4
 
5
5
 
6
6
  # Utility class.
@@ -39,7 +39,7 @@ class GrammarPBHelper
39
39
  msg = "Unknown input text '#{lexeme}'"
40
40
  raise StandardError, msg
41
41
  end
42
- Rley::Parser::Token.new(lexeme, terminal)
42
+ Rley::Tokens::Token.new(lexeme, terminal)
43
43
  end
44
44
 
45
45
  return tokens
@@ -1,10 +1,10 @@
1
1
  require_relative '../../spec_helper'
2
2
 
3
3
  # Load the class under test
4
- require_relative '../../../lib/rley/ptree/token_range'
4
+ require_relative '../../../lib/rley/tokens/token_range'
5
5
 
6
6
  module Rley # Open this namespace to avoid module qualifier prefixes
7
- module PTree # Open this namespace to avoid module qualifier prefixes
7
+ module Tokens # Open this namespace to avoid module qualifier prefixes
8
8
  describe TokenRange do
9
9
  let(:sample_range) { { low: 0, high: 5 } }
10
10
 
@@ -3,10 +3,10 @@ require_relative '../../spec_helper'
3
3
  require_relative '../../../lib/rley/syntax/terminal'
4
4
 
5
5
  # Load the class under test
6
- require_relative '../../../lib/rley/parser/token'
6
+ require_relative '../../../lib/rley/tokens/token'
7
7
 
8
8
  module Rley # Open this namespace to avoid module qualifier prefixes
9
- module Parser # Open this namespace to avoid module qualifier prefixes
9
+ module Tokens # Open this namespace to avoid module qualifier prefixes
10
10
  describe Token do
11
11
  let(:lexeme) { '"some text"' }
12
12
  let(:sample_terminal) { Syntax::Terminal.new('if') }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rley
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.01
4
+ version: 0.4.02
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-21 00:00:00.000000000 Z
11
+ date: 2017-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -159,9 +159,7 @@ files:
159
159
  - lib/rley/parse_forest_visitor.rb
160
160
  - lib/rley/parse_tree_visitor.rb
161
161
  - lib/rley/parser/base_parser.rb
162
- - lib/rley/parser/chart.rb
163
162
  - lib/rley/parser/dotted_item.rb
164
- - lib/rley/parser/earley_parser.rb
165
163
  - lib/rley/parser/error_reason.rb
166
164
  - lib/rley/parser/gfg_chart.rb
167
165
  - lib/rley/parser/gfg_earley_parser.rb
@@ -176,15 +174,13 @@ files:
176
174
  - lib/rley/parser/parse_state_tracker.rb
177
175
  - lib/rley/parser/parse_tracer.rb
178
176
  - lib/rley/parser/parse_tree_builder.rb
177
+ - lib/rley/parser/parse_tree_factory.rb
179
178
  - lib/rley/parser/parse_walker_factory.rb
180
- - lib/rley/parser/parsing.rb
181
179
  - lib/rley/parser/state_set.rb
182
- - lib/rley/parser/token.rb
183
180
  - lib/rley/ptree/non_terminal_node.rb
184
181
  - lib/rley/ptree/parse_tree.rb
185
182
  - lib/rley/ptree/parse_tree_node.rb
186
183
  - lib/rley/ptree/terminal_node.rb
187
- - lib/rley/ptree/token_range.rb
188
184
  - lib/rley/rley_error.rb
189
185
  - lib/rley/sppf/alternative_node.rb
190
186
  - lib/rley/sppf/composite_node.rb
@@ -203,6 +199,8 @@ files:
203
199
  - lib/rley/syntax/symbol_seq.rb
204
200
  - lib/rley/syntax/terminal.rb
205
201
  - lib/rley/syntax/verbatim_symbol.rb
202
+ - lib/rley/tokens/token.rb
203
+ - lib/rley/tokens/token_range.rb
206
204
  - spec/rley/formatter/debug_spec.rb
207
205
  - spec/rley/formatter/json_spec.rb
208
206
  - spec/rley/gfg/call_edge_spec.rb
@@ -220,9 +218,7 @@ files:
220
218
  - spec/rley/parse_forest_visitor_spec.rb
221
219
  - spec/rley/parse_tree_visitor_spec.rb
222
220
  - spec/rley/parser/ambiguous_parse_spec.rb
223
- - spec/rley/parser/chart_spec.rb
224
221
  - spec/rley/parser/dotted_item_spec.rb
225
- - spec/rley/parser/earley_parser_spec.rb
226
222
  - spec/rley/parser/error_reason_spec.rb
227
223
  - spec/rley/parser/gfg_chart_spec.rb
228
224
  - spec/rley/parser/gfg_earley_parser_spec.rb
@@ -236,15 +232,13 @@ files:
236
232
  - spec/rley/parser/parse_state_spec.rb
237
233
  - spec/rley/parser/parse_tracer_spec.rb
238
234
  - spec/rley/parser/parse_tree_builder_spec.rb
235
+ - spec/rley/parser/parse_tree_factory_spec.rb
239
236
  - spec/rley/parser/parse_walker_factory_spec.rb
240
- - spec/rley/parser/parsing_spec.rb
241
237
  - spec/rley/parser/state_set_spec.rb
242
- - spec/rley/parser/token_spec.rb
243
238
  - spec/rley/ptree/non_terminal_node_spec.rb
244
239
  - spec/rley/ptree/parse_tree_node_spec.rb
245
240
  - spec/rley/ptree/parse_tree_spec.rb
246
241
  - spec/rley/ptree/terminal_node_spec.rb
247
- - spec/rley/ptree/token_range_spec.rb
248
242
  - spec/rley/sppf/alternative_node_spec.rb
249
243
  - spec/rley/sppf/non_terminal_node_spec.rb
250
244
  - spec/rley/support/ambiguous_grammar_helper.rb
@@ -265,6 +259,8 @@ files:
265
259
  - spec/rley/syntax/symbol_seq_spec.rb
266
260
  - spec/rley/syntax/terminal_spec.rb
267
261
  - spec/rley/syntax/verbatim_symbol_spec.rb
262
+ - spec/rley/tokens/token_range_spec.rb
263
+ - spec/rley/tokens/token_spec.rb
268
264
  - spec/spec_helper.rb
269
265
  homepage: https://github.com/famished-tiger/Rley
270
266
  licenses:
@@ -310,9 +306,7 @@ test_files:
310
306
  - spec/rley/gfg/start_vertex_spec.rb
311
307
  - spec/rley/gfg/vertex_spec.rb
312
308
  - spec/rley/parser/ambiguous_parse_spec.rb
313
- - spec/rley/parser/chart_spec.rb
314
309
  - spec/rley/parser/dotted_item_spec.rb
315
- - spec/rley/parser/earley_parser_spec.rb
316
310
  - spec/rley/parser/error_reason_spec.rb
317
311
  - spec/rley/parser/gfg_chart_spec.rb
318
312
  - spec/rley/parser/gfg_earley_parser_spec.rb
@@ -326,17 +320,15 @@ test_files:
326
320
  - spec/rley/parser/parse_state_spec.rb
327
321
  - spec/rley/parser/parse_tracer_spec.rb
328
322
  - spec/rley/parser/parse_tree_builder_spec.rb
323
+ - spec/rley/parser/parse_tree_factory_spec.rb
329
324
  - spec/rley/parser/parse_walker_factory_spec.rb
330
- - spec/rley/parser/parsing_spec.rb
331
325
  - spec/rley/parser/state_set_spec.rb
332
- - spec/rley/parser/token_spec.rb
333
326
  - spec/rley/parse_forest_visitor_spec.rb
334
327
  - spec/rley/parse_tree_visitor_spec.rb
335
328
  - spec/rley/ptree/non_terminal_node_spec.rb
336
329
  - spec/rley/ptree/parse_tree_node_spec.rb
337
330
  - spec/rley/ptree/parse_tree_spec.rb
338
331
  - spec/rley/ptree/terminal_node_spec.rb
339
- - spec/rley/ptree/token_range_spec.rb
340
332
  - spec/rley/sppf/alternative_node_spec.rb
341
333
  - spec/rley/sppf/non_terminal_node_spec.rb
342
334
  - spec/rley/syntax/grammar_builder_spec.rb
@@ -348,3 +340,5 @@ test_files:
348
340
  - spec/rley/syntax/symbol_seq_spec.rb
349
341
  - spec/rley/syntax/terminal_spec.rb
350
342
  - spec/rley/syntax/verbatim_symbol_spec.rb
343
+ - spec/rley/tokens/token_range_spec.rb
344
+ - spec/rley/tokens/token_spec.rb