Язык Lua

1. Введение

В программе конструктора G-кода, используется скриптовый язык программирования Lua, с помощью которого можно реализовать различную логику генерации текста с G-кодом, и на данной странице я опишу базовые возможности языка, и его применения.

2. Переменные

Переменные позволяют хранить данные, которые мы в них помещаем, а так-же выполнять различные математические операции над этими данными.
Имена переменных чувствительны к регистру, а значит переменная “test” и “Test” будут считаться разными переменными.
На примере ниже создание переменной, и помещения в неё значения:

p1 = 10
p2 = "zzz"
3. Арифметические операции

Для числовых значений применяются следующие операции:

  • сложение “+”
  • вычитание “-“
  • умножение “*”
  • деление “/”
  • остаток от деления “%”
  • возведение в степень “^”

И примеры ниже:

p1 = 10
p2 = 3
p3 = p1 + p2 -- результат будет 13
p3 = p1 - p2 -- результат будет 7
p3 = p1 * p2 -- результат будет 30
p3 = p1 / p2 -- результат будет 3.333333
p3 = p1 % p2 -- результат будет 1 (т.к. 3*3 = 9 и остаток 10 - 9 = 1)
p3 = 5 ^ 2 -- результат будет 25
Для возможности управлять очерёдностью математических операций можно использовать скобки:
p1 = 10
p2 = 3
p3 = (p1 - 2) * p2 -- результат будет (10 - 2) * 3 = 8 * 3 = 24

Для объединения текстовых данных применяется “..” И пример ниже:

p1 = 10
p2 = "zzz"
p3 = p2 .. p1 -- результат будет zzz10
p3 = p2 .. "-" .. p2 -- результат будет zzz-zzz

4. Условия
Когда коду требуется работать согласно некоторой логике, можно использовать условия, выглядит это так:
if p1 == 10 then
   --тут условие выполнится если p1 равно 10
end
 
if p1 ~= 10 then
   --а тут условие выполнится если p1 не равно 10
end

if p1 >= 10 then
   --а тут условие выполнится если p1 больше или равно 10
end
Для проверки условия можно использовать следующие символы:
  • “<" - значение слева меньше значения справа*
  • “>” – значение слева больше значения справа*
  • “<=" - значение слева меньше или равно значению справа*
  • “>=” – значение слева больше или равно значению справа*
  • “==” – значение слева равно значению справа
  • “~=” – значение слева не равно значению справа

* – Возможно применение только для числовых данных

А так-же есть возможность в оном условии проводить несколько проверок, используя “and”, “or”:
if p1 == 10 or p1 == 15 then
   --тут условие выполнится если p1 равно 10 или равно 15
   --т.е. как минимум совпадет одно из условий
end
 
if p1 == 1 and p2 = 4 then
   --а тут условие выполнится если p1 равно 1 и p2 равно 4
   --т.е. совпадут оба условия
end

5. Циклы
Для возможности выполнить некую похожую операцию, нужное количество раз, можно использовать цикл, в котором указывается название переменной, начальное значение, конечное значение, и значение инкремента. Пример:
for p1 = 0, 5, 1 do  
   - по мере выполнения цикла в данном месте переменная p1, будет иметь значение 0,1,2,3,4, и 5, после чего цикл завершится.    
end 
Вот в этом примере к значению 10 в цикле прибавится 1, потом ещё добавится 2, и 3, что в итоге в переменной получится значение 10 + 1 + 2 + 3 = 16
p1 = 10
for p2 = 1, 3, 1 do  
   p1 = p1 + p2
end