Browse Source

MPIDE-25: added formal BNF for language

Currently the BNF only describes the language as-is, however it should
be kept up to date with all the features and constructs that are planned
and fully specified.
Austin Meagher 10 năm trước cách đây
mục cha
commit
68e989e0f1
1 tập tin đã thay đổi với 78 bổ sung0 xóa
  1. 78 0
      docs/modellang.bnf

+ 78 - 0
docs/modellang.bnf

@@ -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