calyx 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7112f159f70c04c14dac41d8d72276420f7e0337
4
- data.tar.gz: 536092ae530d8e076ad77726e00d68c614225bc3
3
+ metadata.gz: d3f368fca27d4586669e9bf2a681e7af89ffd461
4
+ data.tar.gz: 54750dca8ee597a148776e4a44eaa86afa1d2d77
5
5
  SHA512:
6
- metadata.gz: ce5e36865d4235036124e8407eb129e530fffc8f4e7a96bcfadf91f5eda18e6a2ec5a528c04a5f3e0adf40bb85b25fae42797391586fb1e2c3f60764f1b80236
7
- data.tar.gz: 05792c2e0581ac250ba9e4007f72ed0442e8ddfa2087b57b86f030a9be84c8d3a4c10d9e4290d90e74e1007f436827b8274fceb293e94830349fdc3e3ee3c71a
6
+ metadata.gz: b14635a63d51ef8ac38dcb58179e841c275a1665ab7c8421b5f2996b9cc6865a269d469aa3669cfa4995c2ed47c8ab88f6bcff646c97ee8167b9ffa2d7e081ce
7
+ data.tar.gz: fc8f02424498b81528b605cc42226941d64a79720039d636faed5ef9a949878b665275758fb1d0ce2554db654bc841068822264c5cdae875f158e54320ecb4e2
@@ -2,6 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 2.1
4
4
  - 2.2
5
+ - 2.3.0
5
6
  - rbx-2
6
7
  - jruby-9
7
8
  - jruby-head
@@ -16,29 +16,29 @@ module Calyx
16
16
  end
17
17
 
18
18
  def expand(symbol)
19
- @rules[symbol]
19
+ @rules[symbol] || @context[symbol]
20
20
  end
21
21
 
22
22
  def combine(registry)
23
23
  @rules = rules.merge(registry.rules)
24
24
  end
25
25
 
26
- def evaluate(start_symbol=:start, context={})
27
- duplicate_registry = Marshal.load(Marshal.dump(self))
28
- duplicate_rules = duplicate_registry.rules
29
- context.each do |key, value|
30
- if duplicate_rules.key?(key.to_sym)
26
+ def evaluate(start_symbol=:start, rules_map={})
27
+ @context = {}
28
+
29
+ rules_map.each do |key, value|
30
+ if rules.key?(key.to_sym)
31
31
  raise "Rule already declared in grammar: #{key}"
32
32
  end
33
33
 
34
- duplicate_rules[key.to_sym] = if value.is_a?(Array)
35
- Production::Choices.parse(value, duplicate_registry)
34
+ @context[key.to_sym] = if value.is_a?(Array)
35
+ Production::Choices.parse(value, self)
36
36
  else
37
- Production::Concat.parse(value.to_s, duplicate_registry)
37
+ Production::Concat.parse(value.to_s, self)
38
38
  end
39
39
  end
40
40
 
41
- duplicate_rules[start_symbol].evaluate
41
+ expand(start_symbol).evaluate
42
42
  end
43
43
 
44
44
  private
@@ -1,3 +1,3 @@
1
1
  module Calyx
2
- VERSION = '0.8.1'.freeze
2
+ VERSION = '0.8.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calyx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rickerby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-29 00:00:00.000000000 Z
11
+ date: 2016-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler