Знакомьтесь, hscript (он же haXe Script)

Николя Канасье продолжает удивлять и вдохновлять, создавая новые проекты основанные на haXe и новые пути развития платформы и даря их сообществу. На этот раз очередным его подарком стал представленный в начале этой недели hscript - скриптовый движок или интерпретатор скриптов для haXe.

hscript (он же haXe Script) это динамически типизированный язык, который при этом содержит большинство выражений и базовых фич самого haXe:

  • константы (int,float,string)
  • идентификаторы
  • локальные переменные и правила областей видимости
  • блоки { ... }
  • выражения в скобках ( )
  • доступ к полям объекта
  • вызовы методов
  • бинарные и унарные операции
  • конструкции if / while / for / break / continue
  • выражения ++ и --

Это текущий список в описании на главной странице hscript на Google Code, но позавчера в списке рассылки Николя сообщил о том, что уже закончил добавление к функционалу hscript оставшихся фич, запланированных им ранее:

Были добавлены массивы (объявление и доступ к чтению/записи), функции (и именованные и анонимные) и выражение "return". Локальные переменные теперь отделены в hscript от глобальных и могут использоваться в функциях, объявленных в той же области видимости (то же поведение, что и в haXe).

hscript состоит всего из трёх файлов:

  • hscript.Expr : содержит декларации Enum-перечислений
  • hscript.Parser : маленький парсер, который превращает строку в абстрактное синтаксическое дерево (AST)
  • hscript.Interp : маленький интерпретатор выполняющий AST и возвращающий последнее полученное значение.

Об основном назначении hscript автор написал коротко и просто: "В некоторых проектах бывает иногда полезной возможность интерпретировать некий код динамически, без какой-либо перекомпиляции."

Можно сказать, что это "язык в языке" или способ динамической интерпретации скриптов (которые также динамически можно создавать, модифицировать) "на лету", т.е. во время выполнения.

Установка hscript:

Для установки hscript как обычно достаточно команды haxelib install hscript, а для компиляции вашей программы с его использованием флага -lib hscript.

Примечание: hscript требует haXe 2.0a (текущая CVS версия языка)

Небольшой пример использования haXe Script:

var script = "
    var sum = 0;
    for( a in angles )
        sum = sum + Math.cos(a);
    sum;
"
;
var parser = new hscript.Parser();
var program = parser.parseString(script);
var interp = new hscript.Interp();
interp.variables.set("Math",Math); // даёт скрипту доступ к классу Math
interp.variables.set("angles",[0,1,2,3]); // создаёт в скрипте список углов
trace( interp.execute(program) );  
скрипт в примере считает сумму косинусов углов, полученных из кода основной программы.

hScript не оптимизирован и не предназначен для того, чтобы быть очень быстрым. Но он полностью независим от платформы (crossplatform), т.к. является чистым haXe кодом (не использует специфические API для конкретных платформ)

По сравнению с haXe, ограничениями hscript на данный момент являются :

  • нет типизации и объявлений классов
  • нет выражения new
  • нет декларации объектов
  • нет += и других сложных присваиваний
  • нет switch
  • нет try/catch/throw
  • только одно объявление переменной разрешено в var

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>.

Подробнее о форматировании

CAPTCHA
Этот вопрос помогает предотвратить автоматический спам
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.
To prevent automated spam submissions leave this field empty.