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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/LICENSE.txt +2 -2
- data/README.md +3 -3
- data/examples/NLP/mini_en_demo.rb +1 -1
- data/examples/data_formats/JSON/JSON_demo.rb +1 -0
- data/examples/data_formats/JSON/JSON_lexer.rb +4 -4
- data/examples/general/calc/calc_lexer.rb +2 -2
- data/lib/rley.rb +1 -1
- data/lib/rley/constants.rb +1 -1
- data/lib/rley/formatter/debug.rb +2 -2
- data/lib/rley/formatter/json.rb +4 -4
- data/lib/rley/parse_tree_visitor.rb +9 -9
- data/lib/rley/parser/base_parser.rb +1 -1
- data/lib/rley/parser/gfg_parsing.rb +9 -0
- data/lib/rley/parser/parse_tree_builder.rb +176 -126
- data/lib/rley/parser/parse_tree_factory.rb +57 -0
- data/lib/rley/ptree/non_terminal_node.rb +10 -9
- data/lib/rley/ptree/parse_tree_node.rb +10 -5
- data/lib/rley/ptree/terminal_node.rb +14 -6
- data/lib/rley/sppf/sppf_node.rb +2 -2
- data/lib/rley/{parser → tokens}/token.rb +1 -4
- data/lib/rley/{ptree → tokens}/token_range.rb +1 -1
- data/spec/rley/formatter/debug_spec.rb +16 -16
- data/spec/rley/formatter/json_spec.rb +8 -8
- data/spec/rley/parse_forest_visitor_spec.rb +1 -1
- data/spec/rley/parse_tree_visitor_spec.rb +28 -28
- data/spec/rley/parser/error_reason_spec.rb +3 -3
- data/spec/rley/parser/gfg_chart_spec.rb +2 -2
- data/spec/rley/parser/gfg_earley_parser_spec.rb +2 -2
- data/spec/rley/parser/gfg_parsing_spec.rb +2 -2
- data/spec/rley/parser/groucho_spec.rb +1 -1
- data/spec/rley/parser/parse_tracer_spec.rb +2 -2
- data/spec/rley/parser/parse_tree_builder_spec.rb +213 -140
- data/spec/rley/parser/parse_tree_factory_spec.rb +85 -0
- data/spec/rley/parser/parse_walker_factory_spec.rb +11 -10
- data/spec/rley/ptree/non_terminal_node_spec.rb +23 -20
- data/spec/rley/ptree/terminal_node_spec.rb +7 -12
- data/spec/rley/sppf/alternative_node_spec.rb +2 -2
- data/spec/rley/sppf/non_terminal_node_spec.rb +2 -2
- data/spec/rley/support/ambiguous_grammar_helper.rb +2 -2
- data/spec/rley/support/expectation_helper.rb +1 -1
- data/spec/rley/support/grammar_ambig01_helper.rb +2 -2
- data/spec/rley/support/grammar_b_expr_helper.rb +2 -2
- data/spec/rley/support/grammar_helper.rb +3 -3
- data/spec/rley/support/grammar_l0_helper.rb +2 -2
- data/spec/rley/support/grammar_pb_helper.rb +2 -2
- data/spec/rley/{ptree → tokens}/token_range_spec.rb +2 -2
- data/spec/rley/{parser → tokens}/token_spec.rb +2 -2
- metadata +11 -17
- data/lib/rley/parser/chart.rb +0 -82
- data/lib/rley/parser/earley_parser.rb +0 -203
- data/lib/rley/parser/parsing.rb +0 -265
- data/spec/rley/parser/chart_spec.rb +0 -120
- data/spec/rley/parser/earley_parser_spec.rb +0 -710
- 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
|
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
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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
|
25
|
-
expect(subject.
|
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
|
-
|
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.
|
35
|
-
subject.
|
36
|
-
subject.
|
37
|
-
expect(subject.
|
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
|
46
|
-
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 =
|
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 =
|
59
|
+
noun = build_token('bus', 'Noun')
|
55
60
|
child_3_1 = TerminalNode.new(noun, range(2, 3))
|
56
|
-
|
57
|
-
subject.
|
58
|
-
|
59
|
-
child_1_2.
|
60
|
-
|
61
|
-
|
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)
|
11
|
-
|
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(
|
16
|
+
subject { TerminalNode.new(sample_token, sample_range) }
|
16
17
|
|
17
18
|
context 'Initialization:' do
|
18
|
-
it "
|
19
|
-
expect(subject.token).to
|
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
|
-
|
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/
|
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
|
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/
|
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
|
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/
|
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::
|
32
|
+
Rley::Tokens::Token.new(lexeme, terminal)
|
33
33
|
end
|
34
34
|
|
35
35
|
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/
|
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::
|
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/
|
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::
|
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/
|
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::
|
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::
|
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/
|
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::
|
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/
|
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::
|
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/
|
4
|
+
require_relative '../../../lib/rley/tokens/token_range'
|
5
5
|
|
6
6
|
module Rley # Open this namespace to avoid module qualifier prefixes
|
7
|
-
module
|
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/
|
6
|
+
require_relative '../../../lib/rley/tokens/token'
|
7
7
|
|
8
8
|
module Rley # Open this namespace to avoid module qualifier prefixes
|
9
|
-
module
|
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.
|
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:
|
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
|