Текст ниже - авторский, с небольшими поправками. Автор - Антон Сухинов, автор скрипта. Позже будут исправления.
++ - будут убраны, это из-за большой длины выражения получилось.
Один нюанс: ввиду того, что зарезервированные комбинации, никогда не начинаются с маленькой буквы или цифры, то я решил комбинации вида @маленькая_буква и @цифра превращать в некоторые полезные часто используемые символы:
@a@b@c@d@e@f@g@h@i@j@k@l@m@n
@o@p@q@r@s@t@u@v@w@x@y@z
@0@1@2@3@4@5@6@7@8@9
Видно, что некотрые символы я ещё не распределил (вопросительные знаки) принимаю предложения об их значении. @0 будет пустым множеством.
_Temp1 : Матрица
Этот шаблон имеет самый низкий приоритет. Это означает, что в его аргументах можно писать любые выражения, кроме матриц, не используя скобок.
Матрица управляется двумя символами: запятая (,) для разделения столбцов и (;) для разделения строк. Пустые строки (;;) игнорируются.
Строка считается матрицей, если в ней присутствует хотя бы один символ ";"
Синтаксис примерно такой:
(арг 1,1),(арг 1,2),...,(арг 1,N1);(арг 2,1),(арг 2,2),...,(арг 2,N2);...;(арг M,1),(арг M,2),...,(арг M,NM)
Видно, что в каждой строке может быть разное число столбцов.
Аргументы показаны в скобках. Это не значит, что они должны быть в скобках. Но если скобки есть, они будут "съедены".
Шаблоны съедают круглые и фигурные скобки!
Самый простой пример: a,b;c,d
Съедение скобок: (a+1),|b^3|;{c^2},[d]
Боремся со съедением скобок: ((a+1)),|b^3|;({c^2}),[d]
Эта строка матрицей не считается: (a^2),(b_2),(c^2),(d_2)
Чтобы она считалось матрицей с одной строкой, можно дописать в конце ";" (заметьте, теперь я могу убрать круглые скобки!) :
a^2,b_2,c^2,d_2;
Матрицу можно взять в скобки: (a^2,b_2;c^2,d_2)
Вся эта строка не матрица: a,(b;c),d
В ней матрица лишь b;c потому, что в строке a,(b;c),d символа ";" нет! Он скрыт круглыми скобками!
И ещё одна особенность: двойная точка с запятой (;;) не вставляет в матрицу пустую строку, а оканчивает строку точкой с запятой: a,b;;c,d.
Для вставки пустой строки можно, например сделать так: a,b;%;c,d.
Пустая строка получилась узкой из-за того, что пробел -- не высокий символ.
b]ШАБЛОН _Temp2 -- видимые пробелы[/b]
Поскольку обычные пробелы (которые пока приходится писать, как %) игнорируются, то возникает необходимость в видимых пробелах.
Вот они:
ШАБЛОН _Temp3 -- отношение
Отношение -- это больше, меньше, равно, не равно...
Синтаксис: арг1 <> арг2,
где <> некоторый символ отношения (или последоватеьность символов)
Вот таблица отношений:
Тут всё понятно, поэтому примера всего два:
a/b~=c&size=20
(a,b;c,d)==0