2012-02-09 53 views
0

所以,我有一個應用程序,用戶應該定義ActionScript函數。是否有ABC字節碼解析器的動作腳本?

我需要什麼來獲取用戶字符串並將其轉換爲字節碼,以便我可以將它與as3-commons-bytecode一起使用?

編輯

我不認爲我是很清晰。我需要打開:if(!myValue) {...}

進入這個:

... 
findpropstrict private::myValue 
getproperty  private::myValue 
not    
iffalse   L1 
... 

因爲有了這個^^^^代碼,我可以用as3-commons-bytecode做什麼,我需要的。

我看了一下this app's的源代碼。這非常令人困惑,這個項目很老舊,代碼亂七八糟,但它很有用。我需要找到「魔法發生的地方」。你能告訴我方式嗎?

+1

程序* *編譯器。 「解析」只是編譯的一個子集(通常是在開始生成代碼之前所做的)。 – unwind 2012-02-09 14:02:34

+0

我想過解析,因爲as3-commons-bytecode庫可以接收一個空洞函數作爲字節碼字符串。所以我只需要將ActionScript字符串轉換爲字節碼字符串。 – GxFlint 2012-02-09 14:43:52

回答

0

我不知道任何庫爲你做這件事,但要實現這個功能,你應該解析用戶的輸入到函數名稱。 例如,你可以通過具有調用一個函數它的名字爲String像這樣:

var functionName:String = "myMethod"; 
function myMethod():void 
{ 
    trace("myMethod"); 
} 
this[functionName](); //traces "myMethod" 

當然,如果你想解釋先進的弦與獲取/設置定義對象及其屬性和其他任何用戶語句,這將需要編寫相當複雜的字符串到字節碼轉換器。

更新: 還有AS3Eval庫可以完成這項工作。看看http://eval.hurlant.com/

+0

myMethod()函數不是我正在尋找的。也許我的問題應該是:是否有「非常複雜的字符到字節碼轉換器」? – GxFlint 2012-02-09 14:46:05

0

究竟想要做什麼?爲了編譯「字符串」,字符串必須是編譯器的一些含義,例如包不是簡單的字符串(如'asdas')。如果你不想使用flash/flex編譯器,你可以使用Ant或HAXE將AS編譯爲ABC。但它是一個問題 - 你將如何開始這個ABC?

+0

它不是任何字符串,我期待靜態函數的內容。 ActionScript語法將失效,只有一組定義的變量可供使用。 – GxFlint 2012-02-09 15:00:25

+0

也許這將是有用的你http://stackoverflow.com/questions/6460027/compiling-as3-project-to-swc-file-in-flashbuilder – 2012-02-09 15:27:53

0

Haxe有一個庫,可以在運行時將Actionscript彙編語言編譯到ABC中,但是這比您通常編寫的Actionscript還要低。

http://haxe.org/com/libs/format/abc

最有可能的解決方案是一個服務器或其他過程,可以編譯和返回SWF內容。 Haxe有一個非常快速和直接的編譯器,但也可以使用Tamarin或其他解決方案來編譯服務器上的AS3。

實際上,有一個用於執行Haxe代碼的運行時庫,它與Actionscript非常相似。可能是值得探討:即檢查源代碼,併發出東西是某種形式的可執行統稱

http://code.google.com/p/hscript/

相關問題