public DeclarationItem(Ast.Declaration declaration) { if (declaration.IsFunctionDeclaration) { var typedDeclaration = (Ast.Declaration.FunctionDeclaration)declaration; Text = "Function Declaration (Name = " + typedDeclaration.Item.Item2 + ")"; Children = new TreeItemBase[] { new SimpleItem("Return Type: " + typedDeclaration.Item.Item1), new SimpleItem("Name: " + typedDeclaration.Item.Item2), new SimpleItem("Parameters", typedDeclaration.Item.Item3.Select(x => new VariableDeclarationItem(x))), new CompoundStatementItem(typedDeclaration.Item.Item4, "Body") }; } else if (declaration.IsStaticVariableDeclaration) { Text = "Static Variable Declaration"; var typedDeclaration = (Ast.Declaration.StaticVariableDeclaration)declaration; if (typedDeclaration.Item.IsScalarVariableDeclaration) { Children = new[] { new VariableDeclarationItem(typedDeclaration.Item) } } ; } } }
public CompoundStatementItem(Tuple<FSharpList<Ast.VariableDeclaration>, FSharpList<Ast.Statement>> compoundStatement, string name = "Compound Statement") { Text = name; Children = new TreeItemBase[] { new SimpleItem("Local Declarations", compoundStatement.Item1.Select(x => new VariableDeclarationItem(x))), new SimpleItem("Statements", compoundStatement.Item2.Select(x => new StatementItem(x))) }; }
public CompoundStatementItem(Tuple <FSharpList <Ast.VariableDeclaration>, FSharpList <Ast.Statement> > compoundStatement, string name = "Compound Statement") { Text = name; Children = new TreeItemBase[] { new SimpleItem("Local Declarations", compoundStatement.Item1.Select(x => new VariableDeclarationItem(x))), new SimpleItem("Statements", compoundStatement.Item2.Select(x => new StatementItem(x))) }; }
public DeclarationItem(Ast.Declaration declaration) { if (declaration.IsFunctionDeclaration) { var typedDeclaration = (Ast.Declaration.FunctionDeclaration) declaration; Text = "Function Declaration (Name = " + typedDeclaration.Item.Item2 + ")"; Children = new TreeItemBase[] { new SimpleItem("Return Type: " + typedDeclaration.Item.Item1), new SimpleItem("Name: " + typedDeclaration.Item.Item2), new SimpleItem("Parameters", typedDeclaration.Item.Item3.Select(x => new VariableDeclarationItem(x))), new CompoundStatementItem(typedDeclaration.Item.Item4, "Body") }; } else if (declaration.IsStaticVariableDeclaration) { Text = "Static Variable Declaration"; var typedDeclaration = (Ast.Declaration.StaticVariableDeclaration) declaration; if (typedDeclaration.Item.IsScalarVariableDeclaration) Children = new[] { new VariableDeclarationItem(typedDeclaration.Item) }; } }
public ExpressionItem(Ast.Expression expression) { if (expression.IsArrayAllocationExpression) { var typedExpression = (Ast.Expression.ArrayAllocationExpression)expression; Text = "Array Allocation Expression"; Children = new TreeItemBase[] { new SimpleItem("Type: " + typedExpression.Item1), new SimpleItem("Size", new[] { new ExpressionItem(typedExpression.Item2) }) }; } else if (expression.IsArrayIdentifierExpression) { var typedExpression = (Ast.Expression.ArrayIdentifierExpression)expression; Text = "Array Identifier Expression: " + typedExpression.Item1.Identifier; Children = new[] { new SimpleItem("Index", new[] { new ExpressionItem(typedExpression.Item2) }) }; } else if (expression.IsArraySizeExpression) { var typedExpression = (Ast.Expression.ArraySizeExpression)expression; Text = "Array Size Expression: " + typedExpression.Item.Identifier; } else if (expression.IsScalarAssignmentExpression) { var typedExpression = (Ast.Expression.ScalarAssignmentExpression)expression; Text = "Scalar Assignment Expression"; Children = new TreeItemBase[] { new SimpleItem("Variable: " + typedExpression.Item1.Identifier), new SimpleItem("Expression", new[] { new ExpressionItem(typedExpression.Item2) }) }; } else if (expression.IsArrayAssignmentExpression) { var typedExpression = (Ast.Expression.ArrayAssignmentExpression)expression; Text = "Array Assignment Expression"; Children = new TreeItemBase[] { new SimpleItem("Variable: " + typedExpression.Item1.Identifier), new SimpleItem("Index", new[] { new ExpressionItem(typedExpression.Item2) }), new SimpleItem("Expression", new[] { new ExpressionItem(typedExpression.Item3) }) }; } else if (expression.IsBinaryExpression) { var typedExpression = (Ast.Expression.BinaryExpression)expression; Text = "Binary Expression"; Children = new TreeItemBase[] { new SimpleItem("Left", new[] { new ExpressionItem(typedExpression.Item1) }), new SimpleItem("Operator: " + typedExpression.Item2), new SimpleItem("Right", new[] { new ExpressionItem(typedExpression.Item3) }) }; } else if (expression.IsFunctionCallExpression) { var typedExpression = (Ast.Expression.FunctionCallExpression)expression; Text = "Function Call Expression"; Children = new TreeItemBase[] { new SimpleItem("Name: " + typedExpression.Item1), new SimpleItem("Arguments", typedExpression.Item2.Select(x => new ExpressionItem(x))) }; } else if (expression.IsIdentifierExpression) { Text = "Identifier Expression: " + ((Ast.Expression.IdentifierExpression)expression).Item.Identifier; } else if (expression.IsLiteralExpression) { Text = "Literal Expression: " + ((Ast.Expression.LiteralExpression)expression).Item; } else if (expression.IsUnaryExpression) { var typedExpression = (Ast.Expression.UnaryExpression)expression; Text = "Unary Expression"; Children = new TreeItemBase[] { new SimpleItem("Operator: " + typedExpression.Item1), new SimpleItem("Expression", new[] { new ExpressionItem(typedExpression.Item2) }) }; } else { throw new System.NotImplementedException(); } }
public StatementItem(Ast.Statement statement) { if (statement.IsBreakStatement) { Text = "Break Statement"; } else if (statement.IsCompoundStatement) { var typedStatement = (Ast.Statement.CompoundStatement) statement; Text = "Compound Statement"; Children = new TreeItemBase[] { new SimpleItem("Local Declarations", typedStatement.Item.Item1.Select(x => new VariableDeclarationItem(x))), new SimpleItem("Statements", typedStatement.Item.Item2.Select(x => new StatementItem(x))) }; } else if (statement.IsExpressionStatement) { var typedStatement = (Ast.Statement.ExpressionStatement) statement; Text = "Expression Statement"; if (typedStatement.Item.IsNop) { Children = new[] { new SimpleItem("Nop") }; } else if (typedStatement.Item.IsExpression) { var typedStatement2 = (Ast.ExpressionStatement.Expression) typedStatement.Item; Children = new[] { new ExpressionItem(typedStatement2.Item) }; } } else if (statement.IsIfStatement) { var typedStatement = (Ast.Statement.IfStatement) statement; Text = "If Statement"; Children = new TreeItemBase[] { new SimpleItem("Condition", new[] { new ExpressionItem(typedStatement.Item.Item1) }), new SimpleItem("Then", new[] { new StatementItem(typedStatement.Item.Item2) }) }; if (FSharpOption<Ast.Statement>.get_IsSome(typedStatement.Item.Item3)) Children = Children.Union(new[] { new SimpleItem("Else", new[] { new StatementItem(typedStatement.Item.Item3.Value) }) }); } else if (statement.IsReturnStatement) { var typedStatement = (Ast.Statement.ReturnStatement) statement; Text = "Return Statement"; if (FSharpOption<Ast.Expression>.get_IsSome(typedStatement.Item)) Children = new[] { new ExpressionItem(typedStatement.Item.Value) }; } else if (statement.IsWhileStatement) { var typedStatement = (Ast.Statement.WhileStatement) statement; Text = "While Statement"; Children = new TreeItemBase[] { new SimpleItem("Condition", new[] { new ExpressionItem(typedStatement.Item.Item1) }), new SimpleItem("Body", new[] { new StatementItem(typedStatement.Item.Item2) }) }; } else throw new NotImplementedException(); }
public StatementItem(Ast.Statement statement) { if (statement.IsBreakStatement) { Text = "Break Statement"; } else if (statement.IsCompoundStatement) { var typedStatement = (Ast.Statement.CompoundStatement)statement; Text = "Compound Statement"; Children = new TreeItemBase[] { new SimpleItem("Local Declarations", typedStatement.Item.Item1.Select(x => new VariableDeclarationItem(x))), new SimpleItem("Statements", typedStatement.Item.Item2.Select(x => new StatementItem(x))) }; } else if (statement.IsExpressionStatement) { var typedStatement = (Ast.Statement.ExpressionStatement)statement; Text = "Expression Statement"; if (typedStatement.Item.IsNop) { Children = new[] { new SimpleItem("Nop") }; } else if (typedStatement.Item.IsExpression) { var typedStatement2 = (Ast.ExpressionStatement.Expression)typedStatement.Item; Children = new[] { new ExpressionItem(typedStatement2.Item) }; } } else if (statement.IsIfStatement) { var typedStatement = (Ast.Statement.IfStatement)statement; Text = "If Statement"; Children = new TreeItemBase[] { new SimpleItem("Condition", new[] { new ExpressionItem(typedStatement.Item.Item1) }), new SimpleItem("Then", new[] { new StatementItem(typedStatement.Item.Item2) }) }; if (FSharpOption <Ast.Statement> .get_IsSome(typedStatement.Item.Item3)) { Children = Children.Union(new[] { new SimpleItem("Else", new[] { new StatementItem(typedStatement.Item.Item3.Value) }) }); } } else if (statement.IsReturnStatement) { var typedStatement = (Ast.Statement.ReturnStatement)statement; Text = "Return Statement"; if (FSharpOption <Ast.Expression> .get_IsSome(typedStatement.Item)) { Children = new[] { new ExpressionItem(typedStatement.Item.Value) } } ; } else if (statement.IsWhileStatement) { var typedStatement = (Ast.Statement.WhileStatement)statement; Text = "While Statement"; Children = new TreeItemBase[] { new SimpleItem("Condition", new[] { new ExpressionItem(typedStatement.Item.Item1) }), new SimpleItem("Body", new[] { new StatementItem(typedStatement.Item.Item2) }) }; } else { throw new NotImplementedException(); } } }
public ExpressionItem(Ast.Expression expression) { if (expression.IsArrayAllocationExpression) { var typedExpression = (Ast.Expression.ArrayAllocationExpression) expression; Text = "Array Allocation Expression"; Children = new TreeItemBase[] { new SimpleItem("Type: " + typedExpression.Item1), new SimpleItem("Size", new[] { new ExpressionItem(typedExpression.Item2) }) }; } else if (expression.IsArrayIdentifierExpression) { var typedExpression = (Ast.Expression.ArrayIdentifierExpression) expression; Text = "Array Identifier Expression: " + typedExpression.Item1.Identifier; Children = new[] { new SimpleItem("Index", new[] { new ExpressionItem(typedExpression.Item2) }) }; } else if (expression.IsArraySizeExpression) { var typedExpression = (Ast.Expression.ArraySizeExpression) expression; Text = "Array Size Expression: " + typedExpression.Item.Identifier; } else if (expression.IsScalarAssignmentExpression) { var typedExpression = (Ast.Expression.ScalarAssignmentExpression) expression; Text = "Scalar Assignment Expression"; Children = new TreeItemBase[] { new SimpleItem("Variable: " + typedExpression.Item1.Identifier), new SimpleItem("Expression", new[] { new ExpressionItem(typedExpression.Item2) }) }; } else if (expression.IsArrayAssignmentExpression) { var typedExpression = (Ast.Expression.ArrayAssignmentExpression) expression; Text = "Array Assignment Expression"; Children = new TreeItemBase[] { new SimpleItem("Variable: " + typedExpression.Item1.Identifier), new SimpleItem("Index", new[] { new ExpressionItem(typedExpression.Item2) }), new SimpleItem("Expression", new[] { new ExpressionItem(typedExpression.Item3) }) }; } else if (expression.IsBinaryExpression) { var typedExpression = (Ast.Expression.BinaryExpression) expression; Text = "Binary Expression"; Children = new TreeItemBase[] { new SimpleItem("Left", new[] { new ExpressionItem(typedExpression.Item1) }), new SimpleItem("Operator: " + typedExpression.Item2), new SimpleItem("Right", new[] { new ExpressionItem(typedExpression.Item3) }) }; } else if (expression.IsFunctionCallExpression) { var typedExpression = (Ast.Expression.FunctionCallExpression) expression; Text = "Function Call Expression"; Children = new TreeItemBase[] { new SimpleItem("Name: " + typedExpression.Item1), new SimpleItem("Arguments", typedExpression.Item2.Select(x => new ExpressionItem(x))) }; } else if (expression.IsIdentifierExpression) { Text = "Identifier Expression: " + ((Ast.Expression.IdentifierExpression) expression).Item.Identifier; } else if (expression.IsLiteralExpression) { Text = "Literal Expression: " + ((Ast.Expression.LiteralExpression) expression).Item; } else if (expression.IsUnaryExpression) { var typedExpression = (Ast.Expression.UnaryExpression) expression; Text = "Unary Expression"; Children = new TreeItemBase[] { new SimpleItem("Operator: " + typedExpression.Item1), new SimpleItem("Expression", new[] { new ExpressionItem(typedExpression.Item2) }) }; } else throw new System.NotImplementedException(); }