public override void VisitIdentifierName(IdentifierNameSyntax node) { Expression = new IdentifierExpressionCPPModel() { Identifier = node.Identifier.ToString() }; }
public override void VisitParenthesizedExpression(ParenthesizedExpressionSyntax node) { Expression = new ParenthesizedExpressionCPPModel() { Expression = Invoke <ExpressionVisitor>(node.Expression).Expression, }; }
public override void VisitLiteralExpression(LiteralExpressionSyntax node) { Expression = new LiteralExpressionCPPModel() { Value = node.Token.ToString() }; }
public override void VisitPrefixUnaryExpression(PrefixUnaryExpressionSyntax node) { Expression = new PrefixUnaryExpressionCPPModel() { Operand = Invoke <ExpressionVisitor>(node.Operand).Expression, Type = ToUnaryExpressionType(node, node.OperatorToken.ToString()) }; }
public override void VisitCastExpression(CastExpressionSyntax node) { Expression = new CastCPPModel() { Type = TypeResolver.ResolveType(node.Type), Expression = Invoke <ExpressionVisitor>(node.Expression).Expression, }; }
public override void VisitBinaryExpression(BinaryExpressionSyntax node) { Expression = new BinaryExpressionCPPModel() { Left = Invoke <ExpressionVisitor>(node.Left).Expression, Right = Invoke <ExpressionVisitor>(node.Right).Expression, Type = ToBinaryExpressionType(node, node.OperatorToken.ToString()) }; }
public override void VisitElementAccessExpression(ElementAccessExpressionSyntax node) { var member = Invoke <ExpressionVisitor>(node.Expression); var access = node.ArgumentList.Arguments.Select(arg => Invoke <ExpressionVisitor>(arg).Expression); Expression = new ElementAccessCPPModel() { Expression = Invoke <ExpressionVisitor>(node.Expression).Expression, Arguments = node.ArgumentList.Arguments.Select(arg => Invoke <ExpressionVisitor>(arg.Expression).Expression).ToList() }; }
public override void VisitInvocationExpression(InvocationExpressionSyntax node) { var methodInfo = TypeResolver.ResolveMethodInfo(node); Expression = new LocalInvocationCPPModel() { Method = methodInfo.Name, Arguments = node .ArgumentList .Arguments .Select(arg => new ArgumentCPPModel() { Expression = Invoke <ExpressionVisitor>(arg.Expression).Expression }) .ToList() }; }
public override void VisitMemberAccessExpression(MemberAccessExpressionSyntax node) { // check if access to DMA property var identifiers = node.RecursiveFlatIdentifiers(); if (identifiers.Any() && identifiers[0].ToString() == "SOC") { var dmaType = TypeResolver.ResolveType(identifiers[0]); Expression = new IdentifierExpressionCPPModel() { Identifier = $"{dmaType.Namespace}_{dmaType.Name}_{identifiers.Last().Identifier}" }; return; } if (BuiltInValues.IsBuiltInValue(node.ToString())) { var type = TypeResolver.ResolveType(node); if (type == typeof(char)) { Expression = new LiteralExpressionCPPModel() { Value = $"'{BuiltInValues.BuiltInValue(node.ToString())}'" }; } else { Expression = new LiteralExpressionCPPModel() { Value = BuiltInValues.BuiltInValue(node.ToString()).ToString() }; } return; } Unsupported(node, "Unsupported member access expression"); }
public override void VisitObjectCreationExpression(ObjectCreationExpressionSyntax node) { Expression = Invoke <ObjectCreationVisitor>(node).Expression; }