如何解析.as(AS3)文件

时间:2009-08-04 21:52:20

标签: actionscript-3 parsing

我希望尽可能地将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解析为某种容量,它也会超出我现在的范围。

有什么想法吗?

谢谢, 埃里克

4 个答案:

答案 0 :(得分:5)

我实际上已将PMD解析器移植到AS3。

您可以查看http://github.com/teotigraphix/as3parser-framework

麦克

答案 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项,但在这种情况下应该有用。