Язык MyChat Script Language или сокращенно MSL по своей семантике напоминает Pascal. Стандартная схема любого скрипта выглядит так:
program TestScript;
begin
end.
program — это служебное необязательное слово, begin..end — операторные скобки. В конце скрипта стоит точка, она символизирует конец программы.
Все операторы языка разделяются точкой с запятой, регистр букв не имеет значения. Переменные должны описываться заранее и иметь четко определенный тип. В названии могут быть большие и маленькие латинские буквы, цифры и знак подчеркивания. Названия переменных не могут начинаться с цифры и содержать в своем имени пробелы. Например:
program Variables;
var
st:string;
x, y:integer;
begin
x:=100;
y:=150;
st:=inttostr(x+y);
end.
В этой программе объявляются 3 переменные: одна строка и две целочисленные, а затем текстовой переменной st присваивается сумма x и y. Обратите внимание, что для этого пришлось применить функцию перевода числа в строку, так как в MSL осуществляется жесткий контроль типов данных при преобразованиях.
MSL поддерживает циклы, их три вида:
1.Итеративный:
for i:=1 to 100 do begin
end;
2.С предусловием:
while x>100 do begin
end;
3.С постусловием:
repeat
until r=false;
Также есть ветвления с поддержкой логических условий и оператор выбора:
if (x=10) and (strtoint(test)<100) then begin
end;
В операторе case не может использоваться переменная типа string.
case z of
1:begin x:=100;y:=200;end;
2:x:=700;
3:y:=10000;
else x:=0;
end;
И, наконец, поддерживается механизм подпрограмм. Это процедуры и функции. Функция отличается от процедуры тем, что возвращает в своем имени после отработки значение. В процедуры и функции можно передавать параметры по ссылке и по значению, то есть, если перед переменной стоит служебное слово var (в параметрах функции), то это значит, что если изменить переменную в функции, она изменится и в программе, откуда вызывается данная функция. Если служебного слова var перед переменной нет — можно делать с переменной что угодно, в вызывающей программе (или подпрограмме) передаваемая переменная не изменится.
procedure Test(x,y:integer;var st:string);
begin
st:=inttostr(x*y);
end;
function Fact(n:integer):integer;
var i,x:integer;
begin
x:=1;
for i:=1 to n do x:=x*i;
result:=x;
end;
В программе можно использовать комментарии, их три типа. Например:
program Test;
// это однострочный комментарий. Всё, что идёт после двойных наклонных черт
// в этих строках, игнорируется
procedure Increment(var n:integer);
begin
{а это многострочных комментарий
в фигурных скобках}
n:=n-1;
end;
procedure Decrement(var n:integer);
begin
n:=n-1; (* а ещё можно *)
end;(*вот
так
делать*)
begin
x:=100;
Increment(x);
Decrement(x);
end.
Для более подробного знакомства с языком и вариантами его использования рекомендуем посмотреть примеры работы с процедурами и функциями.
Также примеры использования скриптового языка вы можете найти на официальном форуме в разделе "Боты, плагины, скрипты и разные дополнения".