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 )*
;