rley 0.5.05 → 0.5.06
Sign up to get free protection for your applications and to get access to all the features.
- 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) }
|