Показать сообщение отдельно
Старый 19.06.2015, 01:19
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 9  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
Не совсем понимаю точное определение синтаксического дерева.
Но вот эта либа (https://github.com/teotigraphix/as3-.../asblocks/impl) занимается построением дерева класса (AST). Как создание так и чтение.
Вот что то такое позволяет делать:
Код AS3:
var ap:IASParser = af.newParser();
// Чтение класса из файла.
var unit:IASCompilationUnit = ap.parse(fileData);
var factory:ASFactory = new ASFactory();
var type:IASClassType = unit.getType() as IASClassType;
// Добавление своего метода в класс
var method:IASMethod = type.newMethod("drawUI", Visibility.PROTECTED, "void");
var cons:IASMethod = type.getMethod("Recipes");
var l:IList = cons.getStatements();
// Добавление операторов в метод
method.setDescription("Autogenerated staff, please don`t modify!"); 
method.parseStatement("addChild(button1);");
method.parseStatement("button1.x=100;");
method.parseStatement("button1.y=100;");
method.parseStatement("button1.setSize(100,40);");
 
var il:IList = method.getStatements();
 
var sb:StatementBuilder = new StatementBuilder();
var ast:LinkedListTree = new LinkedListTree();
// Добавление поля класса
var prop0:IASField = type.newField("button1", Visibility.PRIVATE, "Button" );