rley 0.2.10 → 0.2.11
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 +6 -14
- data/.ruby-version +1 -1
- data/.travis.yml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile +2 -2
- data/lib/rley/constants.rb +1 -1
- data/lib/rley/parser/chart.rb +13 -14
- data/lib/rley/parser/dotted_item.rb +3 -3
- data/lib/rley/parser/earley_parser.rb +2 -2
- data/lib/rley/parser/parse_state.rb +1 -1
- data/lib/rley/ptree/terminal_node.rb +3 -3
- data/lib/rley/syntax/verbatim_symbol.rb +1 -1
- data/spec/rley/formatter/debug_spec.rb +1 -1
- data/spec/rley/formatter/json_spec.rb +8 -8
- data/spec/rley/parse_tree_visitor_spec.rb +1 -2
- data/spec/rley/parser/earley_parser_spec.rb +1 -1
- data/spec/rley/parser/parse_tree_builder_spec.rb +2 -3
- data/spec/rley/parser/parsing_spec.rb +4 -4
- data/spec/rley/ptree/parse_tree_node_spec.rb +3 -3
- data/spec/rley/ptree/parse_tree_spec.rb +1 -1
- data/spec/rley/ptree/token_range_spec.rb +5 -5
- data/spec/rley/syntax/grammar_spec.rb +2 -2
- data/spec/rley/syntax/symbol_seq_spec.rb +1 -1
- metadata +54 -39
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
NTA0MTBkNzU4ZDdkNmNmOTA5YjBmNTY3Njg4ZDVkZGU5MmMzNzFmZWVlY2Fm
|
10
|
-
YzUzZWI4MzU3NmZjYTBmYWQ0NjQzY2QxZjBlMTZlMGIxODY5ZDQ2NTM0ZDRk
|
11
|
-
NTdjODAxZjViZmU2MThiNDhkNDEzNGI3MjVkMDg3MDI3ZTIwNTU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NTFiZGZlZWI2NTU0ZjNmMzlhZjVmZTlkNmM3ZTFmZGFhYmNhYjcwNDQ5Zjdi
|
14
|
-
NGRlMjkwZGJjZjMzNDMxOGM3NTIyYTdjNmQzYjQyMGI3ZjdiMDdjMmE5MDkz
|
15
|
-
NzI5ZDRmZTQ1Zjg2YjFjYmVhMTJmNGYxZTViNTQzNTRlNjhiNjI=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f8e948ad67fc54061db90c17fdd492a637d86ee5
|
4
|
+
data.tar.gz: 0ae31c54bb56f2b031c666da5e50a6e4c5b652ad
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 47625538467f3e61d2d49d566e9aede25def7faabd5685d21fa30c66c4a10dea1846631916f2a9c16e8abdf6778a6d596a0ad6abd1aef44bba45ff72905ee4d6
|
7
|
+
data.tar.gz: f4afa9d44afb07221b5418025a65bc8bd9a0bf9b98175344d6db6e3f6985bd1e719139efe6e5f2eede4eaa4cd359d43c536cdb4b06812f9a309d087c6c8f591c
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.2.3
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
### 0.2.11 / 2015-09-05
|
2
|
+
* [CHANGE] Code re-formatted to please Rubocop 0.34.0
|
3
|
+
* [CHANGE] File `.travis.yml`: added new Rubies: MRI 2.2.0 and JRuby 9.0.
|
4
|
+
* [CHANGE] File `rley.gemspec`: Upgraded gem versions in development dependencies
|
5
|
+
* [CHANGE] File `Gemfile`: Upgraded gem versions in development dependencies
|
6
|
+
|
1
7
|
### 0.2.10 / 2015-06-16
|
2
8
|
* [CHANGE] Code re-formatted to please Rubocop 0.32.0
|
3
9
|
* [FIX] File `.rubocop.yml`: disable some cop settings that were too loud.
|
data/Gemfile
CHANGED
@@ -2,8 +2,8 @@ source 'https://rubygems.org'
|
|
2
2
|
# Prevent Bundler to load the dependencies from our .gemspec file
|
3
3
|
|
4
4
|
group :development do
|
5
|
-
gem 'rake', '>= 0.
|
5
|
+
gem 'rake', '>= 10.0.0'
|
6
6
|
gem 'rspec', '>= 3.0.0'
|
7
|
-
gem 'simplecov', '>= 0.
|
7
|
+
gem 'simplecov', '>= 0.8.0'
|
8
8
|
gem 'coveralls', '>= 0.7.0'
|
9
9
|
end
|
data/lib/rley/constants.rb
CHANGED
data/lib/rley/parser/chart.rb
CHANGED
@@ -36,7 +36,7 @@ module Rley # This module is used as a namespace
|
|
36
36
|
|
37
37
|
# Return the index value of the last non-empty state set.
|
38
38
|
def last_index()
|
39
|
-
first_empty =
|
39
|
+
first_empty = state_sets.find_index(&:empty?)
|
40
40
|
if first_empty.nil?
|
41
41
|
index = state_sets.size - 1
|
42
42
|
else
|
@@ -50,19 +50,18 @@ module Rley # This module is used as a namespace
|
|
50
50
|
def push_state(aDottedItem, anOrigin, anIndex, aReason)
|
51
51
|
new_state = ParseState.new(aDottedItem, anOrigin)
|
52
52
|
pushed = self[anIndex].push_state(new_state)
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
end
|
53
|
+
return unless pushed && tracer.level > 0
|
54
|
+
case aReason
|
55
|
+
when :start_rule, :prediction
|
56
|
+
tracer.trace_prediction(anIndex, new_state)
|
57
|
+
|
58
|
+
when :scanning
|
59
|
+
tracer.trace_scanning(anIndex, new_state)
|
60
|
+
|
61
|
+
when :completion
|
62
|
+
tracer.trace_completion(anIndex, new_state)
|
63
|
+
else
|
64
|
+
fail NotImplementedError, "Unknown push_state mode #{aReason}"
|
66
65
|
end
|
67
66
|
end
|
68
67
|
end # class
|
@@ -13,7 +13,7 @@ module Rley # This module is used as a namespace
|
|
13
13
|
# An item with the dot at the end (i.e. after all rhs symbols)
|
14
14
|
# is called a reduce item.
|
15
15
|
# An item with a dot in front of a terminal is called a shift item.
|
16
|
-
module Parser
|
16
|
+
module Parser # This module is used as a namespace
|
17
17
|
class DottedItem
|
18
18
|
# Production rule
|
19
19
|
attr_reader(:production)
|
@@ -71,7 +71,7 @@ module Rley # This module is used as a namespace
|
|
71
71
|
if before_position.nil?
|
72
72
|
result = nil
|
73
73
|
else
|
74
|
-
result =
|
74
|
+
result = production.rhs[before_position]
|
75
75
|
end
|
76
76
|
|
77
77
|
return result
|
@@ -114,7 +114,7 @@ module Rley # This module is used as a namespace
|
|
114
114
|
if rhs_size == 0
|
115
115
|
index = -2 # Minus 2 at start/end of empty production
|
116
116
|
elsif aPosition == rhs_size
|
117
|
-
index = -1
|
117
|
+
index = -1 # Minus 1 at end of non-empty production
|
118
118
|
else
|
119
119
|
index = aPosition
|
120
120
|
end
|
@@ -47,14 +47,14 @@ module Rley # This module is used as a namespace
|
|
47
47
|
handle_error(result) if result.chart[i].empty?
|
48
48
|
predicted = Set.new
|
49
49
|
result.chart[i].each do |state|
|
50
|
-
if state.complete?
|
50
|
+
if state.complete? # End of production reached?
|
51
51
|
completion(result, state, i, tracer)
|
52
52
|
else
|
53
53
|
next_symbol = state.next_symbol
|
54
54
|
if next_symbol.kind_of?(Syntax::NonTerminal)
|
55
55
|
unless predicted.include? next_symbol
|
56
56
|
prediction(result, state, next_symbol, i, tracer)
|
57
|
-
predicted << next_symbol
|
57
|
+
predicted << next_symbol # Avoid repeated predictions
|
58
58
|
end
|
59
59
|
elsif i < last_token_index
|
60
60
|
# Expecting a terminal symbol
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative 'parse_tree_node'
|
1
|
+
require_relative 'parse_tree_node' # Load superclass
|
2
2
|
|
3
3
|
module Rley # This module is used as a namespace
|
4
4
|
module PTree # This module is used as a namespace
|
@@ -9,14 +9,14 @@ module Rley # This module is used as a namespace
|
|
9
9
|
def initialize(aTerminalSymbol, aRange)
|
10
10
|
super(aTerminalSymbol, aRange)
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
# Emit a (formatted) string representation of the node.
|
14
14
|
# Mainly used for diagnosis/debugging purposes.
|
15
15
|
def to_string(indentation)
|
16
16
|
value = token.nil? ? '(nil)' : token.lexeme
|
17
17
|
super(indentation) + ": '#{value}'"
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
# Part of the 'visitee' role in Visitor design pattern.
|
21
21
|
# @param aVisitor[ParseTreeVisitor] the visitor
|
22
22
|
def accept(aVisitor)
|
@@ -12,7 +12,7 @@ require_relative '../../../lib/rley/formatter/debug'
|
|
12
12
|
module Rley # Re-open the module to get rid of qualified names
|
13
13
|
module Formatter
|
14
14
|
describe Debug do
|
15
|
-
include GrammarABCHelper
|
15
|
+
include GrammarABCHelper # Mix-in module for grammar abc
|
16
16
|
|
17
17
|
# Factory method. Build a production with the given sequence
|
18
18
|
# of symbols as its rhs.
|
@@ -13,7 +13,7 @@ require_relative '../../../lib/rley/formatter/json'
|
|
13
13
|
module Rley # Re-open the module to get rid of qualified names
|
14
14
|
module Formatter
|
15
15
|
describe Json do
|
16
|
-
include GrammarABCHelper
|
16
|
+
include GrammarABCHelper # Mix-in module with builder for grammar abc
|
17
17
|
|
18
18
|
# Factory method. Build a production with the given sequence
|
19
19
|
# of symbols as its rhs.
|
@@ -21,12 +21,12 @@ module Rley # Re-open the module to get rid of qualified names
|
|
21
21
|
builder = grammar_abc_builder
|
22
22
|
builder.grammar
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
# Variables for the terminal symbols
|
26
26
|
let(:a_) { grammar_abc.name2symbol['a'] }
|
27
27
|
let(:b_) { grammar_abc.name2symbol['b'] }
|
28
28
|
let(:c_) { grammar_abc.name2symbol['c'] }
|
29
|
-
|
29
|
+
|
30
30
|
# Helper method that mimicks the output of a tokenizer
|
31
31
|
# for the language specified by gramma_abc
|
32
32
|
let(:grm_abc_tokens1) do
|
@@ -56,22 +56,22 @@ module Rley # Re-open the module to get rid of qualified names
|
|
56
56
|
parse_result = parser.parse(grm_abc_tokens1)
|
57
57
|
parse_result.parse_tree
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
let(:destination) { StringIO.new('', 'w') }
|
61
61
|
|
62
62
|
context 'Standard creation & initialization:' do
|
63
63
|
it 'should be initialized with an IO argument' do
|
64
64
|
expect { Json.new(StringIO.new('', 'w')) }.not_to raise_error
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
it 'should know its output destination' do
|
68
68
|
instance = Json.new(destination)
|
69
69
|
expect(instance.output).to eq(destination)
|
70
70
|
end
|
71
71
|
end # context
|
72
|
-
|
73
|
-
|
74
|
-
context 'Formatting events:' do
|
72
|
+
|
73
|
+
|
74
|
+
context 'Formatting events:' do
|
75
75
|
it 'should render a parse tree in JSON' do
|
76
76
|
instance = Json.new(destination)
|
77
77
|
visitor = Rley::ParseTreeVisitor.new(grm_abc_ptree1)
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require_relative '../spec_helper'
|
2
2
|
|
3
|
-
|
4
3
|
require_relative './support/grammar_abc_helper'
|
5
4
|
require_relative '../../lib/rley/parser/token'
|
6
5
|
require_relative '../../lib/rley/parser/earley_parser'
|
@@ -9,7 +8,7 @@ require_relative '../../lib/rley/parse_tree_visitor'
|
|
9
8
|
|
10
9
|
module Rley # Open this namespace to avoid module qualifier prefixes
|
11
10
|
describe ParseTreeVisitor do
|
12
|
-
include GrammarABCHelper
|
11
|
+
include GrammarABCHelper # Mix-in module with builder for grammar abc
|
13
12
|
|
14
13
|
let(:grammar_abc) do
|
15
14
|
builder = grammar_abc_builder
|
@@ -82,7 +82,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
82
82
|
let(:nt_M) { Syntax::NonTerminal.new('M') }
|
83
83
|
let(:nt_T) { Syntax::NonTerminal.new('T') }
|
84
84
|
let(:plus) { Syntax::VerbatimSymbol.new('+') }
|
85
|
-
let(:star)
|
85
|
+
let(:star) { Syntax::VerbatimSymbol.new('*') }
|
86
86
|
let(:integer) do
|
87
87
|
integer_pattern = /[-+]?[0-9]+/ # Decimal notation
|
88
88
|
Syntax::Literal.new('integer', integer_pattern)
|
@@ -9,7 +9,7 @@ require_relative '../support/grammar_abc_helper'
|
|
9
9
|
module Rley # Open this namespace to avoid module qualifier prefixes
|
10
10
|
module Parser # Open this namespace to avoid module qualifier prefixes
|
11
11
|
describe ParseTreeBuilder do
|
12
|
-
include GrammarABCHelper
|
12
|
+
include GrammarABCHelper # Mix-in module with builder for grammar abc
|
13
13
|
|
14
14
|
let(:grammar_abc) do
|
15
15
|
builder = grammar_abc_builder
|
@@ -159,9 +159,8 @@ SNIPPET
|
|
159
159
|
subject.move_back # ...to S
|
160
160
|
expect(subject.current_node.symbol).to eq(capital_s)
|
161
161
|
end
|
162
|
-
|
162
|
+
|
163
163
|
it 'should move through deeply nested structure' do
|
164
|
-
|
165
164
|
end
|
166
165
|
end # context
|
167
166
|
|
@@ -19,7 +19,7 @@ require_relative '../../../lib/rley/parser/parsing'
|
|
19
19
|
module Rley # Open this namespace to avoid module qualifier prefixes
|
20
20
|
module Parser # Open this namespace to avoid module qualifier prefixes
|
21
21
|
describe Parsing do
|
22
|
-
include GrammarABCHelper
|
22
|
+
include GrammarABCHelper # Mix-in module with builder for grammar abc
|
23
23
|
include GrammarBExprHelper # Mix-in with builder for simple expressions
|
24
24
|
|
25
25
|
# Grammar 1: A very simple language
|
@@ -71,7 +71,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
71
71
|
it 'should know its chart object' do
|
72
72
|
expect(subject.chart).to be_kind_of(Chart)
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
it 'should emit trace level 1 info' do
|
76
76
|
tracer = ParseTracer.new(1, output, grm1_tokens)
|
77
77
|
Parsing.new(start_dotted_rule, grm1_tokens, tracer)
|
@@ -358,7 +358,7 @@ P[0, 5]
|
|
358
358
|
SNIPPET
|
359
359
|
root_text = builder.root.to_string(0)
|
360
360
|
expect(root_text).to eq(expected_text.chomp)
|
361
|
-
|
361
|
+
|
362
362
|
expected_state = 'T => . integer | 0'
|
363
363
|
expect(state_tracker.parse_state.to_s).to eq(expected_state)
|
364
364
|
expect(state_tracker.state_set_index).to eq(0)
|
@@ -398,7 +398,7 @@ P[0, 5]
|
|
398
398
|
+- T[4, 5]
|
399
399
|
+- integer[4, 5]: '4'
|
400
400
|
SNIPPET
|
401
|
-
actual =
|
401
|
+
actual = ptree.root.to_string(0)
|
402
402
|
expect(actual).to eq(expected_text.chomp)
|
403
403
|
end
|
404
404
|
end # context
|
@@ -7,8 +7,8 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
7
7
|
module PTree # Open this namespace to avoid module qualifier prefixes
|
8
8
|
describe ParseTreeNode do
|
9
9
|
let(:sample_symbol) { double('fake-symbol') }
|
10
|
-
let(:sample_range) { { low: 0, high: 5 }
|
11
|
-
|
10
|
+
let(:sample_range) { { low: 0, high: 5 } }
|
11
|
+
|
12
12
|
subject { ParseTreeNode.new(sample_symbol, sample_range) }
|
13
13
|
|
14
14
|
context 'Initialization:' do
|
@@ -20,7 +20,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
20
20
|
it 'should know its symbol' do
|
21
21
|
expect(subject.symbol).to eq(sample_symbol)
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
it 'should know its range' do
|
25
25
|
expect(subject.range).to eq(sample_range)
|
26
26
|
end
|
@@ -9,7 +9,7 @@ require_relative '../../../lib/rley/ptree/parse_tree'
|
|
9
9
|
module Rley # Open this namespace to avoid module qualifier prefixes
|
10
10
|
module PTree # Open this namespace to avoid module qualifier prefixes
|
11
11
|
describe ParseTree do
|
12
|
-
include GrammarABCHelper
|
12
|
+
include GrammarABCHelper # Mix-in module with builder for grammar abc
|
13
13
|
|
14
14
|
let(:sample_grammar) do
|
15
15
|
builder = grammar_abc_builder
|
@@ -67,11 +67,11 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
67
67
|
expect(instance).not_to be_bounded
|
68
68
|
|
69
69
|
# Case: only upper bound is set
|
70
|
-
instance =
|
70
|
+
instance = TokenRange.new(high: 5)
|
71
71
|
expect(instance).not_to be_bounded
|
72
72
|
|
73
73
|
# No bound is set
|
74
|
-
instance =
|
74
|
+
instance = TokenRange.new({})
|
75
75
|
expect(instance).not_to be_bounded
|
76
76
|
end
|
77
77
|
|
@@ -146,7 +146,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
146
146
|
|
147
147
|
it 'should provide a text representation of itself' do
|
148
148
|
# Case 1: not bound is set
|
149
|
-
instance =
|
149
|
+
instance = TokenRange.new({})
|
150
150
|
expect(instance.to_string(0)).to eq('[?, ?]')
|
151
151
|
|
152
152
|
# Case: only low bound is set
|
@@ -154,11 +154,11 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
154
154
|
expect(instance.to_string(0)).to eq('[0, ?]')
|
155
155
|
|
156
156
|
# Case: only upper bound is set
|
157
|
-
instance =
|
157
|
+
instance = TokenRange.new(high: 5)
|
158
158
|
expect(instance.to_string(0)).to eq('[?, 5]')
|
159
159
|
|
160
160
|
# Case: both bounds are set
|
161
|
-
instance =
|
161
|
+
instance = TokenRange.new(low: 0, high: 5)
|
162
162
|
expect(instance.to_string(0)).to eq('[0, 5]')
|
163
163
|
end
|
164
164
|
end
|
@@ -14,7 +14,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
14
14
|
# having same lhs and the symbols sequence
|
15
15
|
# in their rhs.
|
16
16
|
def alternate_prods(aNonTerminal, sequences)
|
17
|
-
prods =
|
17
|
+
prods = sequences.map do |symbs|
|
18
18
|
Production.new(aNonTerminal, symbs)
|
19
19
|
end
|
20
20
|
|
@@ -34,7 +34,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
34
34
|
end
|
35
35
|
|
36
36
|
# Grammar symbols for integer arithmetic expressions
|
37
|
-
let(:number) { Literal.new('number', /\d+/) }
|
37
|
+
let(:number) { Literal.new('number', /\d+/) } # Positive integers only
|
38
38
|
let(:add_op) { NonTerminal.new('add_op') }
|
39
39
|
let(:add_operators) { [grm1_ops['+'], grm1_ops['-']] }
|
40
40
|
let(:mult_op) { NonTerminal.new('mult_op') }
|
@@ -41,7 +41,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
|
|
41
41
|
|
42
42
|
context 'Provided services:' do
|
43
43
|
it 'should compare compare with itself' do
|
44
|
-
me = subject
|
44
|
+
me = subject # Use another name to please Rubocop
|
45
45
|
expect(subject == me).to eq(true)
|
46
46
|
end
|
47
47
|
|
metadata
CHANGED
@@ -1,83 +1,101 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rley
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitri Geshef
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '10.0'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 10.0.0
|
20
23
|
type: :development
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
29
|
+
version: '10.0'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 10.0.0
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rspec
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- -
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.0'
|
40
|
+
- - ">="
|
32
41
|
- !ruby/object:Gem::Version
|
33
42
|
version: 3.0.0
|
34
43
|
type: :development
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
|
-
- -
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '3.0'
|
50
|
+
- - ">="
|
39
51
|
- !ruby/object:Gem::Version
|
40
52
|
version: 3.0.0
|
41
53
|
- !ruby/object:Gem::Dependency
|
42
54
|
name: simplecov
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
44
56
|
requirements:
|
45
|
-
- -
|
57
|
+
- - ">="
|
46
58
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
59
|
+
version: 0.8.0
|
48
60
|
type: :development
|
49
61
|
prerelease: false
|
50
62
|
version_requirements: !ruby/object:Gem::Requirement
|
51
63
|
requirements:
|
52
|
-
- -
|
64
|
+
- - ">="
|
53
65
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
66
|
+
version: 0.8.0
|
55
67
|
- !ruby/object:Gem::Dependency
|
56
68
|
name: coveralls
|
57
69
|
requirement: !ruby/object:Gem::Requirement
|
58
70
|
requirements:
|
59
|
-
- -
|
71
|
+
- - ">="
|
60
72
|
- !ruby/object:Gem::Version
|
61
73
|
version: 0.7.0
|
62
74
|
type: :development
|
63
75
|
prerelease: false
|
64
76
|
version_requirements: !ruby/object:Gem::Requirement
|
65
77
|
requirements:
|
66
|
-
- -
|
78
|
+
- - ">="
|
67
79
|
- !ruby/object:Gem::Version
|
68
80
|
version: 0.7.0
|
69
81
|
- !ruby/object:Gem::Dependency
|
70
82
|
name: rubygems
|
71
83
|
requirement: !ruby/object:Gem::Requirement
|
72
84
|
requirements:
|
73
|
-
- -
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '2.0'
|
88
|
+
- - ">="
|
74
89
|
- !ruby/object:Gem::Version
|
75
90
|
version: 2.0.0
|
76
91
|
type: :development
|
77
92
|
prerelease: false
|
78
93
|
version_requirements: !ruby/object:Gem::Requirement
|
79
94
|
requirements:
|
80
|
-
- -
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '2.0'
|
98
|
+
- - ">="
|
81
99
|
- !ruby/object:Gem::Version
|
82
100
|
version: 2.0.0
|
83
101
|
description: A general parser using the Earley algorithm.
|
@@ -87,31 +105,31 @@ extensions: []
|
|
87
105
|
extra_rdoc_files:
|
88
106
|
- README.md
|
89
107
|
files:
|
90
|
-
- .
|
91
|
-
- .
|
92
|
-
- .ruby-gemset
|
93
|
-
- .ruby-version
|
94
|
-
- .simplecov
|
95
|
-
- .travis.yml
|
96
|
-
- .yardopts
|
97
|
-
- Gemfile
|
98
|
-
- Rakefile
|
108
|
+
- ".rspec"
|
109
|
+
- ".rubocop.yml"
|
110
|
+
- ".ruby-gemset"
|
111
|
+
- ".ruby-version"
|
112
|
+
- ".simplecov"
|
113
|
+
- ".travis.yml"
|
114
|
+
- ".yardopts"
|
99
115
|
- CHANGELOG.md
|
116
|
+
- Gemfile
|
100
117
|
- LICENSE.txt
|
101
118
|
- README.md
|
102
|
-
-
|
119
|
+
- Rakefile
|
103
120
|
- examples/grammars/grammar_L0.rb
|
104
|
-
- examples/
|
121
|
+
- examples/grammars/grammar_abc.rb
|
105
122
|
- examples/parsers/demo-JSON/JSON_grammar.rb
|
106
123
|
- examples/parsers/demo-JSON/JSON_lexer.rb
|
107
124
|
- examples/parsers/demo-JSON/JSON_parser.rb
|
125
|
+
- examples/parsers/demo-JSON/demo_json.rb
|
126
|
+
- examples/parsers/parsing_L0.rb
|
127
|
+
- examples/parsers/parsing_L1.rb
|
108
128
|
- examples/parsers/parsing_abc.rb
|
109
129
|
- examples/parsers/parsing_ambig.rb
|
110
130
|
- examples/parsers/parsing_b_expr.rb
|
111
131
|
- examples/parsers/parsing_err_expr.rb
|
112
132
|
- examples/parsers/parsing_groucho.rb
|
113
|
-
- examples/parsers/parsing_L0.rb
|
114
|
-
- examples/parsers/parsing_L1.rb
|
115
133
|
- examples/parsers/tracing_parser.rb
|
116
134
|
- examples/recognizers/recognizer_abc.rb
|
117
135
|
- lib/rley.rb
|
@@ -119,6 +137,7 @@ files:
|
|
119
137
|
- lib/rley/formatter/base_formatter.rb
|
120
138
|
- lib/rley/formatter/debug.rb
|
121
139
|
- lib/rley/formatter/json.rb
|
140
|
+
- lib/rley/parse_tree_visitor.rb
|
122
141
|
- lib/rley/parser/chart.rb
|
123
142
|
- lib/rley/parser/dotted_item.rb
|
124
143
|
- lib/rley/parser/earley_parser.rb
|
@@ -129,7 +148,6 @@ files:
|
|
129
148
|
- lib/rley/parser/parsing.rb
|
130
149
|
- lib/rley/parser/state_set.rb
|
131
150
|
- lib/rley/parser/token.rb
|
132
|
-
- lib/rley/parse_tree_visitor.rb
|
133
151
|
- lib/rley/ptree/non_terminal_node.rb
|
134
152
|
- lib/rley/ptree/parse_tree.rb
|
135
153
|
- lib/rley/ptree/parse_tree_node.rb
|
@@ -146,6 +164,7 @@ files:
|
|
146
164
|
- lib/rley/syntax/verbatim_symbol.rb
|
147
165
|
- spec/rley/formatter/debug_spec.rb
|
148
166
|
- spec/rley/formatter/json_spec.rb
|
167
|
+
- spec/rley/parse_tree_visitor_spec.rb
|
149
168
|
- spec/rley/parser/chart_spec.rb
|
150
169
|
- spec/rley/parser/dotted_item_spec.rb
|
151
170
|
- spec/rley/parser/earley_parser_spec.rb
|
@@ -155,7 +174,6 @@ files:
|
|
155
174
|
- spec/rley/parser/parsing_spec.rb
|
156
175
|
- spec/rley/parser/state_set_spec.rb
|
157
176
|
- spec/rley/parser/token_spec.rb
|
158
|
-
- spec/rley/parse_tree_visitor_spec.rb
|
159
177
|
- spec/rley/ptree/non_terminal_node_spec.rb
|
160
178
|
- spec/rley/ptree/parse_tree_node_spec.rb
|
161
179
|
- spec/rley/ptree/parse_tree_spec.rb
|
@@ -178,30 +196,27 @@ homepage: https://github.com/famished-tiger/Rley
|
|
178
196
|
licenses:
|
179
197
|
- MIT
|
180
198
|
metadata: {}
|
181
|
-
post_install_message:
|
182
|
-
|
199
|
+
post_install_message: |
|
200
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
183
201
|
Thank you for installing Rley...
|
184
|
-
|
185
202
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
186
|
-
|
187
|
-
'
|
188
203
|
rdoc_options:
|
189
204
|
- --charset=UTF-8 --exclude="examples|features|spec"
|
190
205
|
require_paths:
|
191
206
|
- lib
|
192
207
|
required_ruby_version: !ruby/object:Gem::Requirement
|
193
208
|
requirements:
|
194
|
-
- -
|
209
|
+
- - ">="
|
195
210
|
- !ruby/object:Gem::Version
|
196
211
|
version: 1.9.3
|
197
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
213
|
requirements:
|
199
|
-
- -
|
214
|
+
- - ">="
|
200
215
|
- !ruby/object:Gem::Version
|
201
216
|
version: '0'
|
202
217
|
requirements: []
|
203
218
|
rubyforge_project:
|
204
|
-
rubygems_version: 2.
|
219
|
+
rubygems_version: 2.4.5.1
|
205
220
|
signing_key:
|
206
221
|
specification_version: 4
|
207
222
|
summary: Ruby implementation of the Earley's parsing algorithm
|