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