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