asmrb 0.0.2.6.1.6 → 0.0.2.6.1.7

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 +64 -10
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 713532ba3b23d5a4d3c3a268c8e3d48866c9ecb3
4
- data.tar.gz: e505983f28eb226d692acf8311047b9c0f0ec468
3
+ metadata.gz: 5a31c679f3270d1b696aa42d53bbe503f7365534
4
+ data.tar.gz: 8e49fbe0da1b1ffff62ef5ff101029a91a129e1a
5
5
  SHA512:
6
- metadata.gz: 6e434911cf4cebb32dce27b76d1150efb518aef57923aeaeaaefd12daa0dd2104778880657b6452c44bc731d80c70229a19a415aef7fdf74a10fdd5059ff9c84
7
- data.tar.gz: a8b8c88855449f8741f9c97a25caa103e1665eed62951ccfde442ab9b54817d59d8e7cd12e335c75a2b2c153c54c3859f32b545d5a8aa59eb8ac25c5f7d4a5d6
6
+ metadata.gz: c2ea67ec5870af0c5a355cc9ed02e7dbce0379be1529cbf1a8e44c44bf481f1cd0199276f8284fe8786c36e472dce4feaa4d664b1326fdcb5196fcef53b3a5d3
7
+ data.tar.gz: 07eb3305d4be92cf73c188d1917801930141104f52c71ec54c1cba12d949acd81432123d2295653a99425eba9588af3526670700bb0a2e8da4d290bbc85f66f5
data/lib/asmrb.rb CHANGED
@@ -218,7 +218,11 @@ class Asmrb
218
218
  "inv" => lambda { |obj, f|
219
219
  args = Array.new
220
220
  @stack.each { args << @stack.pop } if @stack.length > 0
221
- @stack.push @variables[obj].send(f, eval("args.join(', ')"))
221
+ if args.length > 0
222
+ @stack.push @variables[obj].send(f, eval("args.join(', ')"))
223
+ else
224
+ @stack.push @variables[obj].send f
225
+ end
222
226
  },
223
227
 
224
228
  "cal" => lambda {|fname|
@@ -271,7 +275,7 @@ class Asmrb
271
275
 
272
276
  when "fun"
273
277
  @name = args.first
274
- #create_label args.first
278
+ create_label @name
275
279
 
276
280
  else
277
281
  return name
@@ -395,13 +399,21 @@ class Asmrb
395
399
  @partitions = { @name => @program }
396
400
  else
397
401
  @partitions = Hash.new
398
- @labels.each do |label|
402
+ @limitation = 0
403
+ @jump_points = @labels.map &:last
404
+ @labels.each.with_index do |label, label_index|
405
+ if label_index != @jump_points.length-1
406
+ @limitation = @jump_points[label_index+1]
407
+ else
408
+ @limitation = @program.length-1
409
+ end
399
410
  puts "#{label[1]+1}:#{label[0]}".magenta
400
411
  partition = Array.new
401
- # navigate down to the block:
402
- code_segment = @program[label.last+1..@program.length-1]
412
+ # binding.pry
413
+ code_segment = @program[label.last+1..@limitation]
403
414
  code_segment.each.with_index do |statement, index|
404
- break if statement.first == :label
415
+ #break if [:rec].include? statement.first.to_sym
416
+ #binding.pry
405
417
  partition << statement
406
418
  puts (read_internal statement, index).light_yellow if @is_debug
407
419
  end
@@ -411,9 +423,51 @@ class Asmrb
411
423
  puts "partitioning completed.".light_green
412
424
  @partitions if@is_debug
413
425
  end
426
+
427
+ def read_internal instruction, index
428
+ " #{index}: #{instruction.first}" +
429
+ " #{instruction.last.join(" ") unless instruction.last.empty?}"
430
+ end
431
+ end
432
+
433
+ x = Asmrb.new do
434
+ fun :play
435
+ arg :toy
436
+ psh :toy
437
+ cal :puts
438
+
439
+ blo :after_print
440
+ psh :times
441
+ jnl :init_timer
442
+
443
+ blo :append
444
+ inv :times, :to_s
445
+ psh "X"
446
+ add
447
+ cal :puts
448
+
449
+ blo :count
450
+ psh :times
451
+ psh 1
452
+ add
453
+ lea :times
454
+ psh :times
455
+ psh 10
456
+ cmp
457
+ jeq :final
458
+ psh "__"
459
+ rec
460
+
461
+ blo :final
462
+ psh :times
463
+ ret
464
+
465
+ blo :init_timer
466
+ psh 0
467
+ lea :times
468
+ jmp :append
414
469
  end
415
470
 
416
- def read_internal instruction, index
417
- " #{index}: #{instruction.first}" +
418
- " #{instruction.last.join(" ") unless instruction.last.empty?}"
419
- end
471
+ x.is_debug = true
472
+ x.partition
473
+ #x.invoke "I'm The Trung, here we go:"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asmrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.6.1.6
4
+ version: 0.0.2.6.1.7
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-05-09 00:00:00.000000000 Z
11
+ date: 2015-05-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: create a assembly-like toy language in ruby DSL.
14
14
  email: deulamco@gmail.com