Перейти к содержимому

Приложение 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Тело процессаМногопутевая ветвь по метке case7
parallelТело процессаПараллельные ветви7
eachТело процессаИтерация по коллекции7
try, catchТело процессаПуть обработки ошибки7
fail, finishТело процессаЗавершение процесса с явным исходом7
viewВерхний уровеньОбъявляет проекцию8
focusТело проекцииВключить только узлы, соответствующие метке8
groupТело проекцииГруппировать по метке (используется с by)8
byТело проекцииСпутник group8
layoutТело проекцииВыбрать алгоритм раскладки8
includeТело проекцииВключить узлы, соответствующие шаблону glob8
excludeТело проекцииИсключить узлы, соответствующие шаблону glob8
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 как имя метки — ошибка разбора.

См. также