Функция BlockLexm предназначена для работы с лексемами строки, причем понимая под лексемой не только последовательности символов, разделенные пробелом (классическое представление), но также допуская в качестве разделителя произвольные наборы символов. При этом, если лексема содержит внутри себя разделитель, то она должна быть заключена в двойные кавычки. Фактически эта функция может быть использована для реализации аппарата работы со списками, располагающимися, например, в отдельной ячейке общего архива или системной переменной, и позволяет рассматривать эти списки как аналог стеков. Системная текстовая переменная retBlockLexm (код возврата) равна false в случае ошибки, иначе - true.

BlockLexm  (<операция>, <строка чтения>, <строка записи>,
            <контекст редактирования>, <номер начальной лексемы>,
            <номер конечной лексемы>, <разделитель лексем>)
<операция>:

addlex     -  добавление лексемы в конец строки чтения (пробел-разделитель
              в конце строки-списка сохраняется, если он был в исходной 
              строке);

addchklex  -  добавление лексемы в конец строки чтения, если её в строке
              нет (пробел-разделитель в конце строки-списка сохраняется,
              если он был в исходной строке);

artlex     -  подсчет числа лексем в строке чтения (0, если лексем нет),
              результат в строке записи;

numlex     -  определение номера лексемы из контекста редактирования в строке
              чтения (0, если лексемы нет), результат в строке записи;

dellex     -  удаление заданных лексем из строки чтения;

delpatlex  -  удаление лексем из строки чтения по шаблону;

inslex     -  вставка лексем в строку чтения перед заданной;  

rpllex     -  замена лексем в строке чтения в заданном диапазоне;  

getlex     -  получение лексем заданного диапазона из строки чтения;  

dlmlex     -  замена разделителя лексем в строке чтения; 

<строка чтения>:
{{n}}     -  ячейка с номером n=1,2,… из общего архива;
sysvar[n] -  системная переменная (n=1,2,3…);
" … "     -  явно заданный контекст чтения (если содержит пробел, запятую,
             закрывающие круглую или квадратную скобку, то заключается в
             двойные кавычки);
<строка записи>:
{{n}}     -  ячейка с номером n=1,2,… из общего архива;
sysvar[n] -  системная переменная (n=1,2,3…);
< контекст редактирования>*:
{{n}}     -  ячейка с номером n=1,2,… из общего архива;
sysvar[n] -  системная переменная (n=1,2,3…);
" … "     -  явно заданный контекст редактирования (если содержит
             пробел, запятую, закрывающие круглую или квадратную
             скобку, то заключается в двойные кавычки);

*Контекст редактирования предназначен для операций вставки, замены и
удаления в строке чтения, а также в качестве лексемы поиска.
<номер начальной лексемы>  -
     целое число, заданное явно или получаемое в результате подстановки  
     и вычисления группового выражения; по умолчанию – первая и последняя
     (-1) лексемы строки чтения (отрицательное число задаёт отсчет лексем
     от конца строки); 
<номер конечной лексемы>  -
     целое число, заданное явно или получаемое  в  результате  подстановки 
     и вычисления группового выражения; по умолчанию – первая и последняя
     (-1) лексемы строки чтения (отрицательное число задаёт отсчет
     лексем от конца строки); 
<разделитель лексем>  -
     произвольный контекст (по умолчанию  -  пробел); разделитель в виде 
     двойного пробела "  " , указывает на то, что контекст вставки
     или замены, содержащий пробелы, рассматривается как строка, состоящая
     из нескольких лексем, разделённых пробелом, в противном случае этот
     контекст всегда представляется как одна лексема; 
Обращение к функции: Комментарий:
================================================================
BlockLexm(addlex,{{11}},,"a b c" , , ," " ) добавление в ячейку общего архива {{11}} трёх лексем "a", "b" и "c", поскольку в качестве разделителя задан двойной пробел;
================================================================
BlockLexm(artlex,{{3}},sysvar3, , , , ",") подсчёт числа лексем с разделителем "," в ячейке общего архива {{3}} и занесение результата в sysvar3;
================================================================
BlockLexm(getlex,sysvar,sysvar1, , sysvar2|-1''-1, sysvar2|-1''-1) выборка лексемы из переменной sysvar по номеру, хранящемуся в последней лексеме переменной sysvar2, и помещение результата в переменную sysvar1;
================================================================
BlockLexm(rpllex,{{sysvar}},{{sysvar}},sysvar1 & sysvar2,r*,r*) замена лексемы с номером r* (значение циклического поиска в условном блоковом контексте) в ячейке общего архива с номером sysvar на конструкцию, получаемую в результате подстановки значений переменных в выражение: sysvar1 & sysvar2;
================================================================
BlockLexm(numlex,{{33}},sysvar2, sysvar1) определение номера лексемы из переменной sysvar1 по списку лексем из ячейки общего архива {{33}} и занесение результата в sysvar2 (разделитель лексем по умолчанию пробел);
================================================================