Разделы

2.2. Значения и типы

s4g язык с динамическим определением типов. В любой момент времени одна и та же переменная может иметь разные типы. Переменная может содержать значения любого из поддерживаемых типов. Возможность определения пользовательских типов отсутствует.

Всего в s4g определено 10 типов:
Null (t_null) – пустой тип означающие отсутствие каких либо данных в переменной.
Table (t_table) – ассоциативные массивы которые индексируются числами (с 0) и строками (именами переменных). Так же это может быть просто массив. Одновременно в одной и той же таблице могут быть различные типы данных.
String (t_string) – пользовательские строки (массивы символов).
Float (t_float) – число с плавающей запятой. C(++) тип можно переопределить в s4g_float дефайне.
Int (t_int) – целое десятичное знаковое число. C(++) тип можно переопределить в s4g_int дефайне.
Uint (t_uint) - целое десятичное беззнаковое число. C(++) тип можно переопределить в s4g_uint дефайне.
Bool (t_bool) – логическое значение, принимает либо true (истина) либо false (ложь). C(++) тип можно переопределить в s4g_bool дефайне.
Pointer to C(++) data (t_pdata) – указатель на пользовательские данные на стороне C(++).
C(++) function (t_cfunc) – функция на C(++). s4g_c_function - тип C(++) функции которая принимает скриптовая система.
Script function (t_sfunc) – скриптовая функция языка.
1 внутриязыковой (nnull - цифра 0, вставляется в выражения с унарным минусом).
1 ошибочный (none - возвращается в случае определения типа, когда не существует переменной)

Переменные с типом null всегда ссылаются на одни и те же данные (это значение зарезервировано в памяти и находится там константно).
Переменные с типом true и false ссылаются на 2 разные константные данные подобно null. Поэтому каждое новое создание переменной логического типа ни в коем случае не производит копирование данных true или false.
pdata регулируется только на стороне C(++). То есть создать/изменить/удалить пользовательские данные на стороне скриптов напрямую не получится. Но это можно сделать посредством экспорта функций в скриптовую систему которые создают/изменяют/удаляют пользовательские данные.

Литералы (пользовательские строки) должны быть заключены в кавычки "".
Значения типа float (с плавающей запятой) должны содержать в себе либо точку, которая разделяет целую и дробные части, либо в конце числа символ f:

$a = 1.5;
$b = 1f;

Значения типа t_uint (unsigned integer - беззнаковые целочисленные) должны содержать после числа символ u:

$a = 1u;

Все остальные числа по умолчанию имеют тип int (integer – знаковые целочисленные).