Как разобрать файл .as (AS3) - PullRequest
2 голосов
/ 05 августа 2009

Я хочу максимально приблизиться к разбору файла 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 до какой-то емкости, это было бы намного выше, чем сейчас.

Есть мысли?

Спасибо, Eric

Ответы [ 4 ]

5 голосов
/ 24 августа 2010

Я фактически перенес анализатор PMD на AS3.

Вы можете проверить http://github.com/teotigraphix/as3parser-framework

Mike

4 голосов
/ 04 декабря 2009

FlexPMD имеет парсер as3. (FlexPMD - это проект Java от Adobe, который сообщает о нарушениях рекомендаций в исходном коде as3.)

FlexPMD размещен на http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD

Код находится в репозитории Subversion на http://opensource.adobe.com/svn/opensource/flexpmd/trunk

Недостатком является то, что вам понадобится использовать Maven для сборки FlexPMD (мне так и не удалось заставить его работать), но, поскольку вам нужен только один или три проекта, возможно, будет возможно извлечь их вручную, не слишком много ругаться и кричать.

Возможно, вы захотите еще глубже изучить исходный код Flex SDK (также на opensource.adobe.com ), чтобы узнать, предоставляет ли Adobe какое-либо другое программное обеспечение для синтаксического анализа as3, но я не смотрел там.

3 голосов
/ 09 марта 2013

В проекте AS3eval есть лексер, парсер и токенизатор:

0 голосов
/ 06 августа 2009

Посмотрите документацию по flash.utils.describeType (). http://livedocs.adobe.com/flex/gumbo/langref/flash/utils/package.html#describeType()

Он предназначен для описания элементов ActionScript во время выполнения, но в этом случае должен иметь некоторое применение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...