The following represents the grammar for the ODLParser class:
Definition of parser ODLParser, which is a subclass of LLkParser. label : ( statement | . ( ~EOL )* EOL )* ( END | ) ; statement : simple_statement | group_statement | object_statement ; simple_statement : ( COMMENT | ) EOL | assignment_statement ( COMMENT | ) EOL | pointer_statement ( COMMENT | ) EOL ; group_statement : "GROUP" nl EQUALS nl IDENTIFIER ( COMMENT | ) EOL ( simple_statement | . ( ~EOL )* EOL )* END_GROUP ( EQUALS IDENTIFIER | ) ( COMMENT | ) EOL ; object_statement : "OBJECT" nl EQUALS nl IDENTIFIER ( COMMENT | ) EOL ( statement | . ( ~EOL )* EOL )* END_OBJECT ( EQUALS IDENTIFIER | ) ( COMMENT | ) EOL ; assignment_statement : ( ELEMENT_IDENT | IDENTIFIER ) nl EQUALS nl value ; pointer_statement : POINT_OPERATOR assignment_statement ; nl : ( EOL )* ; value : scalar_value | sequence_value | set_value ; scalar_value : numeric_value | date_time_value | text_string_value | symbol_value ; sequence_value : sequence_2d | sequence_1d ; set_value : SET_OPENING nl item_list SET_CLOSING ; numeric_value : INTEGER ( UNITS | ) | BASED_INTEGER ( UNITS | ) | REAL ( UNITS | ) ; date_time_value : DATE | DATETIME ; text_string_value : QUOTED ; symbol_value : IDENTIFIER | SYMBOL ; sequence_2d : SEQUENCE_OPENING nl sequence_list SEQUENCE_CLOSING ; sequence_1d : SEQUENCE_OPENING nl scalar_list SEQUENCE_CLOSING ; scalar_list : | scalar_value nl ( ( LIST_SEPARATOR nl | ) scalar_value nl )* ; sequence_list : | sequence_1d nl ( ( LIST_SEPARATOR nl | ) sequence_1d nl )* ; item_list : | scalar_value nl ( ( LIST_SEPARATOR nl | ) scalar_value nl )* ;