modellang.bnf 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <model> ::=
  2. <statement> ";" <model>
  3. | <statement>
  4. <statement> ::=
  5. <system>
  6. | <behavior>
  7. | <interaction>
  8. | <trigger>
  9. <system> ::= "SYSTEM" <systemId> "=" <definitionPattern>
  10. <behavior> ::= "BEHAVIOR" <behaviorId> "=" <definitionPattern>
  11. <interaction> ::= "INTERACTION" <interactionBody>
  12. <trigger> ::= "WHEN" <selectionPattern> <triggerBody>
  13. <definitionPattern> ::=
  14. <alternation>
  15. | <sequence>
  16. <alternation> ::=
  17. <sequence> "|" <alternation>
  18. | <sequence> "|" <sequence>
  19. <sequence> ::=
  20. <element> <sequence>
  21. | <element>
  22. <element> ::=
  23. "(" <definitionPattern> ")" <quantifier>
  24. | <event> <quantifier>
  25. <event> ::= <identifier>
  26. <quantifier> ::=
  27. "*"
  28. | "+"
  29. | "?"
  30. | "{" integer "}"
  31. | "{" integer "," "}"
  32. | "{" integer "," integer "}"
  33. | empty
  34. <interactionBody> ::=
  35. <interactionOperand> <interactionOperator> <interactionBody>
  36. | <interactionOperand> <interactionOperator> <interactionOperand>
  37. <interactionOperand> ::=
  38. <selectionPattern>
  39. | <expression>
  40. <interactionOperator> ::=
  41. "->"
  42. | "=="
  43. <selectionPattern> ::=
  44. <systemId> ":" <definitionPattern>
  45. <expression> ::=
  46. <term> <expressionOperator> <expression>
  47. | <term>
  48. <expressionOperator> ::=
  49. ">"
  50. | "<"
  51. | ">="
  52. | "<="
  53. | "=="
  54. <term> ::=
  55. integer
  56. | string
  57. | property
  58. <triggerBody> ::= "{" triggerClause "}" // TODO: expand on triggerClause implementation
  59. <systemId> ::= <identifier>
  60. <behaviorId> ::= <identifier>
  61. <identifier> ::= alphanumString