From: Joel VanderWerf Date: 2008-03-03T14:34:50+09:00 Subject: Re: [QUIZ] Hello, world? (#158) Going back to the original.... require 'ostruct' class BProgram class Context < OpenStruct def extrn(*) end def putchar char print char.gsub(/\*n/) {"\n"} end end def self.run_in_ruby(&block) new(&block).run end def initialize(&block) @ctx = Context.new instance_eval(&block) end def run @ctx.instance_eval(&@main) end def main(&block) @main = block end def method_missing(name, arg) @ctx.send("#{name}=", arg) end end BProgram.run_in_ruby { main( ) { extrn a, b, c; putchar(a); putchar(b); putchar(c); putchar('!*n'); } a 'hell'; b 'o, w'; c 'orld'; } -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407