Closed chharvey closed 4 years ago
Assignment and update statement using boolean operators. Dependent on #15.
Lexical:
Punctuator ::= PunctuatorOne | PunctuatorTwo | PunctuatorThree PunctuatorThree ::= "||=" | "!|=" | "&&=" | "!&="
Syntax:
AssignmentOperator ::= "||=" | "!|=" | "&&=" | "!&=" | "^=" | "*=" | "/=" | "+=" | "-="
Semantics:
Decorate(StatementAssignment ::= ExpressionAssignable "||=" Expression ";") := SemanticAssignment {} [ SemanticAssignee {} [ Decorate(ExpressionAssignable), ], SemanticAssigned {} [ SemanticExpression {operator: "if-then-else"} [ SemanticCondition {} [ Decorate(ExpressionAssignable), ], SemanticConsequent {} [ Decorate(ExpressionAssignable), ], SemanticAlternative {} [ Decorate(Expression), ], ], ], ] Decorate(StatementAssignment ::= ExpressionAssignable "!|=" Expression ";") := SemanticAssignment {} [ SemanticAssignee {} [ Decorate(ExpressionAssignable), ], SemanticAssigned {} [ SemanticExpression {operator: "!"} [ SemanticExpression {operator: "if-then-else"} [ SemanticCondition {} [ Decorate(ExpressionAssignable), ], SemanticConsequent {} [ Decorate(ExpressionAssignable), ], SemanticAlternative {} [ Decorate(Expression), ], ], ], ], ] Decorate(StatementAssignment ::= ExpressionAssignable "&&=" Expression ";") := SemanticAssignment {} [ SemanticAssignee {} [ Decorate(ExpressionAssignable), ], SemanticAssigned {} [ SemanticExpression {operator: "if-then-else"} [ SemanticCondition {} [ Decorate(ExpressionAssignable), ], SemanticConsequent {} [ Decorate(Expression), ], SemanticAlternative {} [ Decorate(ExpressionAssignable), ], ], ], ] Decorate(StatementAssignment ::= ExpressionAssignable "!&=" Expression ";") := SemanticAssignment {} [ SemanticAssignee {} [ Decorate(ExpressionAssignable), ], SemanticAssigned {} [ SemanticExpression {operator: "!"} [ SemanticExpression {operator: "if-then-else"} [ SemanticCondition {} [ Decorate(ExpressionAssignable), ], SemanticConsequent {} [ Decorate(Expression), ], SemanticAlternative {} [ Decorate(ExpressionAssignable), ], ], ], ], ]
Syntax sugar:
a ||= b; \ sugar for `a = a || (b);` a !|= b; \ sugar for `a = a !| (b);` a &&= b; \ sugar for `a = a && (b);` a !&= b; \ sugar for `a = a !& (b);`
closing as duplicate of #15
Assignment and update statement using boolean operators. Dependent on #15.
Lexical:
Syntax:
Semantics:
Syntax sugar: