2009-08-04 17 views
2

AS3ファイルをオブジェクトまたはXMLに解析するのと同じくらい近づくことを望んでいます。たとえば、以下のクラスを想像:.as(AS3)ファイルを解析する方法

package { 
    class SomeClass extends AnotherClass { 
     private var someVariable:Number 

     public function someMethod(someParameter:Number = 4):void { 
     var someLocalVariable:Number = someParameter * (2 + someVariable); 
     } 
    } 
} 

解析された場合、それはのようなものかもしれない:私も、このような素敵な、きちんとしたXML構造を取得しない場合でも...

<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> 

AS3を何らかの能力にパースすることができれば、私は今どこにいるのか分かりません。

どのような考えですか?

おかげで、 エリック

+0

は、あなたがしたいですAS3コンパイラを作成しますか? – skaffman

+0

それはそうであるように思えます。 –

+0

コンパイラ理論や有限オートマトンについて知っていますか? –

答えて

4

FlexPMDにはas3パーサーがあります。 (FlexPMDは、AS3ソースコードのベストプラクティス違反の報告んAdobeがJavaプロジェクトである。)FlexPMDはhttp://opensource.adobe.com/wiki/display/flexpmd/FlexPMD

でホストされている

コードがhttp://opensource.adobe.com/svn/opensource/flexpmd/trunk

下側のsubversionのレポにあります私はFlexPMDを構築するためにMavenを使用する必要がありますか(私はそれを稼働させることは決してありませんでした)が、1〜3つのプロジェクトが必要なので、あまりにも多くの呪いや叫びをすることなく手作業で抽出できます。

また、Flex SDKのソースコード(opensource.adobe.comも)を参照して、Adobeがas3を解析するための他のソフトウェアを提供しているかどうかを確認することができます。

5

私は実際にPMDパーサーをAS3に移植しました。

あなたはレクサー、パーサ、およびAS3evalプロジェクトのトークナイザありますhttp://github.com/teotigraphix/as3parser-framework

マイク

+3

リンクはもう動作しません。http://github.com/teotigraphix/asblocksに移動したようです。 –

+1

リンクが壊れている可能性があります。正しいもの? github.com/teotigraphix/as3-commons-asblocks – Enrique

3

をチェックアウトすることができます。つまり

関連する問題