private void TestAssignment(AssignmentOperationKind kind) { string text = "$a " + Operation.GetText(kind) + " 42"; var expr = NSScript.ParseExpression(text) as AssignmentExpression; Assert.NotNull(expr); Assert.Equal(SyntaxNodeKind.AssignmentExpression, expr.Kind); Assert.Equal(kind, expr.OperationKind); var target = expr.Target as Variable; Assert.NotNull(target); Assert.Equal("$a", target.Name.FullName); var value = expr.Value as Literal; Assert.NotNull(value); Assert.Equal(42, value.Value.RawValue); }
public static string GetText(AssignmentOperationKind assignmentOperationKind) { switch (assignmentOperationKind) { case AssignmentOperationKind.SimpleAssignment: return("="); case AssignmentOperationKind.AddAssignment: return("+="); case AssignmentOperationKind.SubtractAssignment: return("-="); case AssignmentOperationKind.MultiplyAssignment: return("*="); case AssignmentOperationKind.DivideAssignment: return("/="); default: return(string.Empty); } }
public static AssignmentExpression Assignment(Variable target, AssignmentOperationKind operationKind, Expression value) => new AssignmentExpression(target, operationKind, value);
internal AssignmentExpression(Variable target, AssignmentOperationKind operationKind, Expression value) { Target = target; OperationKind = operationKind; Value = value; }
private static Precedence GetOperationPrecedence(AssignmentOperationKind operationKind) => Precedence.Assignment;