Skip to content

Синтаксис

Система синтаксиса разбирает атрибут syntax аннотации @InkCommand в типизированную спецификацию, используемую для валидации и чтения аргументов тега.

Грамматика синтаксиса

ФорматТипОписание
<name:type>Обязательный позиционныйДолжен быть указан, по порядку
(name:type)Необязательный позиционныйМожно опустить
[name:type=default]Именованный необязательныйПередаётся как name=value
[--flagname]Булев флагПрисутствует = true, отсутствует = false

Доступные типы (ArgType): STRING, INT, FLOAT, BOOLEAN

Пример:

"shake <amplitude:float> [duration:float=1.0] [--loop]"

SyntaxParser

java
CommandSpec spec = SyntaxParser.parse(keyword, syntaxDeclaration);

CommandSpec

Скомпилированное представление объявления синтаксиса. Разбирает список токенов по нему:

java
ParsedCommand command = spec.parse(tokens);

ParsedCommand

Типизированный снимок разобранной команды. Передаётся в doValidate, сохраните его как поле для использования в doExecute. См. Чтение аргументов.

Определения аргументов

ЗаписьПоляПредставляет
ArgDefname, ArgTypeОбязательный позиционный
NamedArgDefname, ArgType, defaultValueИменованный необязательный
FlagDefnameБулев флаг