rley 0.7.03 → 0.7.04
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/.travis.yml +3 -4
- data/CHANGELOG.md +10 -1
- data/README.md +3 -5
- data/Rakefile +2 -0
- data/appveyor.yml +4 -2
- data/examples/NLP/benchmark_pico_en.rb +2 -0
- data/examples/NLP/engtagger.rb +2 -0
- data/examples/NLP/nano_eng/nano_en_demo.rb +2 -0
- data/examples/NLP/nano_eng/nano_grammar.rb +2 -0
- data/examples/NLP/pico_en_demo.rb +2 -0
- data/examples/data_formats/JSON/cli_options.rb +2 -0
- data/examples/data_formats/JSON/json_ast_builder.rb +2 -0
- data/examples/data_formats/JSON/json_ast_nodes.rb +2 -0
- data/examples/data_formats/JSON/json_demo.rb +2 -0
- data/examples/data_formats/JSON/json_grammar.rb +2 -0
- data/examples/data_formats/JSON/json_lexer.rb +2 -0
- data/examples/data_formats/JSON/json_minifier.rb +2 -0
- data/examples/general/calc_iter1/calc_ast_builder.rb +2 -0
- data/examples/general/calc_iter1/calc_ast_nodes.rb +2 -0
- data/examples/general/calc_iter1/calc_demo.rb +2 -0
- data/examples/general/calc_iter1/calc_grammar.rb +2 -0
- data/examples/general/calc_iter1/calc_lexer.rb +2 -0
- data/examples/general/calc_iter1/spec/calculator_spec.rb +2 -0
- data/examples/general/calc_iter2/calc_ast_builder.rb +2 -0
- data/examples/general/calc_iter2/calc_ast_nodes.rb +2 -0
- data/examples/general/calc_iter2/calc_demo.rb +2 -0
- data/examples/general/calc_iter2/calc_grammar.rb +2 -0
- data/examples/general/calc_iter2/calc_lexer.rb +2 -0
- data/examples/general/calc_iter2/spec/calculator_spec.rb +2 -0
- data/examples/general/left.rb +2 -0
- data/examples/general/right.rb +2 -0
- data/lib/rley.rb +2 -0
- data/lib/rley/base/base_parser.rb +2 -0
- data/lib/rley/base/dotted_item.rb +17 -12
- data/lib/rley/base/grm_items_builder.rb +2 -0
- data/lib/rley/constants.rb +4 -2
- data/lib/rley/engine.rb +2 -1
- data/lib/rley/formatter/asciitree.rb +3 -1
- data/lib/rley/formatter/base_formatter.rb +2 -0
- data/lib/rley/formatter/bracket_notation.rb +2 -0
- data/lib/rley/formatter/debug.rb +2 -0
- data/lib/rley/formatter/json.rb +2 -0
- data/lib/rley/gfg/call_edge.rb +2 -0
- data/lib/rley/gfg/edge.rb +2 -0
- data/lib/rley/gfg/end_vertex.rb +2 -0
- data/lib/rley/gfg/epsilon_edge.rb +2 -0
- data/lib/rley/gfg/grm_flow_graph.rb +4 -2
- data/lib/rley/gfg/item_vertex.rb +2 -12
- data/lib/rley/gfg/non_terminal_vertex.rb +2 -0
- data/lib/rley/gfg/return_edge.rb +2 -0
- data/lib/rley/gfg/scan_edge.rb +2 -0
- data/lib/rley/gfg/shortcut_edge.rb +2 -0
- data/lib/rley/gfg/start_vertex.rb +2 -0
- data/lib/rley/gfg/vertex.rb +4 -2
- data/lib/rley/lexical/token.rb +2 -0
- data/lib/rley/lexical/token_range.rb +2 -0
- data/lib/rley/parse_forest_visitor.rb +2 -0
- data/lib/rley/parse_rep/ast_base_builder.rb +2 -0
- data/lib/rley/parse_rep/cst_builder.rb +2 -0
- data/lib/rley/parse_rep/parse_forest_builder.rb +2 -0
- data/lib/rley/parse_rep/parse_forest_factory.rb +2 -0
- data/lib/rley/parse_rep/parse_rep_creator.rb +2 -0
- data/lib/rley/parse_rep/parse_tree_builder.rb +11 -11
- data/lib/rley/parse_rep/parse_tree_factory.rb +2 -0
- data/lib/rley/parse_tree_visitor.rb +2 -0
- data/lib/rley/parser/error_reason.rb +5 -3
- data/lib/rley/parser/gfg_chart.rb +2 -0
- data/lib/rley/parser/gfg_earley_parser.rb +3 -1
- data/lib/rley/parser/gfg_parsing.rb +7 -1
- data/lib/rley/parser/parse_entry.rb +4 -3
- data/lib/rley/parser/parse_entry_set.rb +9 -13
- data/lib/rley/parser/parse_entry_tracker.rb +2 -0
- data/lib/rley/parser/parse_state.rb +2 -0
- data/lib/rley/parser/parse_state_tracker.rb +2 -0
- data/lib/rley/parser/parse_tracer.rb +2 -0
- data/lib/rley/parser/parse_walker_factory.rb +2 -0
- data/lib/rley/parser/state_set.rb +2 -0
- data/lib/rley/ptree/non_terminal_node.rb +3 -1
- data/lib/rley/ptree/parse_tree.rb +3 -1
- data/lib/rley/ptree/parse_tree_node.rb +2 -0
- data/lib/rley/ptree/terminal_node.rb +2 -0
- data/lib/rley/rley_error.rb +2 -0
- data/lib/rley/sppf/alternative_node.rb +2 -0
- data/lib/rley/sppf/composite_node.rb +2 -0
- data/lib/rley/sppf/epsilon_node.rb +2 -0
- data/lib/rley/sppf/leaf_node.rb +2 -0
- data/lib/rley/sppf/non_terminal_node.rb +2 -0
- data/lib/rley/sppf/parse_forest.rb +3 -1
- data/lib/rley/sppf/sppf_node.rb +2 -0
- data/lib/rley/sppf/token_node.rb +2 -0
- data/lib/rley/syntax/grammar.rb +2 -0
- data/lib/rley/syntax/grammar_builder.rb +2 -0
- data/lib/rley/syntax/grm_symbol.rb +2 -0
- data/lib/rley/syntax/literal.rb +2 -0
- data/lib/rley/syntax/non_terminal.rb +2 -0
- data/lib/rley/syntax/production.rb +3 -1
- data/lib/rley/syntax/symbol_seq.rb +3 -1
- data/lib/rley/syntax/terminal.rb +2 -0
- data/lib/rley/syntax/verbatim_symbol.rb +2 -0
- data/lib/support/base_tokenizer.rb +4 -2
- data/spec/rley/base/dotted_item_spec.rb +2 -0
- data/spec/rley/base/grm_items_builder_spec.rb +2 -0
- data/spec/rley/engine_spec.rb +2 -0
- data/spec/rley/formatter/asciitree_spec.rb +4 -2
- data/spec/rley/formatter/bracket_notation_spec.rb +4 -2
- data/spec/rley/formatter/debug_spec.rb +4 -2
- data/spec/rley/formatter/json_spec.rb +4 -2
- data/spec/rley/gfg/call_edge_spec.rb +2 -0
- data/spec/rley/gfg/edge_spec.rb +2 -0
- data/spec/rley/gfg/end_vertex_spec.rb +2 -0
- data/spec/rley/gfg/epsilon_edge_spec.rb +2 -0
- data/spec/rley/gfg/grm_flow_graph_spec.rb +2 -0
- data/spec/rley/gfg/item_vertex_spec.rb +2 -0
- data/spec/rley/gfg/non_terminal_vertex_spec.rb +2 -0
- data/spec/rley/gfg/return_edge_spec.rb +2 -0
- data/spec/rley/gfg/scan_edge_spec.rb +2 -0
- data/spec/rley/gfg/shortcut_edge_spec.rb +2 -0
- data/spec/rley/gfg/start_vertex_spec.rb +2 -0
- data/spec/rley/gfg/vertex_spec.rb +2 -0
- data/spec/rley/lexical/token_range_spec.rb +2 -0
- data/spec/rley/lexical/token_spec.rb +2 -0
- data/spec/rley/parse_forest_visitor_spec.rb +2 -0
- data/spec/rley/parse_rep/ambiguous_parse_spec.rb +2 -0
- data/spec/rley/parse_rep/ast_builder_spec.rb +2 -0
- data/spec/rley/parse_rep/cst_builder_spec.rb +2 -0
- data/spec/rley/parse_rep/groucho_spec.rb +2 -0
- data/spec/rley/parse_rep/parse_forest_builder_spec.rb +2 -0
- data/spec/rley/parse_rep/parse_forest_factory_spec.rb +2 -0
- data/spec/rley/parse_rep/parse_tree_factory_spec.rb +2 -0
- data/spec/rley/parse_tree_visitor_spec.rb +2 -0
- data/spec/rley/parser/error_reason_spec.rb +2 -0
- data/spec/rley/parser/gfg_chart_spec.rb +2 -0
- data/spec/rley/parser/gfg_earley_parser_spec.rb +7 -5
- data/spec/rley/parser/gfg_parsing_spec.rb +2 -0
- data/spec/rley/parser/parse_entry_set_spec.rb +2 -0
- data/spec/rley/parser/parse_entry_spec.rb +2 -0
- data/spec/rley/parser/parse_state_spec.rb +2 -0
- data/spec/rley/parser/parse_tracer_spec.rb +16 -14
- data/spec/rley/parser/parse_walker_factory_spec.rb +2 -0
- data/spec/rley/parser/state_set_spec.rb +2 -0
- data/spec/rley/ptree/non_terminal_node_spec.rb +2 -0
- data/spec/rley/ptree/parse_tree_node_spec.rb +2 -0
- data/spec/rley/ptree/parse_tree_spec.rb +2 -0
- data/spec/rley/ptree/terminal_node_spec.rb +2 -0
- data/spec/rley/sppf/alternative_node_spec.rb +2 -0
- data/spec/rley/sppf/non_terminal_node_spec.rb +2 -0
- data/spec/rley/sppf/token_node_spec.rb +2 -0
- data/spec/rley/support/ambiguous_grammar_helper.rb +2 -0
- data/spec/rley/support/expectation_helper.rb +2 -0
- data/spec/rley/support/grammar_abc_helper.rb +2 -0
- data/spec/rley/support/grammar_ambig01_helper.rb +2 -0
- data/spec/rley/support/grammar_arr_int_helper.rb +2 -0
- data/spec/rley/support/grammar_b_expr_helper.rb +2 -0
- data/spec/rley/support/grammar_helper.rb +2 -0
- data/spec/rley/support/grammar_l0_helper.rb +2 -0
- data/spec/rley/support/grammar_pb_helper.rb +2 -0
- data/spec/rley/support/grammar_sppf_helper.rb +2 -0
- data/spec/rley/syntax/grammar_builder_spec.rb +2 -0
- data/spec/rley/syntax/grammar_spec.rb +2 -0
- data/spec/rley/syntax/grm_symbol_spec.rb +2 -0
- data/spec/rley/syntax/literal_spec.rb +2 -0
- data/spec/rley/syntax/non_terminal_spec.rb +2 -0
- data/spec/rley/syntax/production_spec.rb +2 -0
- data/spec/rley/syntax/symbol_seq_spec.rb +2 -0
- data/spec/rley/syntax/terminal_spec.rb +2 -0
- data/spec/rley/syntax/verbatim_symbol_spec.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/support/base_tokenizer_spec.rb +2 -0
- metadata +4 -5
- data/Gemfile +0 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9fa143547cbc9df1103e8d5fa196a77fb1dde67edc118f450ba34e2d7338be18
|
|
4
|
+
data.tar.gz: 3a21aa20217d4bf09b9816229b5d5a75a804a8f41c0bb14fc8572f5119f1140b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2bd17209dd119cf971f3ccf9f8cafb319955add4714f54d6d3a2baa542fc5a528942d71276ab9110081d1eed6d48d39bfec0f435ef55c47eb0d12dd1aa5b2801
|
|
7
|
+
data.tar.gz: 500b641afa30d01ba6f28ef8fe23d9f157db67985f66fc95a6a07bdff099946a2faeffb09bdd2651a7871edfa756799c9e5768bb3010a8528d8f4a758f5933e3
|
data/.travis.yml
CHANGED
|
@@ -9,9 +9,9 @@ script:
|
|
|
9
9
|
- bundle exec rake
|
|
10
10
|
|
|
11
11
|
rvm:
|
|
12
|
-
- 2.6.
|
|
13
|
-
- 2.5.
|
|
14
|
-
- 2.4.
|
|
12
|
+
- 2.6.3
|
|
13
|
+
- 2.5.5
|
|
14
|
+
- 2.4.6
|
|
15
15
|
- 2.3.8
|
|
16
16
|
- ruby-head
|
|
17
17
|
- jruby-9.1.9.0
|
|
@@ -19,7 +19,6 @@ rvm:
|
|
|
19
19
|
|
|
20
20
|
matrix:
|
|
21
21
|
allow_failures:
|
|
22
|
-
- rvm: 2.6.0
|
|
23
22
|
- rvm: ruby-head
|
|
24
23
|
- rvm: jruby-head
|
|
25
24
|
|
data/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
+
### 0.7.04 / 2019-08-17
|
|
2
|
+
- Rley recognizer is about 25% faster than previous version. Kudos to the people
|
|
3
|
+
behind the *magic_frozen_string_literal* gem.
|
|
4
|
+
- Code refactoring to use string frozen magic comments (as a consequence, Rley runs only on Rubies 2.3 or newer).
|
|
5
|
+
- Code restyling to please rubocop 0.7.40.
|
|
6
|
+
- [CHANGE] Class `ParseEntrySet`: minor code optimization
|
|
7
|
+
- [CHANGE] File `README.md` removed allusion to Ruby 2.0.x up to 2.2.x.
|
|
8
|
+
- [CHANGE] File `README.md` added Ruby 2.6.x up as supported version.
|
|
9
|
+
|
|
10
|
+
|
|
1
11
|
### 0.7.03 / 2019-07-21
|
|
2
12
|
- Minor refactoring for parsing speed improvement.
|
|
3
13
|
* [CHANGE] Replacing comparison with object_id by `equal?` method
|
|
4
14
|
* [CHANGE] Method `ParseEntry#hash` added
|
|
5
15
|
* [CHANGE] Class `ParseEntrySet` added new Hash attribute in order to speed up membership testing.
|
|
6
16
|
|
|
7
|
-
|
|
8
17
|
### 0.7.02 / 2019-01-13
|
|
9
18
|
- Removed Ruby versions older than 2.3 in CI testing because of breaking changes by Bundler 2.0
|
|
10
19
|
* [CHANGE] Files `Gemfile`, `.travis.yml`, `appveyor.yml` updated.
|
data/README.md
CHANGED
|
@@ -50,13 +50,11 @@ application range such as:
|
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
### Compatibility
|
|
53
|
-
Rley supports the following Ruby implementations:
|
|
54
|
-
- MRI 2.0
|
|
55
|
-
- MRI 2.1
|
|
56
|
-
- MRI 2.2
|
|
53
|
+
Rley supports the following Ruby implementations:
|
|
57
54
|
- MRI 2.3
|
|
58
55
|
- MRI 2.4
|
|
59
|
-
- MRI 2.5
|
|
56
|
+
- MRI 2.5
|
|
57
|
+
- MRI 2.6
|
|
60
58
|
- JRuby 9.1+
|
|
61
59
|
|
|
62
60
|
---
|
data/Rakefile
CHANGED
data/appveyor.yml
CHANGED
|
@@ -2,16 +2,18 @@ version: '{build}'
|
|
|
2
2
|
max_jobs: 5
|
|
3
3
|
environment:
|
|
4
4
|
matrix:
|
|
5
|
+
- Ruby_version: 26-x64
|
|
5
6
|
- Ruby_version: 25-x64
|
|
6
7
|
- Ruby_version: 24-x64
|
|
7
8
|
- Ruby_version: 23-x64
|
|
9
|
+
- Ruby_version: 26
|
|
8
10
|
- Ruby_version: 25
|
|
9
11
|
- Ruby_version: 24
|
|
10
12
|
- Ruby_version: 23
|
|
11
13
|
|
|
12
14
|
# These are failing
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
+
#
|
|
16
|
+
#
|
|
15
17
|
|
|
16
18
|
install:
|
|
17
19
|
- set PATH=C:\Ruby%Ruby_version%\bin;%PATH%
|
data/examples/NLP/engtagger.rb
CHANGED
data/examples/general/left.rb
CHANGED
data/examples/general/right.rb
CHANGED
data/lib/rley.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Rley # This module is used as a namespace
|
|
2
4
|
module Base # This module is used as a namespace
|
|
3
5
|
# A dotted item is a parse state for a given production/grammar rule
|
|
@@ -38,7 +40,7 @@ module Rley # This module is used as a namespace
|
|
|
38
40
|
def to_s()
|
|
39
41
|
prefix = "#{production.lhs} => "
|
|
40
42
|
text_values = production.rhs.map(&:to_s)
|
|
41
|
-
if position
|
|
43
|
+
if position.negative?
|
|
42
44
|
text_values << '.'
|
|
43
45
|
else
|
|
44
46
|
text_values.insert(position, '.')
|
|
@@ -61,7 +63,7 @@ module Rley # This module is used as a namespace
|
|
|
61
63
|
# A dotted item is called a reduce item if the dot is at the end.
|
|
62
64
|
# @return [Boolean]
|
|
63
65
|
def reduce_item?()
|
|
64
|
-
return position
|
|
66
|
+
return position.negative? # Either -1 or -2
|
|
65
67
|
end
|
|
66
68
|
|
|
67
69
|
# The non-terminal symbol that is on the left-side of the production
|
|
@@ -88,23 +90,26 @@ module Rley # This module is used as a namespace
|
|
|
88
90
|
# nil is returned if the dot is at the end
|
|
89
91
|
# @return [Syntax::GrmSymbol, NilClass]
|
|
90
92
|
def next_symbol()
|
|
91
|
-
return position
|
|
93
|
+
return position.negative? ? nil : production.rhs[position]
|
|
92
94
|
end
|
|
93
95
|
|
|
94
96
|
# Calculate the position of the dot if were moved by
|
|
95
97
|
# one step on the left.
|
|
96
98
|
# @return [Integer]
|
|
97
99
|
def prev_position()
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
100
|
+
unless @k_prev_position
|
|
101
|
+
case position
|
|
102
|
+
when -2, 0
|
|
103
|
+
result = nil
|
|
104
|
+
when -1
|
|
105
|
+
result = production.rhs.size == 1 ? 0 : production.rhs.size - 1
|
|
106
|
+
else
|
|
107
|
+
result = position - 1
|
|
108
|
+
end
|
|
109
|
+
@k_prev_position = [result]
|
|
105
110
|
end
|
|
106
111
|
|
|
107
|
-
|
|
112
|
+
@k_prev_position[0]
|
|
108
113
|
end
|
|
109
114
|
|
|
110
115
|
# Return true if this dotted item has a dot one place
|
|
@@ -126,7 +131,7 @@ module Rley # This module is used as a namespace
|
|
|
126
131
|
# Return the given position after its validation.
|
|
127
132
|
def valid_position(aPosition)
|
|
128
133
|
rhs_size = production.rhs.size
|
|
129
|
-
if aPosition
|
|
134
|
+
if aPosition.negative? || aPosition > rhs_size
|
|
130
135
|
raise StandardError, 'Out of bound index'
|
|
131
136
|
end
|
|
132
137
|
|
data/lib/rley/constants.rb
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
# File: constants.rb
|
|
2
4
|
# Purpose: definition of Rley constants.
|
|
3
5
|
|
|
4
6
|
module Rley # Module used as a namespace
|
|
5
7
|
# The version number of the gem.
|
|
6
|
-
Version = '0.7.
|
|
8
|
+
Version = '0.7.04'
|
|
7
9
|
|
|
8
10
|
# Brief description of the gem.
|
|
9
|
-
Description = "Ruby implementation of the Earley's parsing algorithm"
|
|
11
|
+
Description = "Ruby implementation of the Earley's parsing algorithm"
|
|
10
12
|
|
|
11
13
|
# Constant Rley::RootDir contains the absolute path of Rley's
|
|
12
14
|
# start directory. Note: it also ends with a slash character.
|
data/lib/rley/engine.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require_relative './syntax/grammar_builder'
|
|
2
4
|
require_relative './parser/gfg_earley_parser'
|
|
3
5
|
require_relative './parse_tree_visitor'
|
|
@@ -15,7 +17,6 @@ module Rley # This module is used as a namespace
|
|
|
15
17
|
:repr_builder,
|
|
16
18
|
:diagnose
|
|
17
19
|
) do
|
|
18
|
-
|
|
19
20
|
# Constructor with default initialization.
|
|
20
21
|
def initialize()
|
|
21
22
|
super()
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require_relative 'base_formatter'
|
|
2
4
|
|
|
3
5
|
|
|
@@ -100,7 +102,7 @@ module Rley # This module is used as a namespace
|
|
|
100
102
|
def path_prefix()
|
|
101
103
|
return '' if ranks.empty?
|
|
102
104
|
|
|
103
|
-
prefix = ''
|
|
105
|
+
prefix = +''
|
|
104
106
|
@ranks.each_with_index do |rank, i|
|
|
105
107
|
next if i.zero?
|
|
106
108
|
|
data/lib/rley/formatter/debug.rb
CHANGED