0

我有词法分析器/解析器(从 ANTLR 语法文件生成)(出于性能原因)我已编译为 C 代码,这些代码将使用 Adob​​e Alchemly 包含在我的 actionscript 项目中。

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

谢谢,

4

1 回答 1

1

不幸的是,您不能只发送一个 C 数据结构。你有三个选项,按照疯狂的递增顺序:

  1. 在C端序列化数据,在AS3端重构。
  2. 将数据打包到 Objects 中并返回它们。
  3. 将指针和大小传回 AS3,然后从 Alchemy 的 ram ByteArray 中提取数据。

为了完整性,我只包括#3——我认为尝试任何类型的复杂数据结构都是疯狂的。代码会很脆弱。跟随指针会很笨拙。呸。

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

对于#1,序列化的类型很重要。您可以让您的 C 代码将结构呈现为二进制“文件”,将其返回,然后让您的 AS3 通过 ByteArray 解析文件格式。或者您可以将其呈现为 XML 并让 AS3 的 XML 类解析它。这样做的好处是相当快(因为 XML 是本机实现的),至少在反序列化端。如果你在 C 端有一个快速的 XML 渲染器(或者,咳咳,sprintfs),它还不错。

于 2011-07-19T17:02:47.823 回答