Управляющий граф потока, сгенерированный в рослине, содержит блоки (базовый блок) в качестве узлов, каждый базовый блок содержит одну или несколько инструкций.для основных блоков, которые содержат более одной инструкции, я пытаюсь получить все инструкции и их типы, вот что я сделал:
var cfg = ControlFlowGraph.Create(method);
foreach(var block in cfg.Blocks)
{
foreach(var operation in block.Operations)
{
var syntax = operation.Syntax;
Console.WriteLine(syntax.Kind());
}
}
для следующего метода:
public int method(int x, int y)
{
y = 10;
x = y;
return x + y;
}
iполучить результат:
ExpressionStatement
ExpressionStatement
но я хочу получить инструкцию exacte и ее тип, например, для инструкции x = y;
я хочу получить AssignmentExpressionSyntax
.Также я хочу выполнить некоторые инструкции по каждой инструкции в зависимости от ее типа.