Serj Kalichev 1 year ago
parent
commit
df3c7e4f4e
1 changed files with 60 additions and 0 deletions
  1. 60 0
      docs/klish3.ru.md

+ 60 - 0
docs/klish3.ru.md

@@ -484,6 +484,66 @@ SEQ сам может быть элементом контейнера SWITCH.
 
 ### ACTION
 
+Тег `ACTION` определяет действие, которое необходимо выполнить. Типичное
+использование тега - внутри команды `COMMAND`. При вводе оператором
+соответствующей команды, действия, определенные в `ACTION` будут выполнены.
+
+Действия могут выполняться не только командой. Далее приведен список тегов,
+внутри которых может встречаться `ACTION`:
+
+* `ENTRY` - для чего будет использован `ACTION`, определяется параметрами `ENTRY`.
+* `COMMAND` - выполняется действие, определенное в `ACTION`, при вводе оператором
+соответствующей команды.
+* `PARAM` - тоже, что и для `COMMAND`.
+* `PTYPE` - `ACTION` определяет действия для проверки значения введенного
+оператором параметра, имеющего соответствующий тип.
+
+Внутри перечисленных элементов может быть одновременно несколько элементов
+`ACTION`. Назовем это блоком элементов `ACTION`. Действия выполняются
+последовательно, одно за другим, если иное не определено атрибутом `exec_on`.
+
+Внутри одной команды может быть определено несколько блоков действий. Это
+возможно, если команда имеет ветвление параметров или опциональные параметры.
+Блоком считаются действия, определенные внутри одного элемента. Действия,
+определенные в разных элементах, включая вложенные, пренадлежат разным блокам.
+Всегда выполняется только один блок действий.
+
+```
+<COMMAND name="cmd1">
+	<ACTION sym="sym1"\>
+	<SWITCH min="0">
+		<COMMAND name="opt1">
+			<ACTION sym="sym2"\>
+		</COMMAND>
+		<COMMAND name="opt2"\>
+		<PARAM name="opt3" ptype="/STRING">
+			<ACTION sym="sym3"\>
+		</PARAM>
+	</SWITCH>
+</COMMAND>
+```
+
+В примере объявлена команда "cmd1", имеющая три альтернативных (указан может быть
+только один из трех) опциональных параметра. Поиск действий для выполнения идет
+с конца к началу при разборе введенной командной строки.
+
+Так если оператор ввел
+команду `cmd1`, то механизм разбора распознает команду с именем "cmd1" и будет
+искать `ACTION` непосредственно в этом элементе. Будет найден `ACTION` с символом
+"sym1".
+
+Если оператор ввел команду `cmd1 opt1`, то строка "opt1" будет распознана,
+как параметр (он же подкоманда) с именем "opt1". Поиск идет с конца, поэтому
+сначала будет найден `ACTION` с символом "sym2". Как только блок действий найден,
+больше поиск действий производиться не будет и "sym1" найден не будет.
+
+Если оператор ввел команду `cmd1 opt2`, то будет найдено действие с символом
+"sym1", так как элемент "opt2" не имеет собственных вложенных действий и поиск
+уходит наверх к родительским элементам.
+
+Если оператор ввел команду `cmd1 arbitrary_string`, то будет найдено действие с
+символом "sym3".
+
 
 ### ENTRY