|
|
@@ -0,0 +1,78 @@
|
|
|
+<model> ::=
|
|
|
+ <statement> ";" <model>
|
|
|
+ | <statement>
|
|
|
+
|
|
|
+<statement> ::=
|
|
|
+ <system>
|
|
|
+ | <behavior>
|
|
|
+ | <interaction>
|
|
|
+ | <trigger>
|
|
|
+
|
|
|
+<system> ::= "SYSTEM" <systemId> "=" <definitionPattern>
|
|
|
+<behavior> ::= "BEHAVIOR" <behaviorId> "=" <definitionPattern>
|
|
|
+<interaction> ::= "INTERACTION" <interactionBody>
|
|
|
+<trigger> ::= "WHEN" <selectionPattern> <triggerBody>
|
|
|
+
|
|
|
+<definitionPattern> ::=
|
|
|
+ <alternation>
|
|
|
+ | <sequence>
|
|
|
+
|
|
|
+<alternation> ::=
|
|
|
+ <sequence> "|" <alternation>
|
|
|
+ | <sequence> "|" <sequence>
|
|
|
+
|
|
|
+<sequence> ::=
|
|
|
+ <element> <sequence>
|
|
|
+ | <element>
|
|
|
+
|
|
|
+<element> ::=
|
|
|
+ "(" <definitionPattern> ")" <quantifier>
|
|
|
+ | <event> <quantifier>
|
|
|
+
|
|
|
+<event> ::= <identifier>
|
|
|
+
|
|
|
+<quantifier> ::=
|
|
|
+ "*"
|
|
|
+ | "+"
|
|
|
+ | "?"
|
|
|
+ | "{" integer "}"
|
|
|
+ | "{" integer "," "}"
|
|
|
+ | "{" integer "," integer "}"
|
|
|
+ | empty
|
|
|
+
|
|
|
+<interactionBody> ::=
|
|
|
+ <interactionOperand> <interactionOperator> <interactionBody>
|
|
|
+ | <interactionOperand> <interactionOperator> <interactionOperand>
|
|
|
+
|
|
|
+<interactionOperand> ::=
|
|
|
+ <selectionPattern>
|
|
|
+ | <expression>
|
|
|
+
|
|
|
+<interactionOperator> ::=
|
|
|
+ "->"
|
|
|
+ | "=="
|
|
|
+
|
|
|
+<selectionPattern> ::=
|
|
|
+ <systemId> ":" <definitionPattern>
|
|
|
+
|
|
|
+<expression> ::=
|
|
|
+ <term> <expressionOperator> <expression>
|
|
|
+ | <term>
|
|
|
+
|
|
|
+<expressionOperator> ::=
|
|
|
+ ">"
|
|
|
+ | "<"
|
|
|
+ | ">="
|
|
|
+ | "<="
|
|
|
+ | "=="
|
|
|
+
|
|
|
+<term> ::=
|
|
|
+ integer
|
|
|
+ | string
|
|
|
+ | property
|
|
|
+
|
|
|
+<triggerBody> ::= "{" triggerClause "}" // TODO: expand on triggerClause implementation
|
|
|
+
|
|
|
+<systemId> ::= <identifier>
|
|
|
+<behaviorId> ::= <identifier>
|
|
|
+<identifier> ::= alphanumString
|