我希望尽可能地将AS3文件解析为对象或XML。例如,想象下面的类:
package {
class SomeClass extends AnotherClass {
private var someVariable:Number
public function someMethod(someParameter:Number = 4):void {
var someLocalVariable:Number = someParameter * (2 + someVariable);
}
}
}
解析时,它可能类似于:
<package name="">
<class id="783" name="SomeClass" extendsId="782">
<variable id="784" visibility="private" type="Number"/>
<function id="785" name="someMethod" returnType="void">
<parameter id="786" name="someParameter" type="Number">
<expression>
<number value="4"/>
</expression>
</parameter>
<variable id="787" name="someLocalVariable" type="Number"/>
<code>
<assign toId="787">
<expression>
<variable id="786"/>
<operator type="*"/>
<expression>
<number value="2"/>
<operator type="+"/>
<variable id="786"/>
</expression>
</expression>
</assign>
</code>
</function>
</class>
</package>
..即使我没有像这样得到一个漂亮,整洁的xml结构,即使它只是将AS3解析为某种容量,它也会超出我现在的范围。
有什么想法吗?
谢谢, 埃里克
答案 0 :(得分:5)
答案 1 :(得分:4)
FlexPMD有一个as3解析器。 (FlexPMD是Adobe的一个Java项目,它报告了as3源代码中的最佳实践违规。)
FlexPMD托管在http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD
代码位于http://opensource.adobe.com/svn/opensource/flexpmd/trunk
的subversion repo上缺点是您需要使用Maven来构建FlexPMD(我,我从未设法让它工作),但由于您只需要一个或三个项目,因此可以手动提取这些项目诅咒和喊叫。
您可能还想进一步深入了解Flex SDK源代码(也在opensource.adobe.com上)以查看Adobe是否提供了用于解析as3的任何其他软件,但我没有看过那里。
答案 2 :(得分:3)
AS3eval项目中有词法分析器,解析器和标记器:
答案 3 :(得分:0)
查看flash.utils.describeType()文档。 http://livedocs.adobe.com/flex/gumbo/langref/flash/utils/package.html#describeType()
它用于在运行时描述actionscript项,但在这种情况下应该有用。