Вітаю на сайті ELI!

ELI це безкоштовне та вільне програмне забезпечення із С-подібним синтаксисом мови, призначене для порядкової інтерпретації команд. ELI не просто інтерпретатор скриптів, що використовує функціонал хост-аплікації, він має власну логіку роботи та оперує такими інструментами як процедури, об'єкти та класи. Докладніше тут



Англійська документація по проекту

Одна добра людина переклала для мене документацію англійською мовою, тож тепер ще більше людей зможе долучитись до використання ELI в своїх проектах. До того ж тепер я зможу створити більш-менш пристойну wiki на GitHub Завантажити документ



Оновлено IDE для ELI

Що нового:

  • IDE та транслятор (et.exe) тепер використовують клас ELIScript для спрощеної трансляції скриптів
  • інтерпретатор тепер вбудовано в саму IDE і обрано хост-аплікацією за замовчуванням
  • транслятор (et.exe) тепер повністю консольний і приймає наступний рядок аргументів: <dll path> <script path> <param1;param2...;paramn>
  • лог трансляції тепер відображається у лозі IDE, а також дублюється у вікні дебаг-інформації
  • вставка шаблонів коду тепер не використовує буфер обміну
  • незначні зміни інтрефейсу
Завантажити



Оновлено IDE для ELI

Що нового:

  • тепер логи зберігаються у каталог користувача %USERPROFILE%\Documents\ELI folder
  • у налаштуваннях відображається версія обраної бібліотеки інтерпретатора
  • транслятор (et.exe) тепер може запускатися, маючи лише два аргументи: et.exe <eli path> <script path>
  • виправлено баг, коли підсвітка синтаксису не спрацьовувала після вставки тексту через ctrl+v
  • виправлено баг, коли транслятор не запускався, якщо у аргументах запуску були пробіли
  • додано підсвітку синтаксису для процедур
  • покращено підсвітку синтаксису для функцій, змінних, об'єктів та коментарів
  • оновлено бази лексем для підсвітки та автодоповнення коду згідно з новою версією ELI
Завантажити



Реліз ELI v1.0.3.5

Що нового:

  • нова директива #trigger (<умова спрацювання>) {<певний код>}. Код у цій секції буде виконаний, якщо умова спрацювання буде істинною. Кожний рядок скрипту має перевірятись на істинність умов всіх зареєстрованих триггерів. Збій роботи тригеру не впливає на трансляцію скрипту
  • додані деструктори до об'єктів класів
  • нова функція у заголовковий файл інтрефейсу void __stdcall ELI::AddToLog(const wchar_t *msg), дозволяє сторонній бібліотеці або аплікації додавати свої повідомлення у лог інтерпретатора
  • виправлено баг у спадкуванні класів, коли виникали порожні поля замість успадкованих
  • оновлено парсер, додано функцію пошуку числових констант у виразах. Тепер числові константи, так само як і символьні, будуть заноситись у стек змінних, а замість них у рядках скрипту фігуруватимуть змінні
  • оновлено та виправлено документацію
  • тепер у якості аргументів для методів об'єктів можна без проблем використовувати властивості та методи інших об'єктів
  • виправлено помилку, коли передача методу об'єкта аргумента типу 30.000 призводила до невірного обчислення
  • нова директива #set {<список директив>}. Змінює налаштування інтерпретатора у режимі рантайм. Зміни діють до кінця трансляції скрипту. У тілі використовуються наступні директиви, що змінють налаштування:

    #cnum|#!cnum - вмикає/вимикає парсинг числових констант у рядках скрипту (за замовчуванням ввімкнено).

    #csym|#!csym - вмикає/вимикає парсинг символьних констант у рядках скрипту (за замовчуванням ввімкнено).

    #keepobjects|#!keepobjects - вказує зберігати/не зберігати вміст стеку об'єктів після трансляції скрипту (за замовчуванням ввімкнено)

    #keepclasses|#!keepclasses - вказує зберігати/не зберігати вміст стеку класів після трансляції скрипту (за замовчуванням ввімкнено)

  • оптимізовано роботу стеку фрагментів коду, тепер після трансляції скрипту він зберігає лише ті фрагменти, що мають область видимості у межах всієї роботи ELI (наприклад, належать до тіл процедур та методів класів)
  • змінено логіку директиви #make, тепер вона сама ініціалізує змінну, якщо на момент виконання та ще не існує
Завантажити



Реліз ELI v1.0.3.3

Що нового:

  • нова функція _sleep(), яка призупиняє трансляцію
  • нова директива #protect, дозволяє транслювати частину коду, не боячись, що трансляціє перерветься через виникнення виключення
  • змінено алгоритм збереження логів трансляції та помилок, тепер вони зберігаються не в каталог інтерпретатора, а в каталог користувача %userprofile%
  • оновлено документацію та дистрибутив IDE
Завантажити



У ELI з'явилось власне інтегроване середовище розробки!

Серед функцій IDE:

  • підсвітка синтаксису
  • автодоповнення коду
  • зміна шрифта редактору
  • трансляція до вказаної строки
  • окремі вікна для відображення дебаг-інформації та вмісту стеків
Вигляд вікна IDE

Завантажити



Реліз ELI v1.0.3.2

Вдосконалений механізм завантаження файлів скриптів. Виправлена помилка, коли конструкція на кшталт "$x = $xl" призводила до помилки ініціалізації змінної $x (через співпадіння початку імен обох змінних). Вдосконалена перевірка умови конструкції if(). Тепер умови можна перевіряти не тільки на "істину" if ($x), але й на "неправду" if (!$x).



Реліз ELI v1.0.3.1

Проект повністю перероблений та перенесений у іншу IDE (Embarcadero C++ Builder 10). Працює з різними компіляторами (протестовано з C++ Builder, MinGW та MSVC++), використовує Unicode.



Реліз ELI v1.01.01

Перший млинець вийшов трошки комкуватий. Працює лише із аплікаціями, що створені за допомогою компілятора MinGW, розуміє лише кодування ANSI (без кирилиці).