rubymotionlisp 0.2.0 → 0.2.1

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: 9cd26bad53833fe2ee3f15b08e989595f835762a
4
- data.tar.gz: 8bc181d5653cb58ce352f6ca4e1ff79a0d66e6fc
3
+ metadata.gz: 79d1cf36fe85338600c33a3085d4d211d9e6dd5d
4
+ data.tar.gz: 951f1a587966f6e528e00b7159ae7512045e70f2
5
5
  SHA512:
6
- metadata.gz: 85e9ff41520cad81442bb0299bd9087e296dc3cc250df0f9b316d1201201d27ab585f9770cb96b1590833c3d50e49e364537b9321b1a79b06a5e9dba93d1428a
7
- data.tar.gz: 5e27bb3023a10c31605901fcfb9c8493a441371129e0a59c50389d00b73ee928170299096be4a2a689fb0808eeb228e3efa8c4b13e23f28c7ca072c7b7972b4a
6
+ metadata.gz: 3d13696668fe0df15257d56f11c3984eebd96b32ebd98c1af083601be8859f298a230f80316008f4924fc2a094155773e7ae667f50aa8f255947bd29914783ce
7
+ data.tar.gz: 7ff8677aae52bf3bdcc100dce2cdd5768da64ffd92f060c95ad475a7653676d377b04f57d3ab780448f0188cec751529527c8a7cf6135ba2718deb2f64a72944
@@ -30,7 +30,7 @@ module Lisp
30
30
  unless handlers.nil?
31
31
  handler = handler_or_nil(handlers, for: name)
32
32
  unless handler.nil?
33
- handler.apply_to_without_evaluating(args, in: frame)
33
+ handler.apply_to_without_evaluating(args, frame)
34
34
  break
35
35
  end
36
36
  end
@@ -93,7 +93,7 @@ module Lisp
93
93
  local_env = Lisp::EnvironmentFrame.extending(env)
94
94
  local_env.bind_locally(Symbol.named("self"), Lisp::NativeObject.with_value(self))
95
95
  processed_args = args.map {|a| Lisp::ClassObject.convert_to_lisp(a)}
96
- Lisp::ClassObject.convert_to_ruby(body.apply_to(Lisp::ConsCell.array_to_list(processed_args), in: local_env), in: local_env)
96
+ Lisp::ClassObject.convert_to_ruby(body.apply_to(Lisp::ConsCell.array_to_list(processed_args), local_env), local_env)
97
97
  end
98
98
  Lisp::String.with_value("OK")
99
99
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubymotionlisp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Astels
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-16 00:00:00.000000000 Z
11
+ date: 2015-02-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: An embeddable Lisp as an extension language for RubyMotion
14
14
  email: dastels@icloud.com
@@ -17,7 +17,6 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - README.md
20
- - lib/rubylisp.rb
21
20
  - lib/rubylisp/alist.rb
22
21
  - lib/rubylisp/assignment.rb
23
22
  - lib/rubylisp/atom.rb
@@ -26,7 +25,6 @@ files:
26
25
  - lib/rubylisp/builtins.rb
27
26
  - lib/rubylisp/character.rb
28
27
  - lib/rubylisp/cons_cell.rb
29
- - lib/rubylisp/debug.rb
30
28
  - lib/rubylisp/environment_frame.rb
31
29
  - lib/rubylisp/equivalence.rb
32
30
  - lib/rubylisp/exception.rb
