> On 22 Oct 2015, at 14:27, Robert Wilton <[email protected]> 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 <[email protected]> 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
> [email protected]
> https://www.ietf.org/mailman/listinfo/netmod
--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod