modellanguage.g 886 B

1234567891011121314151617181920212223242526272829303132333435
  1. // a simpler action language for the MvK
  2. grammar{
  3. start: NEWLINE? modeldecl+;
  4. modeldecl: name name? (((LBRA name RBRA)? ASSIGN (name | value)) | (LPAR name COMMA name RPAR))? NEWLINE (indent modeldecl)#*;
  5. name: IDENTIFIER;
  6. value: DEC_NUMBER | FLOAT_NUMBER | STRVALUE;
  7. indent: TAB;
  8. tokens{
  9. // TOKENS (written in CAPS)
  10. IDENTIFIER: '[a-zA-Z_][a-zA-Z_0-9]*' @Msg 'Identifier';
  11. COMMA: ',';
  12. LPAR: '\(';
  13. RPAR: '\)';
  14. LBRA: '\[';
  15. RBRA: '\]';
  16. ASSIGN: '=';
  17. DEC_NUMBER: '[+-]?(0|[1-9]\d*[lL]?)';
  18. FLOAT_NUMBER: '[+-]?((\d+\.\d*|\.\d+)([eE][-+]?\d+)?|\d+[eE][-+]?\d+)';
  19. STRVALUE : 'u?r?("(?!"").*?(?<!\\)(\\\\)*?"|\'(?!\'\').*?(?<!\\)(\\\\)*?\')';
  20. NEWLINE: '\r?\n+' @Msg 'Newline';
  21. WS: '[ ]+' @Msg 'Whitespace' @Impl;
  22. TAB: '\t' @Msg 'Tabspace';
  23. }
  24. }