data/lib/rubylisp.rb DELETED
@@ -1,2 +0,0 @@
1
- require 'set'
2
- Dir[File.dirname(__FILE__) + '/rubylisp/*.rb'].each {|file| require file }
@@ -1,238 +0,0 @@
1
- # Copyright 2014 David R. Astels. All rights reserved.
2
- # Use of this source code is governed by a BSD-style
3
- # license that can be found in the LICENSE file.
4
-
5
-
6
- module Lisp
7
-
8
- class Debug
9
-
10
- class <<self
11
- attr_accessor :trace, :on_error, :on_entry, :single_step, :interactive, :target_env, :eval_in_debug_repl
12
- end
13
-
14
-
15
- def self.register
16
- self.trace = false
17
- self.on_error = false
18
- self.on_entry = Set.new
19
- self.single_step = false
20
- self.interactive = false
21
-
22
- Primitive.register("debug-trace") {|args, env| Lisp::Debug::debug_trace_impl(args, env) }
23
- Primitive.register("debug-on-error") {|args, env| Lisp::Debug::debug_on_error_impl(args, env) }
24
- Primitive.register("debug-on-entry") {|args, env| Lisp::Debug::debug_on_entry_impl(args, env) }
25
- Primitive.register("add-debug-on-entry") {|args, env| Lisp::Debug::add_debug_on_entry_impl(args, env) }
26
- Primitive.register("remove-debug-on-entry") {|args, env| Lisp::Debug::remove_debug_on_entry_impl(args, env) }
27
- Primitive.register("debug") {|args, env| Lisp::Debug::debug_impl(args, env) }
28
- Primitive.register("dump") {|args, env| Lisp::Debug::dump_imp2l(args, env) }
29
- end
30
-
31
-
32
- def self.debug_trace_impl(args, env)
33
- return Lisp::Debug.process_error("debug-trace requires 1 argument", env) unless args.length == 1
34
- flag = args.car.evaluate(env)
35
- return Lisp::Debug.process_error("the argument to debug-trace has to be a boolean", env) unless flag.boolean?
36
- self.trace = flag.value
37
- flag
38
- end
39
-
40
- def self.debug_on_error_impl(args, env)
41
- return Lisp::Debug.process_error("debug-on-error requires 1 argument", env) unless args.length == 1
42
- flag = args.car.evaluate(env)
43
- return Lisp::Debug.process_error("the argument to debug-on-error has to be a boolean", env) unless flag.boolean?
44
- self.on_error = flag.value
45
- flag
46
- end
47
-
48
- def self.debug_on_entry_impl(args, env)
49
- Lisp::ConsCell.array_to_list(self.on_entry.to_a.sort.map {|s| Lisp::String.with_value(s) })
50
- end
51
-
52
- def self.add_debug_on_entry_impl(args, env)
53
- return Lisp::Debug.process_error("add-debug-on-error requires 1 argument", env) unless args.length == 1
54
- f = args.car.evaluate(env)
55
- return Lisp::Debug.process_error("the argument to add-debug-on-error has to be a function", env) unless f.function? || f.primitive?
56
-
57
- self.on_entry.add(f.name)
58
- f
59
- end
60
-
61
- def self.remove_debug_on_entry_impl(args, env)
62
- return Lisp::Debug.process_error("remove-debug-on-error requires 1 argument", env) unless args.length == 1
63
- f = args.car.evaluate(env)
64
- return Lisp::Debug.process_error("the argument to remove-debug-on-error has to be a function", env) unless f.function?
65
-
66
- self.on_entry.remove(f.name)
67
- f
68
- end
69
-
70
- def self.debug_impl(args, env)
71
- end
72
-
73
- def self.dump_impl(args, env)
74
- env.dump()
75
- end
76
-
77
-
78
- def self.process_state(tokens)
79
- if tokens.size != 2
80
- puts "Missing on/off"
81
- [false, false]
82
- else
83
- case tokens[1]
84
- when 'on'
85
- [true, true]
86
- when 'off'
87
- [true, false]
88
- else
89
- puts "on/off expected."
90
- [false, false]
91
- end
92
- end
93
- end
94
-
95
-
96
- def func_or_nil(fname, env)
97
- f = env.value_of(Lisp::Symbol.named(fname))
98
- if f.nil? || !f.function?
99
- puts "No such function."
100
- nil
101
- else
102
- f
103
- end
104
- end
105
-
106
-
107
- def self.debug_repl(env)
108
- parser = Lisp::Parser.new
109
- puts("Debugging: #{env.current_code[0]}")
110
- while line = Readline.readline('D> ', true)
111
- if !line.empty?
112
- if line[0] == ':'
113
- tokens = line[1..-1].split
114
- case tokens[0]
115
- when '(+'
116
- f = func_or_nil(tokens[1], env)
117
- self.on_entry.add(f.name) unless f.nil?
118
- when '(-'
119
- f = func_or_nil(tokens[1], env)
120
- self.on_entry.delete(f.name) unless f.nil?
121
- when '('
122
- self.on_entry.to_a.sort.each {|f| puts f}
123
- when '?'
124
- puts "RubyLisp Debugger"
125
- puts "-----------------"
126
- puts ":(+ func - debug on entry to func"
127
- puts ":(- func - don't debug on entry to func"
128
- puts ":( - show functions marked as debug on entry"
129
- puts ":? - show this command summary"
130
- puts ":b - show the environment stack"
131
- puts ":c - continue, exiting the debugger"
132
- puts ":d - do a full of the environment stack"
133
- puts ":e on/off - Enable/disable debug on error"
134
- puts ":f frame# - do a full dump of a single environment frame"
135
- puts ":q - quit GoLisp"
136
- puts ":r sexpr - return from the current evaluation with the specified value"
137
- puts ":s - single step (run to the next evaluation)"
138
- puts ":t on/off - Enable/disable tracing"
139
- puts ":u - continue until the enclosing environment frame is returned to"
140
- puts
141
- when 'b'
142
- env.dump_headers()
143
- puts
144
- when 'c'
145
- self.target_env = nil
146
- self.single_step = false
147
- self.eval_in_debug_repl = false
148
- return
149
- when 'd'
150
- env.dump
151
- when 'e'
152
- ok, state = process_state(tokens)
153
- self.on_error = state if ok
154
- when 'f'
155
- if tokens.size != 2
156
- puts "Missing frame number."
157
- else
158
- fnum = tokens[1].to_i
159
- env.dump_single_frame(fnum)
160
- end
161
- when 'q'
162
- exit()
163
- when 'r'
164
- self.eval_in_debug_repl = true
165
- code = parser.parse(tokens[1..-1].join(' '))
166
- return_value = code.evaluate(env)
167
- self.eval_in_debug_repl = false
168
- self.target_env = nil
169
- self.single_step = false
170
- self.eval_in_debug_repl = false
171
- return return_value
172
- when 's'
173
- self.single_step = true
174
- return
175
- when 't'
176
- ok, state = process_state(tokens)
177
- self.trace = state if ok
178
- when 'u'
179
- if env.previous.nil?
180
- puts "Already at top frame."
181
- else
182
- self.target_env = env
183
- return
184
- end
185
- end
186
- else
187
- begin
188
- self.eval_in_debug_repl = true
189
- code = parser.parse(line)
190
- value = code.evaluate(env)
191
- self.eval_in_debug_repl = false
192
- puts value.to_s
193
- rescue Exception => ex
194
- puts "ERROR: #{ex}"
195
- puts ex.backtrace
196
- end
197
- end
198
- end
199
- end
200
- end
201
-
202
- def self.process_error(error_message, env)
203
- if self.on_error && self.interactive
204
- puts "ERROR: #{error_message}"
205
- self.debug_repl(env)
206
- else
207
- raise error_message
208
- end
209
- end
210
-
211
-
212
- def self.print_dashes(level)
213
- print("-" * level)
214
- end
215
-
216
-
217
- def self.log_eval(sexpr, env)
218
- if !self.eval_in_debug_repl && self.trace
219
- depth = env.depth
220
- print("% #d: " % depth)
221
- print_dashes(depth)
222
- puts("> #{sexpr.to_s}")
223
- end
224
- end
225
-
226
-
227
- def self.log_result(result, env)
228
- if !self.eval_in_debug_repl && self.trace
229
- depth = env.depth
230
- print("% #d: <" % depth)
231
- print_dashes(depth)
232
- puts(" #{result.to_s}")
233
- end
234
- end
235
-
236
-
237
- end
238
- end