| 1234567891011121314151617181920212223242526272829303132333435 |
- // a simpler action language for the MvK
- grammar{
- start: NEWLINE? modeldecl+;
- modeldecl: name name? (((LBRA name RBRA)? ASSIGN (name | value)) | (LPAR name COMMA name RPAR))? NEWLINE (indent modeldecl)#*;
- name: IDENTIFIER;
- value: DEC_NUMBER | FLOAT_NUMBER | STRVALUE;
- indent: TAB;
- tokens{
- // TOKENS (written in CAPS)
- IDENTIFIER: '[a-zA-Z_][a-zA-Z_0-9]*' @Msg 'Identifier';
- COMMA: ',';
- LPAR: '\(';
- RPAR: '\)';
- LBRA: '\[';
- RBRA: '\]';
- ASSIGN: '=';
- DEC_NUMBER: '[+-]?(0|[1-9]\d*[lL]?)';
- FLOAT_NUMBER: '[+-]?((\d+\.\d*|\.\d+)([eE][-+]?\d+)?|\d+[eE][-+]?\d+)';
- STRVALUE : 'u?r?("(?!"").*?(?<!\\)(\\\\)*?"|\'(?!\'\').*?(?<!\\)(\\\\)*?\')';
- NEWLINE: '\r?\n+' @Msg 'Newline';
- WS: '[ ]+' @Msg 'Whitespace' @Impl;
- TAB: '\t' @Msg 'Tabspace';
- }
- }
|