Приложение B: Ключевые слова
Каждое зарезервированное ключевое слово в Archlang, разделённое по тому, где оно распознаётся.
Ключевые слова в файлах .arch
| Ключевое слово | Контекст | Эффект | Глава |
|---|---|---|---|
type | Верхний уровень | Объявляет тип | 15 |
in | Заголовок модуля / процесса | Привязывает декларацию к родительскому модулю, объявленному в другом месте | 4, 7 |
labels | Тело | Открывает блок меток | 9 |
required | Тело типа | Обязательный пустой слот — экземпляр должен заполнить или сбросить | 16 |
cascade | Тело типа, модификатор поля | Значение поля растекается к потомкам с семантикой переопределения | 17 |
append | Тело типа, модификатор поля | Значение поля композируется со значениями потомков | 17 |
override | Тело | Заменить унаследованную сущность на вид не-подтипа | 18 |
drop | Тело | Удалить унаследованную сущность из этой области и ниже | 18 |
subscribes | Тело интерфейса | Подключить обработчик к интерфейсу события | 5 |
process | Верхний уровень / тело модуля | Объявляет процесс | 7 |
subprocess | Верхний уровень / тело модуля / тело процесса | Объявляет переиспользуемый подпроцесс | 7 |
do | Тело процесса | Вызвать подпроцесс | 7 |
if, else | Тело процесса | Условная ветвь | 7 |
switch | Тело процесса | Многопутевая ветвь по метке case | 7 |
parallel | Тело процесса | Параллельные ветви | 7 |
each | Тело процесса | Итерация по коллекции | 7 |
try, catch | Тело процесса | Путь обработки ошибки | 7 |
fail, finish | Тело процесса | Завершение процесса с явным исходом | 7 |
view | Верхний уровень | Объявляет проекцию | 8 |
focus | Тело проекции | Включить только узлы, соответствующие метке | 8 |
group | Тело проекции | Группировать по метке (используется с by) | 8 |
by | Тело проекции | Спутник group | 8 |
layout | Тело проекции | Выбрать алгоритм раскладки | 8 |
include | Тело проекции | Включить узлы, соответствующие шаблону glob | 8 |
exclude | Тело проекции | Исключить узлы, соответствующие шаблону glob | 8 |
true, false | Значения полей/меток | Логические литералы | 9 |
Ключевые слова только в файлах package.archspace
| Ключевое слово | Контекст | Эффект | Глава |
|---|---|---|---|
use | Манифест / файл .arch | Импорт типов из другого пакета | 11 |
from | Клауза use | Указывает исходный пакет | 11 |
as | Клауза use | Локальное переименование | 11 |
export | Декларация типа / клауза use | Делает тип видимым для импортёров / реэкспорт | 11, 15 |
dependencies | Манифест | Открывает блок зависимостей | 11 |
name, version и widgets распознаются как имена полей манифеста, но не зарезервированы — они нигде не затеняют идентификаторы.
Ключевые слова, ограниченные контекстом
Некоторые ключевые слова разрешены только в определённых телах. Использование вне контекста — ошибка разбора.
| Ключевое слово | Разрешено только в |
|---|---|
if, else, switch, each, try, catch, parallel, do, fail, finish | Телах процессов |
focus, group, by, layout, include, exclude | Телах проекций |
subscribes | Телах интерфейсов |
cascade, append, required | Телах типов |
Что не является ключевым словом
Пользовательские виды — service, database, command, query и т.д. — не ключевые слова. Это идентификаторы, вводимые декларациями type module … / type facet … / type interface …. Разборщик контекстно сопоставляет их с активным реестром видов.
Три базовых вида module, facet, interface тоже не ключевые слова. Они выступают как родительские виды в type module service { … } и могут использоваться напрямую для объявления обобщённых экземпляров.
Имена зарезервированных ключевых слов
Пользовательские виды, поля и метки не могут переиспользовать зарезервированные ключевые слова. Попытка объявить type module process { ... } или использовать required как имя метки — ошибка разбора.
См. также
- Приложение A: Грамматика — EBNF для каждой конструкции
- Приложение C: Виды стандартной библиотеки — встроенные виды (не ключевые слова, но доступны по соглашению)