Есть ли ActionScript для парсера ABC Bytecode? - PullRequest
0 голосов
/ 09 февраля 2012

Итак, у меня есть приложение, в котором пользователи должны определять функции ActionScript.

Что мне нужно, чтобы получить строку, написанную пользователем, и преобразовать ее в байт-код, чтобы я мог использовать ее с as3-commons-байт-код?

Редактировать

Не думаю, что я был достаточно ясен.Мне нужно включить: if(!myValue) {...}

В это:

...
findpropstrict  private::myValue
getproperty     private::myValue
not             
iffalse         L1
...

Поскольку с этим кодом ^^^^ я могу использовать as3-commons-bytecode дляделать то, что мне нужно.

Я взглянул на исходный код этого приложения.Это очень запутанно, проект старый, а код - беспорядок, но он работает.Мне нужно найти «где происходит волшебство».Можете ли вы показать мне путь?

Ответы [ 4 ]

2 голосов
/ 09 февраля 2012

Вы должны использовать часть этого проекта:

eval.hurlant.com / демо / # приложение = da4a & 757d-SelectedIndex = 0

Проверьте источник, есть парсер для ABC.

0 голосов
/ 10 февраля 2012

Существует библиотека для Haxe, которая позволяет компилировать язык ассемблера Actionscript в ABC во время выполнения, но он по-прежнему находится на более низком уровне, чем скрипт ActionScript, который вы обычно пишете.

http://haxe.org/com/libs/format/abc

Наиболее вероятным решением является сервер или другой процесс, который может компилировать и возвращать SWF-контент для вас. Haxe имеет очень быстрый и простой компилятор, но также возможно использовать Tamarin или другое решение для компиляции AS3 на сервере.

На самом деле, есть исполняющая библиотека для выполнения кода Haxe, которая, опять же, очень похожа на Actionscript. Может быть стоит посмотреть:

http://code.google.com/p/hscript/

0 голосов
/ 09 февраля 2012

Что именно хотите сделать?Чтобы скомпилировать «строку», строка должна быть чем-то значимым для компилятора, например, package, а не просто строкой (например, asdas).Если вы не хотите использовать компилятор flash / flex, вы можете скомпилировать AS в ABC с помощью Ant или Haxe.Но есть проблема - как вы начнете эту азбуку?

0 голосов
/ 09 февраля 2012

Мне неизвестны какие-либо библиотеки, которые делают это для вас, но для достижения этой функциональности вы должны проанализировать ввод пользователя в имена функций.Например, вы можете вызывать функцию, просто называя ее имя как String, например:

var functionName:String = "myMethod";
function myMethod():void
{
  trace("myMethod");
}
this[functionName](); //traces "myMethod"

Конечно, если вы хотите интерпретировать расширенные строки с получением / настройкой объектов, их свойств и любых другихдругие определяемые пользователем операторы, которые потребовали бы написания довольно сложного конвертера строки в байт-код.

ОБНОВЛЕНИЕ: Есть также библиотека AS3Eval, которая может выполнить эту работу.Взгляните на http://eval.hurlant.com/

...