ABC Bytecode解析器有一个Actionscript吗?

问题描述 投票:0回答:4

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

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

编辑

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

进入:

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

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

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

actionscript-3 parsing bytecode
4个回答
2
投票

你应该使用这个项目的一部分:

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

检查源,有解析器到ABC。


0
投票

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

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

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

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


0
投票

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

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

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.