modelling_raw.g 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. grammar{
  2. start: (include_files | model | NEWLINE)+;
  3. include_files: INCLUDE STRVALUE NEWLINE;
  4. model: MODEL_ID MODEL_ID NEWLINE? LCURLY NEWLINE? (model_element)* RCURLY;
  5. model_element: MODEL_ID MODEL_ID? inheritance? (LPAR MODEL_ID COMMA MODEL_ID RPAR)? NEWLINE? LCURLY NEWLINE? (model_attribute)* RCURLY NEWLINE?;
  6. inheritance: COLON MODEL_ID (COMMA MODEL_ID)*;
  7. model_attribute : ((LCURLY MODEL_ID RCURLY)? model_element)
  8. | (MODEL_ID COLON MODEL_ID (LCURLY NEWLINE? model_attr_instance* RCURLY)? NEWLINE?)
  9. | (model_attr_instance)
  10. | (NEWLINE? DOLLAR ANYTHING_EXCEPT_DOLLAR DOLLAR NEWLINE?);
  11. model_attr_instance: (MODEL_ID ASSIGN value NEWLINE?)
  12. | (MODEL_ID ASSIGN NEWLINE? DOLLAR ANYTHING_EXCEPT_DOLLAR DOLLAR NEWLINE?);
  13. value
  14. : DEC_NUMBER
  15. | FLOAT_NUMBER
  16. | TRUE
  17. | FALSE
  18. | STRVALUE;
  19. tokens{
  20. MODEL_ID: '[a-zA-Z_][a-zA-Z_0-9]*';
  21. MV_URL: '[a-zA-Z_0-9/]*';
  22. LCURLY: '{';
  23. RCURLY: '}';
  24. NEWLINE: '(\r?\n)+';
  25. DEC_NUMBER: '[+-]?(0|[1-9]\d*[lL]?)';
  26. FLOAT_NUMBER: '[+-]?((\d+\.\d*|\.\d+)([eE][-+]?\d+)?|\d+[eE][-+]?\d+)';
  27. STRVALUE: 'u?r?("(?!"").*?(?<!\\)(\\\\)*?"|\'(?!\'\').*?(?<!\\)(\\\\)*?\')';
  28. TRUE: 'True';
  29. FALSE: 'False';
  30. ASSIGN: '=';
  31. DOLLAR: '\$';
  32. WS: '[ ]+' @Impl;
  33. TAB: '[\t]+' @Impl;
  34. COLON : ':';
  35. LPAR: '\(';
  36. RPAR: '\)';
  37. COMMA: ',';
  38. ANYTHING_EXCEPT_DOLLAR: '[^$]*';
  39. INCLUDE: 'include';
  40. EXCLAMATION: '!';
  41. }
  42. }