[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [YANG] YANG syntax



Hi,

Thank's for the feedback!

Ladislav Lhotka <lhotka at cesnet.cz> wrote:
> Hi,
> 
> here are my comments and questions on YANG syntax and its description in
> the -02 draft:
> 
> - An unquoted + is allowed as a string parameter. I think this is too
> fragile as + can appear in numbers and also as a concatenation operator.
> I suggest to require isolated + to be quoted.

It's not only isolated + signs, but also if the string itself includes
a + sign:
    
    "1 + 2"  // ok
    1 + 2    // nok
    
The simplest way would be to always require a + within a string to be quoted:

  If a string contains any whitespace characters, a semicolon (";"), a
  plus sign ("+"), curly braces ("{ }"), or comment sequences ("//",
  "/*", or "*/"), then it MUST be enclosed within double or single
  quotes.

But that means that:

   default +1;    // nok
   default "+1";  // ok

This would mean that a + sign either in isolation or within a string
must be quoted.

I think I prefer the simple rule.  Any comments?

> - The draft should probably clearly specify that recursive containment
> is not allowed.

Ok.  I'll try to write some text.

> - Can a submodule use definitions from its parent module - automatically
> or via "include"?

No.  You can never include a module (just submodules).


> - Production rules for all statements except module and submodule are
> labelled "<keyword>-stmt". For the sake of consistency, the rules for
> module and submodule should be renamed to module-stmt and
> submodule-stmt.

Fixed.


> - Is it necessary to keep meta-stmts and submodule-meta-stmts distinct?
> Their productions are identical.

No reason.  Fixed.

> - float-value requires a sign ("+/"-") in the exponent, pyang allows
> floats like 6.022E23. Maybe the sign should be made optional?

Yes I think so.  This is supported by the standard strdtoX functions.
Any comments?

> - The "boolean" type in W3C and RELAX NG datatype libraries allow as
> values either true/false or 1/0. Would it be a problem to allow this in
> YANG, too?

I'll pass on this and see if Juergen will comment.

> - I don't really understand the keyref statement and its path
> expression. An example would be helpful.

Do you need more than what's in 8.8.4?

> - bit-stmt - all substatements are optional but braces are required.

Fixed.

> - presence keyword is missing in Table 30 in App. B.

Fixed.

> - unique-arg  should have "1*SP" instead of "1*sp"

Yes, but it is actually valid ABNF (by accident!) since rule names are
case insensitive.

But I think it should be "sep" instead of "1*sp".   That also
allows newlines, just like key-arg.   Alternatively, both key-arg and
unique-arg should use "1*SP", and if you want newlines you can use
string concatenation.


> - descendant-schema-nodeid should be an alternative?
>   descendant-schema-nodeid
>                        = node-identifier /
>                          absolute-schema-nodeid

No, if it is absolute it is not descendant.  descendant-schema-nodeid
means that it is a relative w/o leading dots, i.e. it reference
soemthing below the current point.

> - What is the role of unknown-statement in stmtsep and stmtend?

It covers extension statements.  The grammar must allow e.g.:

  description "bla bla" {
    my-ext:type "cli-help";
  }


/martin
_______________________________________________
YANG mailing list
YANG at ietf.org
https://www.ietf.org/mailman/listinfo/yang