示例#1
0
 public ElementAccessSharpnode(ElementAccessExpressionSyntax syntax) : base(syntax)
 {
     this.eaes      = syntax;
     this.Container = RoslynToSharpnode.MapExpression(syntax.Expression);
     // Only single-dimensional arrays are supported.
     this.Index = RoslynToSharpnode.MapExpression(syntax.ArgumentList.Arguments[0].Expression);
 }
 public InvocationExpressionSharpnode(InvocationExpressionSyntax syntax) : base(syntax)
 {
     this.MethodGroup          = syntax.Expression;
     this.methodGroupSharpnode = RoslynToSharpnode.MapExpression(syntax.Expression);
     foreach (var argument in syntax.ArgumentList.Arguments)
     {
         this.Arguments.Add(RoslynToSharpnode.MapExpression(argument.Expression));
     }
 }
示例#3
0
 public LambdaSharpnode(SimpleLambdaExpressionSyntax syntax) : base(syntax)
 {
     this.parameter = new ParameterSharpnode(syntax.Parameter);
     if (syntax.Body is ExpressionSyntax)
     {
         this.body = RoslynToSharpnode.MapExpression((ExpressionSyntax)syntax.Body);
     }
     else
     {
         this.errorneousResult = new Error(
             Diagnostics.SSIL126_LambdasMustBeExpressions, syntax.Body);
     }
 }
示例#4
0
 public LambdaSharpnode(ParenthesizedLambdaExpressionSyntax syntax) : base(syntax)
 {
     // We only allow for a single kind of lambda expressions: those that fit ForAll and Exists.
     if (syntax.ParameterList.Parameters.Count != 1)
     {
         this.errorneousResult = new Error(
             Diagnostics.SSIL125_LambdasMustHaveSingleParameter, syntax.ParameterList);
         return;
     }
     this.parameter = new ParameterSharpnode(syntax.ParameterList.Parameters[0]);
     if (syntax.Body is ExpressionSyntax)
     {
         this.body = RoslynToSharpnode.MapExpression((ExpressionSyntax)syntax.Body);
     }
     else
     {
         this.errorneousResult = new Error(
             Diagnostics.SSIL126_LambdasMustBeExpressions, syntax.Body);
     }
 }
        public ForStatementSharpnode(ForStatementSyntax stmt) : base(stmt)
        {
            this.Condition = RoslynToSharpnode.MapExpression(stmt.Condition);
            this.Statement = RoslynToSharpnode.MapStatement(stmt.Statement);
            // Add declarations
            if (stmt.Declaration != null)
            {
                this.Initializers.Add(new LocalDeclarationSharpnode(stmt.Declaration));
            }
            // Add initializers

            if (stmt.Initializers != null)
            {
                foreach (var initializer in stmt.Initializers)
                {
                    Initializers.Add(new ExpressionStatementSharpnode(initializer));
                }
            }
            foreach (var incrementor in stmt.Incrementors)
            {
                this.Incrementors.Add(RoslynToSharpnode.MapExpression(incrementor));
            }
        }
 public IfStatementSharpnode(IfStatementSyntax stmt) : base(stmt)
 {
     this.Condition = RoslynToSharpnode.MapExpression(stmt.Condition);
     this.Then      = RoslynToSharpnode.MapStatement(stmt.Statement);
     this.Else      = stmt.Else != null?RoslynToSharpnode.MapStatement(stmt.Else.Statement) : null;
 }
示例#7
0
 public IncrementExpressionSharpnode(PostfixUnaryExpressionSyntax syntax, IncrementExpressionDirection direction) : base(syntax)
 {
     this.direction  = direction;
     this.order      = IncrementExpressionOrder.Post;
     this.expression = RoslynToSharpnode.MapExpression(syntax.Operand);
 }
 public ExpressionStatementSharpnode(ExpressionStatementSyntax originalNode) : base(originalNode)
 {
     this.Expression = RoslynToSharpnode.MapExpression(originalNode.Expression);
 }