我有lexer / parser(从ANTLR语法文件生成)(出于性能原因)我已经编译成C代码,它将使用Adobe Alchemly包含在我的actionscript项目中。
解析器将从输入字符串(从Actionscript传递)生成抽象语法树(In C) - 我希望将C AST返回到actionscript中以进行进一步处理。如何将AST的树结构转换为我可以返回到actionscript的格式?
谢谢,
答案 0 :(得分:1)
不幸的是,你不能只发送一个C数据结构。你有三个选择,疯狂的增加顺序:
我只包含#3的完整性 - 我认为尝试任何类型的复杂数据结构都会很疯狂。代码很脆弱。以下指针将是笨重的。 Bleah。
对于#2,您可以使用动态对象(通过AS3_Object)或具体对象(通过AS3_Get,AS3_New)。这也是相当复杂的代码而且不是那么快。可能难以维护。
对于#1,序列化的类型才是最重要的。您可以让您的C代码将结构呈现为二进制“文件”,返回该结构,并让您的AS3通过ByteArray解析文件格式。或者您可以将其呈现为XML并让AS3的XML类对其进行解析。这具有相当快的优点(因为XML本地实现),至少在反序列化端。如果你在C端有一个快速的XML渲染器(或者,ahem,sprintfs),那就不那么糟了。