ABC Bytecode解析器有一个Actionscript吗?

时间:2012-02-09 13:45:31

标签: actionscript-3 parsing bytecode

所以,我有一个用户应该定义ActionScript函数的应用程序。

我需要用什么来获取用户的字符串并将其转换为字节码,以便我可以将它与as3-commons-bytecode一起使用?

修改

我认为我不够清楚。我需要转:if(!myValue) {...}

进入这个:

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

因为有了这个^^^^代码,我可以用as3-commons-bytecode做我需要的。

我查看了this app's源代码。这是非常令人困惑的,项目是旧的,代码是一团糟,但它的工作原理。我需要找到“神奇发生的地方”。你能给我指路吗?

4 个答案:

答案 0 :(得分:2)

您应该使用此项目的一部分:

eval.hurlant.com/demo/#app=da4a&757d-selectedIndex=0

检查来源,有解析器到ABC。

答案 1 :(得分:0)

我不知道有任何库为您执行此操作,但要实现此功能,您应该将用户的输入解析为函数名称。 例如,您可以通过将其名称设置为String来调用函数,如下所示:

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

当然,如果您希望通过获取/设置对象及其属性以及任何其他用户定义的语句来解释高级字符串,那么就需要编写相当复杂的字符串到字节码转换器。

更新: 还有AS3Eval库可以完成这项工作。看看http://eval.hurlant.com/

答案 2 :(得分:0)

究竟想做什么?要编译“string”,字符串必须是编译器的有意义的东西,例如package不是简单的字符串(如'asdas')。如果您不习惯使用flash / flex编译器,可以使用Ant或Haxe将AS编译为ABC。但这是一个问题 - 你将如何开始这个ABC?

答案 3 :(得分:0)

有一个Haxe库,可以在运行时将Actionscript汇编语言编译成ABC,但这仍然比你通常编写的Actionscript低。

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

最有可能的解决方案是服务器或其他可以为您编译和返回SWF内容的进程。 Haxe有一个非常快速和简单的编译器,但也可以使用Tamarin或其他解决方案在服务器上编译AS3。

实际上,有一个用于执行Haxe代码的运行时库,它同样与Actionscript非常相似。可能值得研究:

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