rley 0.5.05 → 0.5.06
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 +6 -0
- data/examples/NLP/mini_en_demo.rb +1 -1
- data/examples/data_formats/JSON/json_lexer.rb +4 -4
- data/examples/general/calc_iter1/calc_lexer.rb +1 -1
- data/examples/general/calc_iter2/calc_ast_builder.rb +51 -23
- data/examples/general/calc_iter2/calc_ast_nodes.rb +27 -6
- data/examples/general/calc_iter2/calc_demo.rb +2 -1
- data/examples/general/calc_iter2/calc_grammar.rb +14 -5
- data/examples/general/calc_iter2/calc_lexer.rb +14 -5
- data/examples/general/calc_iter2/spec/calculator_spec.rb +140 -23
- data/lib/rley.rb +1 -1
- data/lib/rley/{parser → base}/base_parser.rb +5 -3
- data/lib/rley/{parser → base}/dotted_item.rb +27 -16
- data/lib/rley/{parser → base}/grm_items_builder.rb +4 -2
- data/lib/rley/constants.rb +1 -1
- data/lib/rley/formatter/base_formatter.rb +1 -0
- data/lib/rley/gfg/item_vertex.rb +16 -5
- data/lib/rley/gfg/non_terminal_vertex.rb +5 -0
- data/lib/rley/gfg/vertex.rb +1 -2
- data/lib/rley/lexical/token.rb +31 -0
- data/lib/rley/{tokens → lexical}/token_range.rb +8 -2
- data/lib/rley/parser/gfg_earley_parser.rb +2 -2
- data/lib/rley/parser/parse_tree_builder.rb +2 -2
- data/lib/rley/ptree/parse_tree_node.rb +2 -2
- data/lib/rley/sppf/sppf_node.rb +2 -2
- data/lib/rley/syntax/grammar.rb +5 -1
- data/lib/rley/syntax/grammar_builder.rb +2 -2
- data/lib/rley/syntax/terminal.rb +1 -1
- data/spec/rley/{parser → base}/dotted_item_spec.rb +2 -2
- data/spec/rley/{parser → base}/grm_items_builder_spec.rb +2 -2
- data/spec/rley/formatter/asciitree_spec.rb +6 -6
- data/spec/rley/formatter/bracket_notation_spec.rb +6 -6
- data/spec/rley/formatter/debug_spec.rb +6 -6
- data/spec/rley/formatter/json_spec.rb +6 -6
- data/spec/rley/gfg/call_edge_spec.rb +2 -2
- data/spec/rley/gfg/grm_flow_graph_spec.rb +2 -2
- data/spec/rley/gfg/item_vertex_spec.rb +9 -9
- data/spec/rley/gfg/return_edge_spec.rb +2 -2
- data/spec/rley/{tokens → lexical}/token_range_spec.rb +2 -2
- data/spec/rley/{tokens → lexical}/token_spec.rb +2 -2
- data/spec/rley/parse_forest_visitor_spec.rb +1 -1
- data/spec/rley/parse_tree_visitor_spec.rb +6 -6
- data/spec/rley/parser/ast_builder_spec.rb +1 -1
- data/spec/rley/parser/cst_builder_spec.rb +1 -1
- data/spec/rley/parser/error_reason_spec.rb +3 -3
- data/spec/rley/parser/gfg_chart_spec.rb +4 -4
- data/spec/rley/parser/gfg_earley_parser_spec.rb +3 -3
- data/spec/rley/parser/gfg_parsing_spec.rb +5 -5
- data/spec/rley/parser/groucho_spec.rb +1 -1
- data/spec/rley/parser/parse_entry_set_spec.rb +4 -4
- data/spec/rley/parser/parse_entry_spec.rb +4 -4
- data/spec/rley/parser/parse_state_spec.rb +7 -7
- data/spec/rley/parser/parse_tracer_spec.rb +5 -5
- data/spec/rley/parser/parse_walker_factory_spec.rb +1 -1
- data/spec/rley/ptree/non_terminal_node_spec.rb +1 -1
- data/spec/rley/sppf/alternative_node_spec.rb +4 -4
- 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_arr_int_helper.rb +3 -3
- 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
- metadata +15 -15
- data/lib/rley/tokens/token.rb +0 -14
@@ -3,10 +3,10 @@ require_relative '../../spec_helper'
|
|
3
3
|
require_relative '../support/grammar_abc_helper'
|
4
4
|
|
5
5
|
# Load the module under test
|
6
|
-
require_relative '../../../lib/rley/
|
6
|
+
require_relative '../../../lib/rley/base/grm_items_builder'
|
7
7
|
|
8
8
|
module Rley # Open this namespace to avoid module qualifier prefixes
|
9
|
-
module
|
9
|
+
module Base # Open this namespace to avoid module qualifier prefixes
|
10
10
|
describe 'Testing GrmItemsBuilder' do
|
11
11
|
include GrmItemsBuilder # Use mix-in to test
|
12
12
|
include GrammarABCHelper # Mix-in module with builder for grammar abc
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require 'stringio'
|
3
3
|
|
4
4
|
require_relative '../support/grammar_abc_helper'
|
5
|
-
require_relative '../../../lib/rley/
|
5
|
+
require_relative '../../../lib/rley/lexical/token'
|
6
6
|
require_relative '../../../lib/rley/parser/gfg_earley_parser'
|
7
7
|
require_relative '../../../lib/rley/ptree/parse_tree'
|
8
8
|
require_relative '../../../lib/rley/parse_tree_visitor'
|
@@ -30,11 +30,11 @@ module Rley # Re-open the module to get rid of qualified names
|
|
30
30
|
# for the language specified by gramma_abc
|
31
31
|
let(:grm_abc_tokens1) do
|
32
32
|
[
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
Lexical::Token.new('a', a_),
|
34
|
+
Lexical::Token.new('a', a_),
|
35
|
+
Lexical::Token.new('b', b_),
|
36
|
+
Lexical::Token.new('c', c_),
|
37
|
+
Lexical::Token.new('c', c_)
|
38
38
|
]
|
39
39
|
end
|
40
40
|
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require 'stringio'
|
3
3
|
|
4
4
|
require_relative '../support/grammar_abc_helper'
|
5
|
-
require_relative '../../../lib/rley/
|
5
|
+
require_relative '../../../lib/rley/lexical/token'
|
6
6
|
require_relative '../../../lib/rley/parser/gfg_earley_parser'
|
7
7
|
require_relative '../../../lib/rley/ptree/parse_tree'
|
8
8
|
require_relative '../../../lib/rley/parse_tree_visitor'
|
@@ -30,11 +30,11 @@ module Rley # Re-open the module to get rid of qualified names
|
|
30
30
|
# for the language specified by gramma_abc
|
31
31
|
let(:grm_abc_tokens1) do
|
32
32
|
[
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
Lexical::Token.new('a', a_),
|
34
|
+
Lexical::Token.new('a', a_),
|
35
|
+
Lexical::Token.new('b', b_),
|
36
|
+
Lexical::Token.new('c', c_),
|
37
|
+
Lexical::Token.new('c', c_)
|
38
38
|
]
|
39
39
|
end
|
40
40
|
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require 'stringio'
|
3
3
|
|
4
4
|
require_relative '../support/grammar_abc_helper'
|
5
|
-
require_relative '../../../lib/rley/
|
5
|
+
require_relative '../../../lib/rley/lexical/token'
|
6
6
|
require_relative '../../../lib/rley/parser/gfg_earley_parser'
|
7
7
|
require_relative '../../../lib/rley/ptree/parse_tree'
|
8
8
|
require_relative '../../../lib/rley/parse_tree_visitor'
|
@@ -30,11 +30,11 @@ module Rley # Re-open the module to get rid of qualified names
|
|
30
30
|
# for the language specified by gramma_abc
|
31
31
|
let(:grm_abc_tokens1) do
|
32
32
|
[
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
Lexical::Token.new('a', a_),
|
34
|
+
Lexical::Token.new('a', a_),
|
35
|
+
Lexical::Token.new('b', b_),
|
36
|
+
Lexical::Token.new('c', c_),
|
37
|
+
Lexical::Token.new('c', c_)
|
38
38
|
]
|
39
39
|
end
|
40
40
|
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require 'stringio'
|
3
3
|
|
4
4
|
require_relative '../support/grammar_abc_helper'
|
5
|
-
require_relative '../../../lib/rley/
|
5
|
+
require_relative '../../../lib/rley/lexical/token'
|
6
6
|
require_relative '../../../lib/rley/parser/gfg_earley_parser'
|
7
7
|
require_relative '../../../lib/rley/ptree/parse_tree'
|
8
8
|
require_relative '../../../lib/rley/parse_tree_visitor'
|
@@ -30,11 +30,11 @@ module Rley # Re-open the module to get rid of qualified names
|
|
30
30
|
# for the language specified by gramma_abc
|
31
31
|
let(:grm_abc_tokens1) do
|
32
32
|
[
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
Lexical::Token.new('a', a_),
|
34
|
+
Lexical::Token.new('a', a_),
|
35
|
+
Lexical::Token.new('b', b_),
|
36
|
+
Lexical::Token.new('c', c_),
|
37
|
+
Lexical::Token.new('c', c_)
|
38
38
|
]
|
39
39
|
end
|
40
40
|
|
@@ -3,7 +3,7 @@ require_relative '../../spec_helper'
|
|
3
3
|
require_relative '../../../lib/rley/syntax/terminal'
|
4
4
|
require_relative '../../../lib/rley/syntax/non_terminal'
|
5
5
|
require_relative '../../../lib/rley/syntax/production'
|
6
|
-
require_relative '../../../lib/rley/
|
6
|
+
require_relative '../../../lib/rley/base/dotted_item'
|
7
7
|
require_relative '../../../lib/rley/gfg/start_vertex'
|
8
8
|
require_relative '../../../lib/rley/gfg/item_vertex'
|
9
9
|
|
@@ -25,7 +25,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
25
25
|
let(:nt_sentence) { Rley::Syntax::NonTerminal.new('sentence') }
|
26
26
|
let(:nt_b_sequence) { Rley::Syntax::NonTerminal.new('b_sequence') }
|
27
27
|
let(:sample_prod) { build_prod(nt_sentence, t_a, nt_b_sequence, t_c) }
|
28
|
-
let(:sample_item) {
|
28
|
+
let(:sample_item) { Base::DottedItem.new(sample_prod, 1) }
|
29
29
|
|
30
30
|
let(:vertex1) { ItemVertex.new(sample_item) }
|
31
31
|
let(:vertex2) { StartVertex.new('to') }
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative '../../spec_helper'
|
2
2
|
|
3
3
|
require_relative '../support/grammar_abc_helper'
|
4
|
-
require_relative '../../../lib/rley/
|
4
|
+
require_relative '../../../lib/rley/base/grm_items_builder'
|
5
5
|
|
6
6
|
# Load the module under test
|
7
7
|
require_relative '../../../lib/rley/gfg/grm_flow_graph'
|
@@ -15,7 +15,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
15
15
|
# from the given grammar
|
16
16
|
def build_items_for_grammar(aGrammar)
|
17
17
|
helper = Object.new
|
18
|
-
helper.extend(
|
18
|
+
helper.extend(Base::GrmItemsBuilder)
|
19
19
|
return helper.build_dotted_items(aGrammar)
|
20
20
|
end
|
21
21
|
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/rley/syntax/terminal'
|
3
3
|
require_relative '../../../lib/rley/syntax/non_terminal'
|
4
4
|
require_relative '../../../lib/rley/syntax/production'
|
5
|
-
require_relative '../../../lib/rley/
|
5
|
+
require_relative '../../../lib/rley/base/dotted_item'
|
6
6
|
require_relative '../../../lib/rley/gfg/shortcut_edge'
|
7
7
|
|
8
8
|
# Load the class under test
|
@@ -27,8 +27,8 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
27
27
|
let(:recursive_prod) { build_prod(nt_b_sequence, nt_b_sequence, t_b) }
|
28
28
|
let(:b_prod) { build_prod(nt_b_sequence, t_b) }
|
29
29
|
let(:empty_prod) { build_prod(nt_sentence) }
|
30
|
-
let(:sample_item) {
|
31
|
-
let(:next_item) {
|
30
|
+
let(:sample_item) { Base::DottedItem.new(sample_prod, 1) }
|
31
|
+
let(:next_item) { Base::DottedItem.new(sample_prod, 2) }
|
32
32
|
subject { ItemVertex.new(sample_item) }
|
33
33
|
|
34
34
|
context 'Initialization:' do
|
@@ -59,11 +59,11 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
59
59
|
expect(subject).not_to be_complete
|
60
60
|
|
61
61
|
# Case: dot at the end
|
62
|
-
instance1 = ItemVertex.new(
|
62
|
+
instance1 = ItemVertex.new(Base::DottedItem.new(sample_prod, 3))
|
63
63
|
expect(instance1).to be_complete
|
64
64
|
|
65
65
|
# Case: empty production
|
66
|
-
instance2 = ItemVertex.new(
|
66
|
+
instance2 = ItemVertex.new(Base::DottedItem.new(empty_prod, 0))
|
67
67
|
expect(instance2).to be_complete
|
68
68
|
end
|
69
69
|
|
@@ -77,11 +77,11 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
77
77
|
expect(instance2.prev_symbol).to eq(nt_b_sequence)
|
78
78
|
|
79
79
|
# Case: dot is at begin
|
80
|
-
instance3 = ItemVertex.new(
|
80
|
+
instance3 = ItemVertex.new(Base::DottedItem.new(sample_prod, 0))
|
81
81
|
expect(instance3.prev_symbol).to be_nil
|
82
82
|
|
83
83
|
# Case: empty production
|
84
|
-
instance4 = ItemVertex.new(
|
84
|
+
instance4 = ItemVertex.new(Base::DottedItem.new(empty_prod, 0))
|
85
85
|
expect(instance4.prev_symbol).to be_nil
|
86
86
|
end
|
87
87
|
|
@@ -95,11 +95,11 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
95
95
|
expect(instance1.next_symbol).to eq(t_c)
|
96
96
|
|
97
97
|
# Case: dot is at end
|
98
|
-
instance2 = ItemVertex.new(
|
98
|
+
instance2 = ItemVertex.new(Base::DottedItem.new(sample_prod, 3))
|
99
99
|
expect(instance2.next_symbol).to be_nil
|
100
100
|
|
101
101
|
# Case: empty production
|
102
|
-
instance3 = ItemVertex.new(
|
102
|
+
instance3 = ItemVertex.new(Base::DottedItem.new(empty_prod, 0))
|
103
103
|
expect(instance3.next_symbol).to be_nil
|
104
104
|
end
|
105
105
|
|
@@ -3,7 +3,7 @@ require_relative '../../spec_helper'
|
|
3
3
|
require_relative '../../../lib/rley/syntax/terminal'
|
4
4
|
require_relative '../../../lib/rley/syntax/non_terminal'
|
5
5
|
require_relative '../../../lib/rley/syntax/production'
|
6
|
-
require_relative '../../../lib/rley/
|
6
|
+
require_relative '../../../lib/rley/base/dotted_item'
|
7
7
|
require_relative '../../../lib/rley/gfg/end_vertex'
|
8
8
|
require_relative '../../../lib/rley/gfg/item_vertex'
|
9
9
|
|
@@ -25,7 +25,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
25
25
|
let(:nt_sentence) { Rley::Syntax::NonTerminal.new('sentence') }
|
26
26
|
let(:nt_b_sequence) { Rley::Syntax::NonTerminal.new('b_sequence') }
|
27
27
|
let(:sample_prod) { build_prod(nt_sentence, t_a, nt_b_sequence, t_c) }
|
28
|
-
let(:sample_item) {
|
28
|
+
let(:sample_item) { Base::DottedItem.new(sample_prod, 1) }
|
29
29
|
|
30
30
|
let(:vertex1) { EndVertex.new('from') }
|
31
31
|
let(:vertex2) { ItemVertex.new(sample_item) }
|
@@ -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/lexical/token_range'
|
5
5
|
|
6
6
|
module Rley # Open this namespace to avoid module qualifier prefixes
|
7
|
-
module
|
7
|
+
module Lexical # 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/lexical/token'
|
7
7
|
|
8
8
|
module Rley # Open this namespace to avoid module qualifier prefixes
|
9
|
-
module
|
9
|
+
module Lexical # 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') }
|
@@ -2,7 +2,7 @@ require_relative '../spec_helper'
|
|
2
2
|
|
3
3
|
require_relative './support/grammar_helper'
|
4
4
|
require_relative './support/grammar_sppf_helper'
|
5
|
-
require_relative '../../lib/rley/
|
5
|
+
require_relative '../../lib/rley/lexical/token'
|
6
6
|
require_relative '../../lib/rley/parser/gfg_earley_parser'
|
7
7
|
require_relative '../../lib/rley/sppf/non_terminal_node'
|
8
8
|
require_relative '../../lib/rley/sppf/parse_forest'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative '../spec_helper'
|
2
2
|
|
3
3
|
require_relative './support/grammar_abc_helper'
|
4
|
-
require_relative '../../lib/rley/
|
4
|
+
require_relative '../../lib/rley/lexical/token'
|
5
5
|
require_relative '../../lib/rley/parser/gfg_earley_parser'
|
6
6
|
# Load the class under test
|
7
7
|
require_relative '../../lib/rley/parse_tree_visitor'
|
@@ -24,11 +24,11 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
24
24
|
# for the language specified by gramma_abc
|
25
25
|
let(:grm_abc_tokens1) do
|
26
26
|
[
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
Lexical::Token.new('a', a_),
|
28
|
+
Lexical::Token.new('a', a_),
|
29
|
+
Lexical::Token.new('b', b_),
|
30
|
+
Lexical::Token.new('c', c_),
|
31
|
+
Lexical::Token.new('c', c_)
|
32
32
|
]
|
33
33
|
end
|
34
34
|
|
@@ -168,7 +168,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
168
168
|
end
|
169
169
|
|
170
170
|
def create_range(low, high)
|
171
|
-
return
|
171
|
+
return Lexical::TokenRange.new(low: low, high: high)
|
172
172
|
end
|
173
173
|
|
174
174
|
context 'Initialization:' do
|
@@ -48,7 +48,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def create_range(low, high)
|
51
|
-
return
|
51
|
+
return Lexical::TokenRange.new(low: low, high: high)
|
52
52
|
end
|
53
53
|
|
54
54
|
context 'Initialization:' do
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require_relative '../../spec_helper'
|
2
|
-
require_relative '../../../lib/rley/
|
2
|
+
require_relative '../../../lib/rley/lexical/token'
|
3
3
|
|
4
4
|
# Load the class under test
|
5
5
|
require_relative '../../../lib/rley/parser/error_reason'
|
@@ -62,7 +62,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
62
62
|
describe UnexpectedToken do
|
63
63
|
let(:err_lexeme) { '-' }
|
64
64
|
let(:err_terminal) { Syntax::Terminal.new('MINUS') }
|
65
|
-
let(:err_token) {
|
65
|
+
let(:err_token) { Lexical::Token.new(err_lexeme, err_terminal) }
|
66
66
|
let(:terminals) do
|
67
67
|
%w[PLUS LPAREN].map { |name| Syntax::Terminal.new(name) }
|
68
68
|
end
|
@@ -93,7 +93,7 @@ MESSAGE_END
|
|
93
93
|
describe PrematureInputEnd do
|
94
94
|
let(:err_lexeme) { '+' }
|
95
95
|
let(:err_terminal) { Syntax::Terminal.new('PLUS') }
|
96
|
-
let(:err_token) {
|
96
|
+
let(:err_token) { Lexical::Token.new(err_lexeme, err_terminal) }
|
97
97
|
let(:terminals) do
|
98
98
|
%w[INT LPAREN].map { |name| Syntax::Terminal.new(name) }
|
99
99
|
end
|
@@ -2,11 +2,11 @@ require_relative '../../spec_helper'
|
|
2
2
|
require 'stringio'
|
3
3
|
|
4
4
|
require_relative '../../../lib/rley/syntax/terminal'
|
5
|
-
require_relative '../../../lib/rley/
|
5
|
+
require_relative '../../../lib/rley/lexical/token'
|
6
6
|
require_relative '../../../lib/rley/gfg/start_vertex'
|
7
7
|
require_relative '../../../lib/rley/parser/parse_entry'
|
8
8
|
require_relative '../../../lib/rley/parser/parse_tracer'
|
9
|
-
require_relative '../../../lib/rley/
|
9
|
+
require_relative '../../../lib/rley/base/grm_items_builder'
|
10
10
|
require_relative '../../../lib/rley/gfg/grm_flow_graph'
|
11
11
|
require_relative '../support/grammar_abc_helper'
|
12
12
|
|
@@ -23,7 +23,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
23
23
|
# from the given grammar
|
24
24
|
def build_items_for_grammar(aGrammar)
|
25
25
|
helper = Object.new
|
26
|
-
helper.extend(
|
26
|
+
helper.extend(Base::GrmItemsBuilder)
|
27
27
|
return helper.build_dotted_items(aGrammar)
|
28
28
|
end
|
29
29
|
|
@@ -39,7 +39,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
39
39
|
|
40
40
|
let(:token_seq) do
|
41
41
|
literals = %w[a a b c c]
|
42
|
-
literals.map { |lexeme|
|
42
|
+
literals.map { |lexeme| Lexical::Token.new(lexeme, nil) }
|
43
43
|
end
|
44
44
|
|
45
45
|
# Helper method. Create an array of dotted items
|
@@ -4,8 +4,8 @@ require_relative '../../../lib/rley/syntax/verbatim_symbol'
|
|
4
4
|
require_relative '../../../lib/rley/syntax/non_terminal'
|
5
5
|
require_relative '../../../lib/rley/syntax/production'
|
6
6
|
require_relative '../../../lib/rley/syntax/grammar_builder'
|
7
|
-
require_relative '../../../lib/rley/
|
8
|
-
require_relative '../../../lib/rley/
|
7
|
+
require_relative '../../../lib/rley/lexical/token'
|
8
|
+
require_relative '../../../lib/rley/base/dotted_item'
|
9
9
|
require_relative '../../../lib/rley/parser/gfg_parsing'
|
10
10
|
|
11
11
|
# Load builders and lexers for sample grammars
|
@@ -288,7 +288,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
288
288
|
builder.add_terminals(t_x)
|
289
289
|
builder.add_production('Ss' => %w[A A x])
|
290
290
|
builder.add_production('A' => [])
|
291
|
-
tokens = [
|
291
|
+
tokens = [ Lexical::Token.new('x', t_x) ]
|
292
292
|
|
293
293
|
instance = GFGEarleyParser.new(builder.grammar)
|
294
294
|
expect { instance.parse(tokens) }.not_to raise_error
|
@@ -5,11 +5,11 @@ require_relative '../../../lib/rley/syntax/non_terminal'
|
|
5
5
|
require_relative '../../../lib/rley/syntax/verbatim_symbol'
|
6
6
|
require_relative '../../../lib/rley/syntax/production'
|
7
7
|
require_relative '../../../lib/rley/syntax/grammar_builder'
|
8
|
-
require_relative '../../../lib/rley/
|
9
|
-
require_relative '../../../lib/rley/
|
8
|
+
require_relative '../../../lib/rley/base/dotted_item'
|
9
|
+
require_relative '../../../lib/rley/lexical/token'
|
10
10
|
require_relative '../../../lib/rley/parser/parse_tracer'
|
11
11
|
require_relative '../../../lib/rley/gfg/grm_flow_graph'
|
12
|
-
require_relative '../../../lib/rley/
|
12
|
+
require_relative '../../../lib/rley/base/grm_items_builder'
|
13
13
|
require_relative '../support/grammar_abc_helper'
|
14
14
|
require_relative '../support/grammar_b_expr_helper'
|
15
15
|
require_relative '../support/grammar_helper'
|
@@ -30,7 +30,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
30
30
|
# from the given grammar
|
31
31
|
def build_items_for_grammar(aGrammar)
|
32
32
|
helper = Object.new
|
33
|
-
helper.extend(
|
33
|
+
helper.extend(Base::GrmItemsBuilder)
|
34
34
|
return helper.build_dotted_items(aGrammar)
|
35
35
|
end
|
36
36
|
|
@@ -298,7 +298,7 @@ SNIPPET
|
|
298
298
|
|
299
299
|
let(:token_seq1) do
|
300
300
|
%w[a a b c c].map do |letter|
|
301
|
-
|
301
|
+
Lexical::Token.new(letter, sample_grammar1.name2symbol[letter])
|
302
302
|
end
|
303
303
|
end
|
304
304
|
|
@@ -54,7 +54,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
54
54
|
raise StandardError, "Word '#{word}' not found in lexicon"
|
55
55
|
end
|
56
56
|
terminal = aGrammar.name2symbol[term_name]
|
57
|
-
Rley::
|
57
|
+
Rley::Lexical::Token.new(word, terminal)
|
58
58
|
end
|
59
59
|
|
60
60
|
return tokens
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative '../../spec_helper'
|
2
2
|
|
3
3
|
require_relative '../../../lib/rley/syntax/production'
|
4
|
-
require_relative '../../../lib/rley/
|
4
|
+
require_relative '../../../lib/rley/base/dotted_item'
|
5
5
|
require_relative '../../../lib/rley/gfg/item_vertex'
|
6
6
|
require_relative '../../../lib/rley/parser/parse_entry'
|
7
7
|
|
@@ -25,9 +25,9 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
25
25
|
let(:nt_sentence) { Rley::Syntax::NonTerminal.new('Sentence') }
|
26
26
|
let(:sample_prod) { build_prod(nt_sentence, t_a, t_b, t_b, nt_rep_c) }
|
27
27
|
|
28
|
-
let(:sample_item1) {
|
29
|
-
let(:sample_item2) {
|
30
|
-
let(:sample_item3) {
|
28
|
+
let(:sample_item1) { Base::DottedItem.new(sample_prod, 1) }
|
29
|
+
let(:sample_item2) { Base::DottedItem.new(sample_prod, 2) }
|
30
|
+
let(:sample_item3) { Base::DottedItem.new(sample_prod, 3) }
|
31
31
|
|
32
32
|
let(:vertex1) { GFG::ItemVertex.new(sample_item1) }
|
33
33
|
let(:entry1) { ParseEntry.new(vertex1, 2) }
|