| 1 |
package |
|---|
| 2 |
{ |
|---|
| 3 |
import flash.display.*; |
|---|
| 4 |
import flash.text.*; |
|---|
| 5 |
import e33.*; |
|---|
| 6 |
|
|---|
| 7 |
public class E3Test extends Sprite |
|---|
| 8 |
{ |
|---|
| 9 |
private static var theInstance:E3Test; |
|---|
| 10 |
private var mTxOut:TextField; |
|---|
| 11 |
|
|---|
| 12 |
function E3Test() |
|---|
| 13 |
{ |
|---|
| 14 |
mTxOut = new TextField(); |
|---|
| 15 |
addChild(mTxOut); |
|---|
| 16 |
mTxOut.width = 640; |
|---|
| 17 |
mTxOut.height = 480; |
|---|
| 18 |
mTxOut.textColor = 0xffffff; |
|---|
| 19 |
|
|---|
| 20 |
if (!theInstance) |
|---|
| 21 |
theInstance = this; |
|---|
| 22 |
|
|---|
| 23 |
var src:Array = [ |
|---|
| 24 |
"function putline(){ var a=[]; for(var i = 0;i < 50;i++) a.push('-'); trace(a.join('')); }", |
|---|
| 25 |
"function fibo(n, a){", |
|---|
| 26 |
" trace('called fibo('+n+', ['+a.join(',')+'])');", |
|---|
| 27 |
" if (n == 0) {a.push(0); return;}", |
|---|
| 28 |
" else if (n == 1) {fibo(n-1, a); a.push(1); return;}", |
|---|
| 29 |
" fibo(n-1, a);", |
|---|
| 30 |
" a.push(a[a.length-1] + a[a.length-2]);", |
|---|
| 31 |
"}", |
|---|
| 32 |
"function do_test(n){", |
|---|
| 33 |
" putline();", |
|---|
| 34 |
" var fibo_nums = [];", |
|---|
| 35 |
" fibo(n, fibo_nums);", |
|---|
| 36 |
" putline(); trace('result: '+fibo_nums.join(' '));", |
|---|
| 37 |
" return 'OK';", |
|---|
| 38 |
"}" |
|---|
| 39 |
] |
|---|
| 40 |
|
|---|
| 41 |
puts( src.join("\n") ); |
|---|
| 42 |
|
|---|
| 43 |
var lx:Scanner = new Scanner(src.join("\n")); |
|---|
| 44 |
var psr:Parser = new Parser(lx); |
|---|
| 45 |
var bc:Array = psr.parse(); |
|---|
| 46 |
var vm:VirtualMachine = new VirtualMachine(); |
|---|
| 47 |
vm.setByteCode(bc); |
|---|
| 48 |
|
|---|
| 49 |
vm.getGlobalObject().trace = puts; |
|---|
| 50 |
vm.execute(); |
|---|
| 51 |
|
|---|
| 52 |
var rval:Object = vm.invokeScriptFunction("do_test", [10]); |
|---|
| 53 |
puts("retval: " + rval); |
|---|
| 54 |
} |
|---|
| 55 |
|
|---|
| 56 |
public static function puts(s:*):void |
|---|
| 57 |
{ |
|---|
| 58 |
if (s == null) |
|---|
| 59 |
theInstance.mTxOut.appendText("(null)\n"); |
|---|
| 60 |
else |
|---|
| 61 |
theInstance.mTxOut.appendText(s+"\n"); |
|---|
| 62 |
} |
|---|
| 63 |
} |
|---|
| 64 |
} |
|---|