-
Notifications
You must be signed in to change notification settings - Fork 5.1k
/
Copy pathBlockVisitor.cs
31 lines (26 loc) · 1022 Bytes
/
BlockVisitor.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System.Linq.Expressions;
namespace ExpressionVisitor;
public class BlockVisitor : Visitor
{
private readonly BlockExpression node;
public BlockVisitor(BlockExpression node) : base(node) => this.node = node;
public override void Visit(string prefix)
{
Console.WriteLine($"{prefix}This expression is a {NodeType} expression");
var resultVisitor = CreateFromExpression(node.Result);
Console.WriteLine($"{prefix}Result from Block: ");
resultVisitor.Visit(prefix + "\t");
Console.WriteLine($"{prefix}Variables:");
foreach (var variable in node.Variables)
{
var variablesVisitor = CreateFromExpression(variable);
variablesVisitor.Visit(prefix + "\t");
}
Console.WriteLine($"{prefix}Block Statements:");
foreach (var statement in node.Expressions)
{
var statementVisitor = CreateFromExpression(statement);
statementVisitor.Visit(prefix + "\t");
}
}
}