asmrb 0.0.2.6.1 → 0.0.2.6.1.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/asmrb.rb +38 -31
  3. metadata +5 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 89294081ff079041464adfb3f71fd744e635bc43
4
- data.tar.gz: 548d68fb5bbe3d58af342f206cb7861d11f977ad
3
+ metadata.gz: 57d706ea40276b6485207d9090aa93329ef6090c
4
+ data.tar.gz: a7b388a89846c4a280419790c4139578afdb0722
5
5
  SHA512:
6
- metadata.gz: bec94b11bd62ec137fe1c9520559632074446d792b82390b7ed82be5cf93aa34560f841614d87ea882d3b270f970ba4f3720e537c5f3c75efb03e297489931ec
7
- data.tar.gz: ba09be2b2a7b4c3cc8437392209782598e85c4c2f68ac8315c7c517ed9856cc294273a3e466dbde6cc44216dc67786c9f982967d14be1c09a1c9b59a06a8d981
6
+ metadata.gz: 5ac464f3459c2ac32f4454b25a3597b39392791124a05dc7a76fdbe7b30240de7051d8394979f06e27bedf7d094f0f86c32066a331d750ba0715601591213de6
7
+ data.tar.gz: 7eaa37903c8dd999209ab4fd78512fd29ba5ba2e8ab15fd2ff63d88eed461bee1bf7819674ade9430c4c31ba4645022d0d51bc8ff18415959e648c21489516b3
data/lib/asmrb.rb CHANGED
@@ -21,7 +21,7 @@ class Asmrb
21
21
  # car arr # get out first element of arr
22
22
  # call :puts # call ruby's puts
23
23
  # cdr arr # get rest of arr Array
24
- # jmp :rec_print # jump back to :rec_print ( or start of this function )
24
+ # recur # jump back to :rec_print ( or start of this function )
25
25
  # label :exit # ending label.
26
26
  # end
27
27
  # => $rec_print
@@ -37,9 +37,9 @@ class Asmrb
37
37
  attr_reader :variables, :stack, :source, :name, :result, :params,:is_debug, :is_compiled
38
38
  attr_writer :is_debug
39
39
 
40
- def initialize(&block)
40
+ def initialize &block
41
41
  new_scope
42
- assemble &block
42
+ assemble &block unless block.nil?
43
43
  end
44
44
 
45
45
  def new_scope
@@ -56,7 +56,7 @@ class Asmrb
56
56
  @is_compiled = false
57
57
  end
58
58
 
59
- def refvar(val)
59
+ def refvar val
60
60
  val.is_a?(Symbol) ? @variables[val] : val
61
61
  end
62
62
 
@@ -123,7 +123,6 @@ class Asmrb
123
123
  @variables[src] : src
124
124
  },
125
125
 
126
-
127
126
  "jz" => lambda { | name |
128
127
  req_args "jz", 1
129
128
  @pc = @labels[name] if @stack.pop == 0
@@ -224,7 +223,7 @@ class Asmrb
224
223
  end
225
224
  @stack.push invoke if !invoke.nil?
226
225
  },
227
- "rec" => lambda {
226
+ "recur" => lambda {
228
227
  @pc = -1
229
228
  },
230
229
 
@@ -237,9 +236,9 @@ class Asmrb
237
236
  }
238
237
  }
239
238
 
240
- def create_label(lbl)
239
+ def create_label lbl
241
240
  @labels[lbl] = @program.length-1
242
- #binding.pry
241
+ puts "#{@label[lbl]}: #{lbl}".purple if @is_debug
243
242
  end
244
243
 
245
244
  def method_missing(name, *args)
@@ -253,9 +252,7 @@ class Asmrb
253
252
  @program << [sname, args]
254
253
  # get parameter amount:
255
254
  @params = args.length if sname == "arg"
256
-
257
255
  else
258
-
259
256
  case sname
260
257
 
261
258
  when "label"
@@ -267,7 +264,6 @@ class Asmrb
267
264
 
268
265
  else
269
266
  return name
270
-
271
267
  end
272
268
  end
273
269
  end
@@ -281,12 +277,12 @@ class Asmrb
281
277
  puts "#{@stack} > #{@name}".yellow if debug
282
278
  begin
283
279
  @pc = 0
