delorean_lang 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f51984247bdded71f32757212ebef7550f047308
4
+ data.tar.gz: d7ad1108229516517af20540716b7779f9ae1405
5
+ SHA512:
6
+ metadata.gz: ab67c2085eced7cc1745437b8137eadec5fc9f1de17e8ab5ab4962239b2b948c47d5f5d95e9f8595bb24dccd84da398a90842e27ae578e3b70faec5445727812
7
+ data.tar.gz: 0e07256b63586bd26ce0ecb429af36636e81123c5e59e310d55eaa9ebff241ab5310c7dda1ab3b1ed596949ee2fa27b19b03a2e333d2933aee06beb0bbe71f66
@@ -1,5 +1,7 @@
1
1
  require 'delorean/const'
2
2
  require 'delorean/base'
3
+ require 'set'
4
+ require 'pp'
3
5
 
4
6
  module Delorean
5
7
  class Engine
@@ -25,16 +25,13 @@ module Delorean
25
25
  # (i.e. check for aname). Otherwise, we use the default value
26
26
  # if any.
27
27
  aname, cname = i.text_value, context.last_node
28
- exc = "raise UndefinedParamError, 'undefined parameter #{aname}'"
28
+ not_found = defined?(e) ? e.rewrite(context) :
29
+ "raise UndefinedParamError, 'undefined parameter #{aname}'"
30
+
29
31
  <<eos
30
32
  class #{cname}
31
33
  def self.#{aname}#{POST}(_e)
32
- _e[self.name+'.#{aname}'] ||=
33
- begin
34
- _e.fetch('#{aname}')
35
- rescue KeyError
36
- #{defined?(e) ? e.rewrite(context) : exc}
37
- end
34
+ _e[self.name+'.#{aname}'] ||= _e.fetch('#{aname}') { #{not_found} }
38
35
  end
39
36
  end
40
37
  eos
@@ -72,8 +69,10 @@ eos
72
69
  end
73
70
 
74
71
  def rewrite(context)
75
- # Nodes are simply translated to classes.
76
- "class #{n.text_value} < BaseClass; end"
72
+ # Nodes are simply translated to classes. Define our own
73
+ # self.name() since it's extremely slow in MRI 2.0.
74
+ "class #{n.text_value} < BaseClass; " +
75
+ "def self.name; '#{n.text_value}'; end; end"
77
76
  end
78
77
  end
79
78
 
@@ -88,7 +87,8 @@ eos
88
87
  sname = context.super_name(p.text_value, mname)
89
88
 
90
89
  # A sub-node (derived node) is just a subclass.
91
- "class #{n.text_value} < #{sname}; end"
90
+ "class #{n.text_value} < #{sname}; " +
91
+ "def self.name; '#{n.text_value}'; end; end"
92
92
  end
93
93
  end
94
94
 
@@ -388,7 +388,7 @@ eos
388
388
  def rewrite(context)
389
389
  res = "(#{e1.rewrite(context)})"
390
390
  context.parse_define_var(i.text_value)
391
- res += ".select{|#{i.rewrite(context)}| (#{ifexp.e3.rewrite(context)}) }" if
391
+ res += ".select{|#{i.rewrite(context)}| (#{ifexp.e3.rewrite(context)})}" if
392
392
  defined?(ifexp.e3)
393
393
  res += ".map{|#{i.rewrite(context)}| (#{e2.rewrite(context)}) }"
394
394
  context.parse_undef_var(i.text_value)
@@ -1,3 +1,3 @@
1
1
  module Delorean
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delorean_lang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
5
- prerelease:
4
+ version: 0.1.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Arman Bostani
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-11-13 00:00:00.000000000 Z
11
+ date: 2013-11-20 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: treetop
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: activerecord
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,33 +41,29 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: sqlite3
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  description: A "compiler" for the Delorean programming language
@@ -107,27 +98,26 @@ files:
107
98
  - spec/spec_helper.rb
108
99
  homepage: https://github.com/arman000/delorean_lang
109
100
  licenses: []
101
+ metadata: {}
110
102
  post_install_message:
111
103
  rdoc_options: []
112
104
  require_paths:
113
105
  - lib
114
106
  required_ruby_version: !ruby/object:Gem::Requirement
115
- none: false
116
107
  requirements:
117
- - - ! '>='
108
+ - - '>='
118
109
  - !ruby/object:Gem::Version
119
110
  version: '0'
120
111
  required_rubygems_version: !ruby/object:Gem::Requirement
121
- none: false
122
112
  requirements:
123
- - - ! '>='
113
+ - - '>='
124
114
  - !ruby/object:Gem::Version
125
115
  version: '0'
126
116
  requirements: []
127
117
  rubyforge_project:
128
- rubygems_version: 1.8.25
118
+ rubygems_version: 2.1.11
129
119
  signing_key:
130
- specification_version: 3
120
+ specification_version: 4
131
121
  summary: Delorean compiler
132
122
  test_files:
133
123
  - spec/dev_spec.rb
@@ -135,4 +125,3 @@ test_files:
135
125
  - spec/func_spec.rb
136
126
  - spec/parse_spec.rb
137
127
  - spec/spec_helper.rb
138
- has_rdoc: