modellang.bnf 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <model> ::=
  2. <statement> ";" <model>
  3. | <statement>
  4. <statement> ::=
  5. <system>
  6. | <behavior>
  7. | <interaction>
  8. | <trigger>
  9. | <init>
  10. <system> ::= "SYSTEM" <systemId> "=" <definitionPattern>
  11. <behavior> ::= "BEHAVIOR" <behaviorId> "=" <definitionPattern>
  12. <interaction> ::= "INTERACTION" <interactionBody>
  13. <trigger> ::= "WHEN" <selectionPatternSans> <codeBlock>
  14. <init> ::= "INIT" <systemId> <codeBlock> | "INIT" <codeBlock>
  15. <definitionPattern> ::=
  16. <alternation>
  17. | <sequence>
  18. <alternation> ::=
  19. <element> "|" <alternation>
  20. | <element> "|" <element>
  21. <sequence> ::=
  22. <element> <sequence>
  23. | <element>
  24. <element> ::=
  25. "(" <definitionPattern> ")" <quantifier>
  26. | <event> <quantifier>
  27. <event> ::=
  28. <identifier>
  29. <quantifier> ::=
  30. "*"
  31. | "+"
  32. | "?"
  33. | "{" integer "}"
  34. | "{" integer "," "}"
  35. | "{" integer "," integer "}"
  36. | empty
  37. <interactionBody> ::=
  38. <interactionJoin>
  39. | <interactionThen>
  40. <interactionJoin> ::=
  41. <selectionPatternSans> <join> <interactionJoin>
  42. | <selectionPatternSans> <join> <selectionPatternSans>
  43. <interactionThen> ::=
  44. <selectionPattern> <then> <interactionThen>
  45. | <selectionPattern> <then> <selectionPattern>
  46. <selectionPattern> ::=
  47. <codeBlock> <systemId> ":" <definitionPattern> <codeBlock>
  48. | <systemId> ":" <definitionPattern> <codeBlock>
  49. | <codeBlock> <systemId> ":" <definitionPattern>
  50. | <selectionPatternSans>
  51. <selectionPatternSans> ::=
  52. <systemId> ":" <definitionPattern>
  53. <join> ::=
  54. "=="
  55. <then> ::=
  56. "->"
  57. <codeBlock> ::=
  58. "{" text <codeBlock> text "}"
  59. | "{" text "}"
  60. <systemId> ::= <identifier>
  61. <behaviorId> ::= <identifier>
  62. <identifier> ::= alphanumString