> On 22 Oct 2015, at 14:27, Robert Wilton <rwil...@cisco.com> wrote:
> 
> Hi Martin,
> 
> I have a couple more minor queries/observations as I work through some of the 
> details of ABNF grammar:
> 
> 1. For the module-stmt rule below, to be strictly correct, should it have a 
> comment stating that the statements in any of the "*-stmts" blocks can appear 
> in any order?  Or is the intention that the "*-stmt" blocks must strictly be 
> in the order defined by the ABNF? If the latter statement is true then does 
> any of the text in 7.1 need to be strengthened to explicitly state this?

I understand the order is fixed in this case.

> 
> module-stmt         = optsep module-keyword sep identifier-arg-str
>                         optsep
>                         "{" stmtsep
>                             module-header-stmts
>                             linkage-stmts
>                             meta-stmts
>                             revision-stmts
>                             body-stmts
>                         "}" optsep
> 
> 
> 2. Similarly for import-stmt.  Should this have a comment indicating that 
> prefix-stmt or revision-date-stmt can appear in any order?
> 
>   import-stmt         = import-keyword sep identifier-arg-str optsep
>                         "{" stmtsep
>                             prefix-stmt
>                             [revision-date-stmt]
>                         "}" stmtsep

Here it IMO makes little sense to require fixed order.

Lada

> 
> 
> On a practical note, it seems that YANG allowing various statements to be in 
> any arbitrary order makes writing a parser quite a lot more complex and less 
> efficient than writing a parser that only accepts YANG modules that have been 
> written in the canonical order.
> 
> Thanks,
> Rob
> 
> 
> On 14/10/2015 19:48, Robert Wilton wrote:
>> 
>> 
>> On 14/10/2015 18:14, Martin Bjorklund wrote:
>>> Robert Wilton <rwil...@cisco.com> wrote:
>>>> Hi Martin,
>>>> 
>>>> I was looking at the YANG ABNF grammar a bit more last night (to see
>>>> how hard it would be to write a parser for it) and I had a couple more
>>>> observations.  Apologies that this is after the WG last call ...
>>>> 
>>>> 1. [Trivial] The indentation of the range statement in 9.3.5 looks
>>>> wrong.
>>>> 
>>>> 9.3.5. Usage Example
>>>> 
>>>>      typedef my-decimal {
>>>>        type decimal64 {
>>>>          fraction-digits 2;
>>>>            range "1 .. 3.14 | 10 | 20..max";
>>>>        }
>>>>      }
>>>> 
>>>> 
>>>> I presume that it should be:
>>>> 
>>>> 9.3.5. Usage Example
>>>> 
>>>>      typedef my-decimal {
>>>>        type decimal64 {
>>>>          fraction-digits 2;
>>>>          range "1 .. 3.14 | 10 | 20..max";
>>>>        }
>>>>      }
>>> Fixed.
>>> 
>>>> 2.  The description of yang-char (around page 186) doesn't seem to be
>>>> quite accurate (relative to description of legal characters in 6. YANG
>>>> Syntax), and given that it excludes character values outside the
>>>> unicode range.
>>> Hmm, which characters are outside the unicode range?
>> I was thinking of anything above 0xFFFF, but it looks like my definition 
>> (and possibly quite a few others on the Internet) of Unicode vs UTF-16 is 
>> out of date.
>> 
>>> 
>>>>    ;; any Unicode character including tab, carriage return, and line
>>>>    ;; feed, but excluding the other C0 control characters, the surrogate
>>>>    ;; blocks, and the noncharacters.
>>>>    yang-char = %x9 / %xA / %xD / %x20-D7FF /
>>>>    ...
>>>> 
>>>> 
>>>> Should this be:
>>>> 
>>>>    ;; any Unicode or IOS/IEC 10646 character including tab, carriage 
>>>> return,
>>>>    ;; and line
>>>>    ;; feed, but excluding the other C0 control characters, the surrogate
>>>>    ;; blocks, and the noncharacters.
>>>>    yang-char = %x9 / %xA / %xD / %x20-D7FF /
>>> I think this would be ok.
>>> 
>>>> 3. There are lots of comments where "these stmts can appear in any
>>>> order", e.g.
>>>> 
>>>>    linkageStmts       = ;; these stmts can appear in any order
>>>>                          *importStmt
>>>>                          *includeStmt
>>>> 
>>>> Am I right in interpreting that there can be any number of import and
>>>> include statements and they can be interleaved in any arbitrary
>>>> order?
>>> Yes.
>>> 
>>>> E.g. this specific example (but not in the general case) could equally
>>>> have been written *(importStmt / includeStmt).
>>> Well, the grammar defines the canonical order.  With the alternative
>>> rule above, the canonical order would be different.
>> Thanks for the clarification,
>> Rob
>> 
>>> 
>>> 
>>> /martin
>>> .
>>> 
>> 
> 
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C




_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to