Adobe Alchemy返回C数据结构

时间:2011-07-19 13:28:10

标签: actionscript antlr antlr3 alchemy

我有lexer / parser(从ANTLR语法文件生成)(出于性能原因)我已经编译成C代码,它将使用Adobe Alchemly包含在我的actionscript项目中。

解析器将从输入字符串(从Actionscript传递)生成抽象语法树(In C) - 我希望将C AST返回到actionscript中以进行进一步处理。如何将AST的树结构转换为我可以返回到actionscript的格式?

谢谢,

1 个答案:

答案 0 :(得分:1)

不幸的是,你不能只发送一个C数据结构。你有三个选择,疯狂的增加顺序:

  1. 序列化C端的数据并在AS3端重新构建。
  2. 将数据打包到对象中并返回。
  3. 将指针和大小传回AS3并从Alchemy的ram ByteArray中提取数据。
  4. 我只包含#3的完整性 - 我认为尝试任何类型的复杂数据结构都会很疯狂。代码很脆弱。以下指针将是笨重的。 Bleah。

    对于#2,您可以使用动态对象(通过AS3_Object)或具体对象(通过AS3_Get,AS3_New)。这也是相当复杂的代码而且不是那么快。可能难以维护。

    对于#1,序列化的类型才是最重要的。您可以让您的C代码将结构呈现为二进制“文件”,返回该结构,并让您的AS3通过ByteArray解析文件格式。或者您可以将其呈现为XML并让AS3的XML类对其进行解析。这具有相当快的优点(因为XML本地实现),至少在反序列化端。如果你在C端有一个快速的XML渲染器(或者,ahem,sprintfs),那就不那么糟了。