Subject: Re: [rohc] ROHC FN review

From: Carsten Bormann <[email-masked]>
Date: Tue, 7 Nov 2006 18:19:17 -0800

I'm still in the process of validating the ABNF.
(Again, I have uploaded to the URI I gave a current version 1.7 with  
a couple of minor changes.)

While checking the ABNF against TCP-13, I ran into the following  
little issue:

draft-ietf-rohc-formal-notation-11.txt says:

4.2.  Identifiers
...
	   All identifiers must start with an alphabetic character.
...
4.12.3.1.  Naming Convention

    When compressed formats are defined, they must be defined using the
    reserved word "COMPRESSED".  Similarly uncompressed formats must be
    defined using the reserved word "UNCOMPRESSED".  After each of these
    keywords, a name may be given for the format.  If no name is given
    then the name of the format is empty.

    Format names follow the syntactic rules of identifiers, as described
    in Section 4.2.

draft-ietf-rohc-tcp-13.txt says:

variable_length_32_enc(flag)
{
...
    COMPRESSED 8_bit {
      field =:= lsb(8, 63) [ 8 ];
      ENFORCE(flag == 1);
    }

    COMPRESSED 16_bit {
      field =:= lsb(16, 16383) [ 16 ];
      ENFORCE(flag == 2);
    }
...

Should we fix this in FN (by redefining identifiers) or in TCP (by  
not using identifiers like "8_bit")?

Apart from this, my ABNF now accepts TCP-13.  Will now look at other  
ROHCv2 profiles.

Gruesse, Carsten

> I got some comments on the ABNF and have uploaded a new version  
> (1.4) to this place.
>
> Apart from the ABNF, my review comments look quite similar to those  
> from Mark, by the way.
>
> Gruesse, Carsten
>
>
> _______________________________________________
> Rohc mailing list
> [email-masked]
> https://www1.ietf.org/mailman/listinfo/rohc

_______________________________________________
Rohc mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rohc

---

From: Carsten Bormann <[email-masked]>
Date: Tue, 7 Nov 2006 18:46:20 -0800

ROHCv2 was too easy -- validates, too.

As the grammar is distributed throughout the document, I have  
attached a consolidated version.
I would like to see this (or some form of this) in the FN spec, after  
we have clarified the issues brought up by Mark and me (and other  
reviewers, I hope).

Gruesse, Carsten

ALPHA = %x41-5A / %x61-7A
C = %d67
COMMENT = "//" *(SP / HTAB / VCHAR) CRLF
COMPRESSED = %d67.79.77.80.82.69.83.83.69.68
CONTROL = %d67.79.78.84.82.79.76
CRLF = %x0A / %x0D.0A
DEFAULT = %d68.69.70.65.85.76.84
DIGIT = %x30-39
ENFORCE = %d69.78.70.79.82.67.69
HTAB = %x09
INITIAL = %d73.78.73.84.73.65.76
LENGTH = %d76.69.78.71.84.72
NL = COMMENT / CRLF
S = *WS
SP = %x20
STRCHAR = SP / HTAB / %x21 / %x23-7E
STRQ = %x22
THIS = %d84.72.73.83
U = %d85
UNCOMPRESSED = %d85.78.67.79.77.80.82.69.83.83.69.68
UPCASE = %x41-5A
VALUE = %d86.65.76.85.69
VARIABLE = %d86.65.82.73.65.66.76.69
VCHAR = %x21-7E
WS = SP / HTAB / NL
attname = ( U / C ) ( LENGTH / VALUE )
attref = fieldnameref "." attname
constdef = constname S "=" S expn S ";"
constname = UPCASE *(UPCASE / DIGIT / "_")
encspec = "'" *("0"/"1") "'" / id [ S "(" S expn S *( "," S expn S )  
")"]
enforcer = ENFORCE S "(" S expn S ")" S ";"
expn = *(expnc S "?" S expn S ":" S ) expnc
expn0 = "(" S expn S ")" / VARIABLE
expn1 = expn0 / attref / constname / litval / id
expn2 = [("+"/"-"/"!"/"#") S] expn1
expn3 = expn2 [S "^" S expn3]
expn4 = *(expn3 S ("*"/"/"/"%") S) expn3
expn5 = *(expn4 S ("+"/"-") S) expn4
expn6 = expn5
expn7 = *(expn6 S ("<"/"<="/">"/">=") S) expn6
expn8 = *(expn7 S ("=="/"!=") S) expn7
expn9 = expn8
expna = expn9
expnb = *(expna S "&&" S) expna
expnc = *(expnb S "||" S) expnb
false = %d102.97.108.115.101
fielddef = fieldgroup S ["=:=" S encspec S] [lenspec S] ";"
fieldgroup = fieldname *( S ":" S fieldname )
fieldname = id
fieldnameref = fieldname / THIS
fnspec = S *(constdef S) [globctl S] 1*(methdef S)
formatdef = formhead S formbody
formbody = "{" S *((fielddef/enforcer) S) "}"
formhead = UNCOMPRESSED [ 1*WS id ] / COMPRESSED [ 1*WS id ] /  
CONTROL / INITIAL / DEFAULT
globctl = CONTROL S formbody
id = ALPHA *(ALPHA / DIGIT / "_")
lenspec = "[" S expn S *("," S expn S) "]"
litval = ["-"] "0b" 1*("0"/"1") / ["-"] "0x" 1* 
(DIGIT/"a"/"b"/"c"/"d"/"e"/"f") / ["-"] 1*DIGIT / false / true
methdef = id S [parmlist S] "{" S 1*(formatdef S) "}" / id S  
[parmlist S] STRQ *STRCHAR STRQ S ";"
parmlist = "(" S id S *( "," S id S ) ")"
true = %d116.114.117.101

---

From: "Ghyslain Pelletier \(LU/EAB\)" <[email-masked]>
Date: Thu, 9 Nov 2006 14:44:59 +0100

Carsten, all,

I'd like to propose the following text to address the issue of the
syntactic rule for the "empty" identifier.

4.12.3.1  Naming Convention

   When compressed formats are defined, they must be defined using the
   reserved word "COMPRESSED".  Similarly uncompressed formats must be
   defined using the reserved word "UNCOMPRESSED".  After each of these
   keywords, a name may be given for the format.  If no name is given to
   the format, the name of the format is empty.

   Format names, except for the case where the name is empty, follow the
   syntactic rules of identifiers as described in Section 4.2.

   Format names must be unique within the scope of the encoding method
   to which they belong, except for the empty name which may be used for
   one "COMPRESSED" and one "UNCOMPRESSED" format.

The reason ia that I am not very keen on making UNCOMPRESSED, COMPRESSED
different than INITIAL, DEFAULT and CONTROL keywords in making them
overloaded to identifiers at times. I'd rather make the empty format an
exception to the syntactic rule.

///Ghyslain

Carsten Bormann wrote:
> (Again, I have uploaded to the URI I gave a current version
> 1.7 with a couple of minor changes.)
> 
> While checking the ABNF against TCP-13, I ran into the
> following little issue:
> 
> 	   All identifiers must start with an alphabetic character. ...
> Should we fix this in FN (by redefining identifiers) or in
> TCP (by not using identifiers like "8_bit")?
>

---

From: Carsten Bormann <[email-masked]>
Date: Thu, 9 Nov 2006 07:31:44 -0800

On Nov 09 2006, at 05:44, Ghyslain Pelletier ((LU/EAB)) wrote:

> overloaded to identifiers at times.

The format spec identifiers are not used in FN; this is just about  
the conceptual interface.  Empty identifiers (which are also allowed  
to conflict in exactly one case) strike me as much worse than just  
saying that COMPRESSED and UNCOMPRESSED are the default identifiers  
for formats.
(Note that DEFAULT and CONTROL are not formats, they contribute to  
formats.  INITIAL is weird anyway.)

Gruesse, Carsten

---

From: "Ghyslain Pelletier \(LU/EAB\)" <[email-masked]>
Date: Thu, 9 Nov 2006 16:39:39 +0100

Is this really important?

This looks more like the beginning of a philosophical discussion than
something actually useful.

///Ghyslain

Carsten Bormann wrote:
>> The reason ia that I am not very keen on making UNCOMPRESSED,
>> COMPRESSED different than INITIAL, DEFAULT and CONTROL keywords in
>> making them overloaded to identifiers at times.
> 
> The format spec identifiers are not used in FN; this is just
> about the conceptual interface.  Empty identifiers (which are
> also allowed to conflict in exactly one case) strike me as
> much worse than just saying that COMPRESSED and UNCOMPRESSED
> are the default identifiers for formats.
> (Note that DEFAULT and CONTROL are not formats, they
> contribute to formats.  INITIAL is weird anyway.)
> 
> Gruesse, Carsten

---

From: Carsten Bormann <[email-masked]>
Date: Thu, 9 Nov 2006 08:37:38 -0800

> Is this really important?

(Names for UNCOMPRESSED and COMPRESSED formats without ID.)

It becomes important when tools start making use of FN and don't  
agree on how to call the formats.
(The identifiers are not used in FN itself, so it's definitely not  
important from a spec-only point of view.)

Gruesse, Carsten