Разделы
- 1. Введение
- 2. Описание языка
- 3. Интерфейс программирования приложений (API)
- 3.1. Стек
- 3.2. Резервация памяти
- 3.3. Сообщения
- 3.4. Типы данных
- 3.5. Функции
- 3.5.1. Базовые функции скриптоввой системы
- 3.5.2. Функции для вставки на вершину стека значения
- 3.5.3. Перевод значений со стека в скриптовую ситему (экспорт (stack => script))
- 3.5.4. Функции для получения со стека (stack => C(++))
- 3.5.5. Функции для работы с аргументами в вызванной C(++) функции из скриптовой системы (script => C(++) function)
- 3.5.6. Функции отладки (DEBUG)
- 3.5.7. Функции для работы с препроцессом
- 4. Стандартная библиотека
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 – знаковые целочисленные).