284
- until(@pc == @program.length)
280
+ until @pc == @program.length
285
281
  # get instruction:
286
282
  instr = @program[@pc]
287
283
  puts "#{@pc}: #{instr[0]} #{instr[1]}".light_green if debug
288
284
  # execute proc: arg , proc
289
- self.instance_exec(*instr[1], &OPS[instr[0]])
285
+ self.instance_exec *instr[1], &OPS[instr[0]]
290
286
  #binding.pry if debug
291
287
  @pc += 1
292
288
  end
@@ -322,36 +318,47 @@ class Asmrb
322
318
  puts "\n----------------------"
323
319
  end
324
320
 
325
- def debug(e,instr)
321
+ def debug e, instr
322
+ if @pc.nil? || instr.nil?
323
+ puts "possible null jump:".red
324
+ binding.pry
325
+ end
326
326
  puts "\n--------[BUG]---------"
327
-
328
327
  # error scope:
329
- debug_start = @pc >= 1 ? @pc - 1 : 0
330
-
331
- debug_end = @pc <= (@program.length - 2) ?
332
- @pc + 1 : @pc
333
-
328
+ scope_begin = @pc >= 1 ? @pc - 1 : 0
329
+ scope_end = @pc <= (@program.length - 2) ? @pc + 1 : @pc
334
330
  # ranging...
335
- (debug_start..debug_end).each do | i |
331
+ (scope_begin..scope_end).each do | i |
336
332
  instr = @program[i]
337
333
  color = i != @pc ? :light_green : :magenta
338
- puts "#{i}: #{instr[0]} #{instr[1]}".colorize color #if !instr.nil?
334
+ puts "#{i}: #{instr[0]} #{instr[1]}".colorize color
335
+ end
336
+ unless instr.nil?
337
+ puts "\nat line #{@pc}:" +
338
+ "#{ops_info(@program[@pc][0])}" +
339
+ "has #{e.message}".colorize(:magenta)
339
340
  end
340
- puts "\nat line #{@pc}: #{ops_info(@program[@pc][0])} has #{e.message}".colorize(:magenta) if !instr.nil?
341
- # test via pry:
342
341
  binding.pry if is_debug
343
342
  end
344
343
 
345
- def ops_info(name)
346
- parameters = []
347
- OPS[name].parameters.each {|pair| parameters << pair.last }
344
+ def all_ops
345
+ OPS.map do |k,v|
346
+ ops_info k
347
+ end
348
+ end
349
+
350
+ def ops_info name
351
+ parameters = Array.new
352
+ OPS[name].parameters.each do |pair|
353
+ parameters << pair.last
354
+ end
348
355
  "#{name} [#{parameters.join(', ')}]"
349
356
  end
350
357
 
351
358
  def arguments(args=[])
352
359
  args.each do | arg |
353
- @stack << arg
354
- end
360
+ @stack << arg
361
+ end
355
362
  end
356
363
 
357
364
  def invoke(*args)
@@ -365,7 +372,7 @@ class Asmrb
365
372
  @stack = []
366
373
  end
367
374
 
368
- def assemble(&block)
375
+ def assemble &block
369
376
  load_program(&block)
370
377
  eval "$#{@name} = self.clone"
371
378
  eval "$#{@name}"
@@ -452,7 +459,7 @@ Asmrb.new do
452
459
  push 1
453
460
  push :n
454
461
  sub
455
- rec
462
+ recur
456
463
  end
457
464
 
458
465
  #$factorial.is_debug = true
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asmrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.6.1
4
+ version: 0.0.2.6.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Trung
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-08 00:00:00.000000000 Z
11
+ date: 2015-04-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: create a toy assembly-like DSL in ruby
13
+ description: create a toy assembly-like DSL in ruby, checkout the homepage for usage
14
+ & syntax.
14
15
  email: deulamco@gmail.com
15
16
  executables: []
16
17
  extensions: []
@@ -40,6 +41,6 @@ rubyforge_project:
40
41
  rubygems_version: 2.4.5
41
42
  signing_key:
42
43
  specification_version: 4
43
- summary: assembly-like DSL in ruby
44
+ summary: assembly-like DSL toy in ruby
44
45
  test_files: []
45
46
  has_rdoc: