FastReport 3.0 Interpreter

Hello FastReport-RU,

Возвратюсь к теме интерпретатора ;)

За что я не люблю сторонние решения - за то, что с ними рано или поздно начинаются головняки. Долгое время я считал, что писать свой нецелесообразно - долго и нудно, да и функционально богатым его не сделаешь. И решил, что в ФР3 будет использован InnerfusePascalScript. Но это было давно (тема поднималась чуть ли не прошлым летом), а я тогда не знал, что такое XML :) А XML это штука очень даже ничего, на основе нее можно даже интепретатор написать ;) Итак, мое творение, окончательно и бесповоротно войдущее в 3.0. Демка лежит здесь (около 280кб), там же и примеры скриптов: http://www.fast-report.com/files/Interp30.zip

Возможности языка довольно широкие. Есть все стандартные конструкции, включая try/except/finally, break/continue/exit, вложенные процедуры/функции с параметрами по ссылке и значению, глобальные/локальные пеменные/константы, типы (integer,extended,coolean,char,string,array,class). Массивы такие же, как и в Паскале. Типизация данных также имеется. Чего нет: слова Type и всего, что с ним связано - свои типы данных, записи и классы внутри скрипта. Также ограничено использование Set - с ними можно только делать операцию IN. Пока не придумал, что делать с events.

А теперь самое главное - при чем тут XML? А при том, что интерпретатор поддерживает два языка - Pascal и C++ с его штучками (++,--,+= и пр). Возрадуйтесь, ваятели на BCB! :) Описание языков хранится в XML. При желании туда можно добавить описание и Basic, и 1C (Павел, привет! ;)) и вообще чего угодно. Программа (точнее, программка - 150 строк ;) разбирает синтаксис входного языка по правилам, описанным в XML, и формирует выходной язык, также XML. Что-то типа Intermediate Language, как в Microsoft.NET :) О размерах: все это добро прибавит к ФР около 150кб, если мне в голову не взбредет навернуть чего-нибудь еще. А скорость работы - это предмет особой гордости: не напрягаясь, FR "делает" IFPS3 и иногда немного отстает от DelphiWebScript2, а иногда и его делает.

В общем, кому интересно, качайте и щупайте. Как обычно, буду рад багам.

Best regards,
Alexander Tzyganenko mailto:tz@fast-report.com

FastReport Software
Chief Technology Officer
http://www.fast-report.com



Новости за месяц

  • Апрель
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс