2009-08-04 7 views
2

Je cherche à me rapprocher le plus possible de l'analyse d'un fichier AS3 en objets ou XML. Par exemple, imaginez la classe suivante:Comment analyser un fichier .as (AS3)

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

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

Si on analyse, il pourrait être quelque chose comme:

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

.. même si je ne reçois pas une structure XML agréable, propre comme ça, même si cela pouvait juste analyser AS3 à un certain type de capacité, ce serait bien au-delà de ce que je suis maintenant.

Des pensées?

Merci, Eric

+0

En d'autres termes, vous voulez écrire un compilateur AS3? – skaffman

+0

Voilà à quoi ça ressemble. –

+0

À quel point connaissez-vous la théorie du compilateur ou les automates finis? –

Répondre

0

Jetez un oeil à la documentation flash.utils.describeType(). C'est pour décrire les éléments d'actionscript au moment de l'exécution, mais devrait avoir une certaine utilisation dans ce cas.

4

FlexPMD possède un analyseur as3. (FlexPMD est un projet Java par Adobe qui ne rapports des meilleures violations des pratiques dans le code source AS3.)

FlexPMD est hébergé chez http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD

Le code est sur une prise en pension de subversion à http://opensource.adobe.com/svn/opensource/flexpmd/trunk

L'inconvénient est-ce que vous auriez besoin d'utiliser Maven pour construire FlexPMD (moi, je n'ai jamais réussi à le faire fonctionner), mais comme vous n'avez besoin que d'un ou trois projets, il serait possible de les extraire à la main sans trop m'embêter.

Vous pouvez également vous aventurer plus loin dans le code source Flex SDK (également sur opensource.adobe.com) pour voir si Adobe fournit un autre logiciel pour analyser as3, mais je n'y ai pas encore regardé.

5

J'ai effectivement porté l'analyseur PMD à AS3.

Vous pouvez consulter http://github.com/teotigraphix/as3parser-framework

Mike

+3

Le lien ne fonctionne plus, on dirait qu'il a été déplacé à http://github.com/teotigraphix/asblocks –

+1

ce lien est cassé aussi, c'est peut-être Le bon? github.com/teotigraphix/as3-commons-asblocks – Enrique

3

Il y a un lexer, parser et tokenizer dans le projet AS3eval:

Questions connexes