public override void VisitAssignmentExpression(AssignmentExpressionSyntax node) { var assign = new AssignmentExpressionCPPModel() { Left = Invoke <ExpressionVisitor>(node.Left).Expression, Right = Invoke <ExpressionVisitor>(node.Right).Expression }; var assignKind = (SyntaxKind)node.RawKind; Dictionary <SyntaxKind, AssignType> assignTypes = new Dictionary <SyntaxKind, AssignType>() { { SyntaxKind.SimpleAssignmentExpression, AssignType.Equals }, { SyntaxKind.AddAssignmentExpression, AssignType.PlusEquals }, { SyntaxKind.SubtractAssignmentExpression, AssignType.MinusEquals }, { SyntaxKind.MultiplyAssignmentExpression, AssignType.MultEquals }, { SyntaxKind.DivideAssignmentExpression, AssignType.DivEquals }, }; if (!assignTypes.ContainsKey(assignKind)) { Unsupported(node, $"Assignment kind not supported"); } assign.Type = assignTypes[assignKind]; Context.MembersContainer.Members.Add(assign); }
public override void VisitAssignmentExpressionCPPModel(AssignmentExpressionCPPModel model) { var left = Invoke <ExpressionBuilder>(model.Left).Expression; var right = Invoke <ExpressionBuilder>(model.Right).Expression; var assignType = new Dictionary <AssignType, string>() { { AssignType.Equals, "=" }, { AssignType.PlusEquals, "+=" }, { AssignType.MinusEquals, "-=" }, { AssignType.MultEquals, "*=" }, { AssignType.DivEquals, "/=" }, }; if (!assignType.ContainsKey(model.Type)) { throw new Exception($"Assign type {model.Type} is not supported"); } AppendLine($"{left} {assignType[model.Type]} {right};"); }