Синтаксис выражений в блоках

Для объявления переменных и задания им определенных значений используется блок «Инициализация переменной».
А для записи математических вычислений — блок «Функция».
Также математические выражения (в том числе и изменяющие значения переменных) могут встречаться почти везде, где можно указать какое-либо значение.
Блоки и их свойства, не допускающие использования математических выражений, описаны в в разделе «Общие блоки».
Все переменные в программе являются глобальными, т.е. их значения могут использоваться в любом блоке в программе.
Используемый внутри блоков язык создан на базе Lua 5.3 и во многом следует его синтаксису. Тем не менее имеются существенные отличия, поэтому полное описание используемого в TRIK Studio языка приводится здесь.

Типы языка TRIK Studio

В отличие от Lua язык TRIK Studio статически типизирован, то есть тип каждого выражения и каждой переменной должен быть известен во время компиляции. При этом язык не требует (и даже не позволяет!) явно писать типы переменных. Используется автоматический вывод типов по использованию переменных.
Например, по выражению
a = 1
среда «поймёт», что тип a — целое.

Лексемы языка

Язык использует пробелы, табуляции и переводы строк вне строковых литералов только как разделители между лексемами — влияния на интерпретацию выражений они не оказывают.
В языке есть следующие ключевые слова:
and
false
nil
not
or
true​
И следующие операторы:
+ - * / % ^ # & ~ | << >> // == ~= <= >= < > = ( ) { } [ ] ; : , . .. && ||
Строковые литералы пишутся либо в одинарных, либо в двойных кавычках. Например:
a = 'alo123'
a = "alo123"
Целые числа пишутся либо в десятичной, либо в восьмеричной, либо в шестнадцатеричной системе. Шестнадцатеричные числа начинаются с префикса «0x», восьмеричные — с префикса «0». Например:
 3, 345 — десятичные числа
 0xff, 0xBEBADA — шестнадцатеричные числа
 07654321 — восьмеричное число
Вещественные числа пишутся либо в общепринятой, либо в экспоненциальной форме. Например:
3.0
3.1416 
314.16e-2
0.31416E1 
34e1​
Комментарии начинаются с «--» и продолжаются до конца строки. Например:
a = 1; -- тут комментарий

Операторы языка

В языке доступны три вида операторов.
1
Оператор присваивания.
Имеет следующий вид:
переменная1, переменная2, …, переменнаяN = выражение1, выражение2, …, выражениеN
В самом простом виде
переменная = выражение
2
Оператор возврата значения.
Записывается как обычное выражение и должен находиться в конце блока операторов.
3
Пустой оператор.
Записывается как
;

Пример

Блок операторов с двумя операторами присваивания и оператором возврата значения:
a, b = 1, 2; -- оператор присваивания и пустой оператор
c = 3; -- оператор присваивания и пустой оператор
a + b + c -- оператор возврата значения

Операторы в выражениях

Бинарные

Унарные

Сенсорные переменные

Помимо использования константных числовых значений программисту в TRIK Studio доступны зарезервированные переменные, которые хранят значения показаний сенсоров, подключенных к соответствующим портам.
Эти значения можно присваивать переменным и использовать в математических выражениях.
Переменные имеют вид
sensor<имя порта сенсора>
Например, «sensorA1» для ТРИК или «sensor1» для Lego NXT.
Полный список сенсорных переменных приводится в разделах к конкретным платформам:

Константы

Со встроенными константами можно работать так же, как и с сенсорными переменными, но их значения не меняются.

Встроенные функции

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

Примеры записи выражений

Объявление нескольких переменных в одном блоке «Функция»:
То же через блоки «Инициализация переменной»:
Пропорциональный регулятор для езды по линии с использованием двух датчиков света для платформы ТРИК:
Пример использования массивов для задания портов блока «Моторы вперёд». Создаётся массив с именем a, нулевому элементу присваивается порт M3, первому — M1, потом содержимое первого элемента массива меняется на M4, затем получившийся массив передаётся в свойство «Порты» блока «Моторы вперёд»: