Platform | Windows | Linux |
---|---|---|
Build status |
Простой, интерпретируемый язык, похожий на C++ и C#. Все примеры кода можно посмотреть в тестах здесь GitHub. Модель памяти как в C++, нет неявных выделений/удалений, используются конструкторы и деструкторы.
Указатели отсутствуют. Есть ссылки, но имеется runtime механизм проверки ссылок на объекты в деструкторе (отслеживать use after free). Методы/поля можно использовать до объявления.
class TestClass
{
class Vec2<T,Size>
{
TStaticArray<T,Size> value;
copy(T v0, T v1)
{
value[0]=v0;value[1]=v1;
}
copy(Vec2 l)
{
value[0]=l[0];value[1]=l[1];
}
operator +(Vec2 l, Vec2 r):Vec2
{
return new Vec2(l[0]+r[0],l[1]+r[1]);
}
operator -(Vec2 l, Vec2 r):Vec2
{
return new Vec2(l[0]-r[0],l[1]-r[1]);
}
operator [](Vec2& l, int i):T
{
return l.value[i];
}
func Dot(Vec2 r):T
{
return value[0]*r[0]+value[1]*r[1];
}
}
func static Test:int
{
Vec2<int, 2> v(3,5),r(-2,8);
Vec2<int, 2> s=(v+r);
return s.Dot(v-r);
}
}
- Классы
- Вложенные классы
- Шаблонные классы (параметр класс и int)
- Поля классов (могут быть статичные, с доступом private/public)
- Статичные локальные переменные
- Перегрузка конструктора по умолчанию(default)/копии(copy), деструктора(dest), операторов, преобразований(conversion)
- Стандартные операторы цикла while, for
- Условный оператор if else
- Перечисления enum
- Набор встроенных классов: int float bool vec2 vec2i char. Сами классы тут GitHub
- Динамические массивы TDynArray
- Статические массивы TStaticArray<T,Size>
- Класс string - обёртка над std::string
- Автоматический вывод типа локальной переменной через var
- Имеется TPtr - аналог std::shared_ptr (т.к. указателей нет, а иметь общие объекты нужно)
- Операторные скобки, выражения - тут как обычно
- Перегрузка методов
- Имеются extern методы для вызова метода C++ из скрипта
Т.к. BaluScript разрабатывался для конструктора BaluEngine, то имеются функции для взаимодействия с внешним миром
- Вызов метода скрипта из C++ (тут вручную преобразуем параметры)
- Генерации биндингов для скрипта для вызова его методов из C++