Expression := Implication
Implication := Disjunction (Implies Disjunction)*
Disjunction := Conjunction ((Or | Xor ) Conjunction)*
Conjunction := Comparison (And Comparison)*
Comparison := BooleanUnit ((Equals| NotEquals) BooleanUnit)*
Negation := Not BooleanUnit
BooleanUnit := Negation | RelationalExpression | BooleanConstant
RelationalExpression := AdditiveExpression ((GreaterThan | GreaterOrEqualTo | LowerThan | LowerOrEqualTo) AdditiveExpression)?
AdditiveExpression := MultiplicativeExpression ((Addition | Substraction) MultiplicativeExpression)*
MultiplicativeExpression:= UnaryExpression (Multiplication UnaryExpression)*
UnaryExpression := (Addition | Substraction)? ("(" Expression ")" | IntegerConstant | Identifier )
And := "and" | "&&"
Or := "or" | "||"
Xor := "xor" | "^"
Implies := "=>"
Equals := "=" | "=="
NotEquals := "not" | "!"
GreaterThan := ">"
GreaterOrEqualTo := ">="
LowerThan := "<"
LowerOrEqualTo := "<="
Addition := "+"
Substraction := "-"
Multiplication := "*"
IntegerConstant := ["0"-"9"]+
BooleanConstant := "true" | "false"
Identifier := ["_","a"-"z","A"-"Z"](["_","a"-"z","A"-"Z", "0"-"9"])*
ResponsibilityAction := Statement+
Statement := Assignment | CompoundStatement | IfStatement
Assignment := Identifier AssignmentOperator Expression StatementTerminator
CompoundStatement := "{" Statement* "}"
IfStatement := If Expression Statement (Else Statement)?
AssignmentOperator := "=" | ":="
If := "if"
Else := "else"
StatementTerminator := ";"
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.