| all | = | [ 0 .. 127 ] |
| digit | = | [ '0' .. '9' ] |
| non_digit | = | [ [ [ 'a' .. 'z' ] + [ 'A' .. 'Z' ] ] + '_' ] |
| double | = | ( '+' | '-' ) ? ( digit * ) '.' ( digit + ) ( ( 'e' | 'E' ) ( '+' | '-' ) ? digit + ) ? |
| integer | = | ( '+' | '-' ) ? digit + |
| tab | = | 9 |
| cr | = | 13 |
| lf | = | 10 |
| eol | = | cr lf | cr | lf |
| not_cr_lf | = | [ all - [ cr + lf ] ] |
| not_star | = | [ all - '*' ] |
| not_star_slash | = | [ not_star - '/' ] |
| short_comment | = | '//' not_cr_lf * eol |
| long_comment | = | '/*' not_star * '*' + ( not_star_slash not_star * '*' + ) * '/' |
| comment | = | long_comment | short_comment |
| simple_escape_sequence | = | '\"' | '\\' | '\b' | '\f' | '\n' | '\r' | '\t' |
| octal_digit | = | [ '0' .. '7' ] |
| octal_escape_sequence | = | '\' octal_digit octal_digit ? octal_digit ? |
| hexadecimal_digit | = | [ digit + [ [ 'a' .. 'f' ] + [ 'A' .. 'F' ] ] ] |
| hexadecimal_escape_sequence | = | '\x' hexadecimal_digit + |
| escape_sequence | = | simple_escape_sequence | octal_escape_sequence | hexadecimal_escape_sequence |
| s_char | = | [ all - [ '"' + [ '$' + [ '\' + [ 10 + 13 ] ] ] ] ] | escape_sequence |
| s_char_sequence | = | s_char * |
| blank | = | ( ' ' | tab | eol ) | |
| comment | = | comment | |
| l_bkt | = | '{' | |
| r_bkt | = | '}' | |
| l_par | = | '(' | |
| r_par | = | ')' | |
| l_sqr | = | '[' | |
| r_sqr | = | ']' | |
| semicolon | = | ';' | |
| colon | = | ':' | |
| comma | = | ',' | |
| s_qte | = | ''' | |
| plus | = | '+' | |
| equal | = | '=' | |
| dot | = | '.' | |
| graph | = | 'graph' | |
| attribute | = | 'attribute' | |
| basedon | = | 'basedon' | |
| interface | = | 'interface' | |
| parameter | = | 'parameter' | |
| refinement | = | 'refinement' | |
| topology | = | 'topology' | |
| actor | = | 'actor' | |
| inputs | = | 'inputs' | |
| outputs | = | 'outputs' | |
| nodes | = | 'nodes' | |
| edges | = | 'edges' | |
| integer | = | integer | |
| double | = | double | |
| true | = | 'true' | |
| false | = | 'false' | |
| string | = | '"' s_char_sequence '"' | |
| string_tail | = | '+' ( ' ' | eol | tab ) * '"' s_char_sequence '"' | |
| identifier | = | non_digit ( digit | non_digit ) * | |
| string_identifier | = | '$' s_char_sequence '$' |