yarv-diff:344
From: ko1 atdot.net
Date: 6 Jul 2006 04:46:58 -0000
Subject: [yarv-diff:344] r510 - in trunk: . lib
Author: ko1
Date: 2006-07-06 13:46:54 +0900 (Thu, 06 Jul 2006)
New Revision: 510
Modified:
trunk/
trunk/ChangeLog
trunk/lib/yasm.rb
Log:
r794@lermite: ko1 | 2006-07-06 13:46:03 +0900
* lib/yasm.rb : pass builder object if block arity == 1
Property changes on: trunk
___________________________________________________________________
Name: svk:merge
- 81cd9672-7512-7e48-ae48-6936450e977d:/local/yarv/trunk:792
+ 81cd9672-7512-7e48-ae48-6936450e977d:/local/yarv/trunk:794
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2006-07-05 02:31:01 UTC (rev 509)
+++ trunk/ChangeLog 2006-07-06 04:46:54 UTC (rev 510)
@@ -4,6 +4,11 @@
# from Mon, 03 May 2004 01:24:19 +0900
#
+2006-07-06(Thu) 13:45:20 +0900 Koichi Sasada <ko1 atdot.net>
+
+ * lib/yasm.rb : pass builder object if block arity == 1
+
+
2006-07-05(Wed) 11:23:50 +0900 Koichi Sasada <ko1 atdot.net>
* lib/yasm.rb : fix method name
Modified: trunk/lib/yasm.rb
===================================================================
--- trunk/lib/yasm.rb 2006-07-05 02:31:01 UTC (rev 509)
+++ trunk/lib/yasm.rb 2006-07-06 04:46:54 UTC (rev 510)
@@ -31,8 +31,7 @@
:toplevel, "<toplevel@yasm>", "<yasm>",
[], vars, [nil], nil
)
- sdb.instance_eval(&b)
- sdb.to_a
+ sdb.build(b)
end
def self.method name, args = [], vars = [], &b
@@ -40,8 +39,7 @@
:method, name, "TODO: filename",
args, vars, [nil], nil
)
- sdb.instance_eval(&b)
- sdb.to_a
+ sdb.build(b)
end
def self.class name, vars = [], &b
@@ -49,8 +47,7 @@
:method, name, "TODO: filename",
args, vars, [nil], nil
)
- sdb.instance_eval(&b)
- sdb.to_a
+ sdb.build(b)
end
def initialize type, name, filename, args, vars, lopt, parent
@@ -71,6 +68,17 @@
attr_reader :locals
attr_reader :local_sdb, :parent_sdb
+ def build b
+ raise LocalJumpError, "No block given" unless b
+
+ if b.arity == 1
+ b.call self
+ else
+ self.instance_eval(&b)
+ end
+ to_a
+ end
+
def to_a
# [magic, major_version, minor_version, format_type, misc,
# name, filename, line,
@@ -174,6 +182,13 @@
######################################################
+iseq = YASM.toplevel([:a, :b]){|ib|
+ # return :ok
+ ib.putobject :ok
+ ib.leave
+}
+p iseq.eval
+
iseq = YASM.toplevel([:a, :b]){
#
# a = 10
--
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml