|
@@ -1118,6 +1118,71 @@ SEQ сам может быть элементом контейнера SWITCH.
|
|
|
|
|
|
#### Атрибут `ref`
|
|
#### Атрибут `ref`
|
|
|
|
|
|
|
|
+Элемент схемы может быть ссылкой на другой элемент схемы. Создание элемента "#1",
|
|
|
|
+являющегося ссылкой на элемент "#2" эквивалентно тому, что элемент "#2" будет
|
|
|
|
+объявлен в том месте схемы, где расположен элемент "#1". Вернее будет сказать,
|
|
|
|
+что это эквивалентно созданию копии элемента "#2" на том месте, где определен
|
|
|
|
+элемент "#1".
|
|
|
|
+
|
|
|
|
+Если элемент являетя ссылкой, то в нем определен атрибут `ref`. Значение атрибута
|
|
|
|
+- ссылка на целевой элемент схемы.
|
|
|
|
+
|
|
|
|
+```
|
|
|
|
+<KLISH>
|
|
|
|
+
|
|
|
|
+<PTYPE name="ptype1">
|
|
|
|
+ <ACTION sym="INT"/>
|
|
|
|
+</PTYPE>
|
|
|
|
+
|
|
|
|
+<VIEW name="view1">
|
|
|
|
+ <COMMAND name="cmd1"/>
|
|
|
|
+</VIEW>
|
|
|
|
+
|
|
|
|
+<VIEW name="view2">
|
|
|
|
+ <VIEW ref="/view1"/>
|
|
|
|
+ <COMMAND name="cmd2">
|
|
|
|
+ <PARAM name="param1" ptype="/ptype1"/>
|
|
|
|
+ <PARAM name="param2">
|
|
|
|
+ <PTYPE ref="/ptype1"/>
|
|
|
|
+ </PARAM>
|
|
|
|
+ </COMMAND>
|
|
|
|
+</VIEW>
|
|
|
|
+
|
|
|
|
+<VIEW name="view3">
|
|
|
|
+ <COMMAND ref="/view2/cmd2"/>
|
|
|
|
+</VIEW>
|
|
|
|
+
|
|
|
|
+<VIEW name="view4">
|
|
|
|
+ <COMMAND name="do">
|
|
|
|
+ <VIEW ref="/view1"/>
|
|
|
|
+ </COMMAND>
|
|
|
|
+</VIEW>
|
|
|
|
+
|
|
|
|
+</KLISH>
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+В примере "view2" содержит ссылку на "view1", что эквивалентно объявлению копии
|
|
|
|
+"view1" внутри "view2". А это в свою очередь означает, что команда "cmd1" станет
|
|
|
|
+доступна во "view2".
|
|
|
|
+
|
|
|
|
+В другом `VIEW` с именем "view3" объявлена ссылка на команду "cmd2". Таким
|
|
|
|
+образом отдельная команда становится доступна внутри "view3".
|
|
|
|
+
|
|
|
|
+Параметры "param1" и "param2" имеют одинаковый тип `/ptype1`. Ссылка на тип
|
|
|
|
+может быть прописана с помощью атрибута `ptype`, либо с помощью вложенного
|
|
|
|
+тега `PTYPE`, который является ссылкой на ранее объявленный `PTYPE`. В итоге
|
|
|
|
+типы двух объявленных параметров полностью эквивалентны.
|
|
|
|
+
|
|
|
|
+В последне примере ссылка на `VIEW` заключена внутрь тега `COMMAND`. В данном
|
|
|
|
+случае это будет означать, что если мы работаем с "view4", то команды из
|
|
|
|
+"view1" будут доступны с префиксом "do". Т.е. если оператор находится во
|
|
|
|
+`VIEW` с именем "view4", то он должен написать в командной строке `do cmd1`,
|
|
|
|
+чтобы выполнить команду "cmd1".
|
|
|
|
+
|
|
|
|
+С помощью ссылок можно организовать повторное использование кода. Например
|
|
|
|
+объявить блок "стандартных" параметров и потом с помощью ссылок вставлять
|
|
|
|
+этот блок во все команды, где параметры повторяются.
|
|
|
|
+
|
|
|
|
|
|
#### Атрибут `restore`
|
|
#### Атрибут `restore`
|
|
|
|
|