Язык 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 z of
1:begin x:=100;y:=200;end;
2:x:=700;
3:y:=10000;
else x:=0;
end;
В операторе case не может использоваться переменная типа string.
И, наконец, поддерживается механизм подпрограмм. Это процедуры и функции. Функция отличается от процедуры тем, что возвращает в своем имени после отработки значение. В процедуры и функции можно передавать параметры по ссылке и по значению, то есть, если перед переменной стоит служебное слово 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.
Для более подробного знакомства с языком и вариантами его использования рекомендуем посмотреть примеры, которые идут в комплекте с нашим бесплатным скриптовым движком WinScript, который практически полностью аналогичен MSL, за исключением набора функций, которые предназначены специально для MyChat Server (имена таких функций начинаются со строчной буквы "m").
Также примеры использования скриптового языка вы можете найти на сайте в разделе Статьи.


