Разделы
- 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 – знаковые целочисленные).