Почему листовой узел с типом имени не работает в модели ян?

У меня есть эта простая модель Ян

leaf type {
    type string;
    description "some description";
}

Это не работает. Может кто-нибудь объяснить, недействительна ли строка «тип» для имени листа в ян?

pyang считает его допустимым конечным значением.

pzk 08.04.2019 16:37

Попробуйте заключить аргумент в кавычки в качестве возможного обходного пути. Инструмент, который предотвращает использование такого аргумента, не соответствует RFC7950/RFC6020.

predi 10.04.2019 08:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
333
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Аргумент оператора leaf должен быть идентификатором, и нет ограничений, запрещающих использование ключевых слов YANG там, где ожидается идентификатор (все встроенные ключевые слова также являются идентификаторами). И leaf type {...}, и leaf leaf {...} являются допустимыми операторами YANG.

The "leaf" statement is used to define a leaf node in the schema tree. It takes one argument, which is an identifier, followed by a block of substatements that holds detailed leaf information.

RFC7950, Section 7.6

Вот что говорится в спецификации об идентификаторах:

Identifiers are used to identify different kinds of YANG items by name. Each identifier starts with an uppercase or lowercase ASCII letter or an underscore character, followed by zero or more ASCII letters, digits, underscore characters, hyphens, and dots. Implementations MUST support identifiers up to 64 characters in length and MAY support longer identifiers. Identifiers are case sensitive. The identifier syntax is formally defined by the rule "identifier" in Section 14. Identifiers can be specified as quoted or unquoted strings.

RFC7950, Section 6.2

Упомянутое выше грамматическое правило:

identifier          = (ALPHA / "_")
                     *(ALPHA / DIGIT / "_" / "-" / ".")

Вот что он говорит о пространстве имен операторов leaf (пространство имен налагает требование уникальности имени в пределах своей области действия с целью предотвращения конфликтов имен):

o All leafs, leaf-lists, lists, containers, choices, rpcs, actions, notifications, anydatas, and anyxmls defined (directly or through a "uses" statement) within a parent node or at the top level of the module or its submodules share the same identifier namespace. This namespace is scoped to the parent node or module, unless the parent node is a case node. In that case, the namespace is scoped to the closest ancestor node that is not a case or choice node.

RFC7950, Section 6.2.1

Другие вопросы по теме