Monday, 8 September 2014

Comma separated list

There are few places in MIB sytax that allows comma separated list (we can even generalized it by some character delimited list), here is one snippet of rtc1213 mib file.


RFC1213-MIB.mib
          IMPORTS
                  mgmt, NetworkAddress, IpAddress, Counter, Gauge,
                          TimeTicks
                      FROM RFC1155-SMI
                  OBJECT-TYPE
                          FROM RFC-1212;
For this I have used following parsing rules:

Mib.xtext
Import:
 'IMPORTS' defs+=ImpDef+ ';';

ImpDef:
 (objects+=Object ','?)+ 'FROM' def=ID;

Object:
 name=ID;


I have noticed quite a few tutorial sites would write it as
Mib.xtext
Import:
 'IMPORTS' defs+=ImpDef+ ';';

ImpDef:
 objects+=Object (',' objects+=Object)* 'FROM' def=ID;

Object:
 name=ID;

And they are right, my rule even thought looks simple but its not bullet proof; in fact it allows incorrect syntax - "mgmt NetworkAddress ...", I have fixed these occurrences through out my grammar file (6 places), next time when I add grammar snippet, you will noticed it of the updated version.

1 comment: