本文整理汇总了C#中Microsoft.PSharp.StaticAnalysis.ControlFlowGraphNode.HandleIfStatement方法的典型用法代码示例。如果您正苦于以下问题:C# ControlFlowGraphNode.HandleIfStatement方法的具体用法?C# ControlFlowGraphNode.HandleIfStatement怎么用?C# ControlFlowGraphNode.HandleIfStatement使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.PSharp.StaticAnalysis.ControlFlowGraphNode
的用法示例。
在下文中一共展示了ControlFlowGraphNode.HandleIfStatement方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HandleIfStatement
/// <summary>
/// Handles the given if statement.
/// </summary>
/// <param name="stmt">Statement</param>
/// <param name="successor">Successor</param>
private void HandleIfStatement(IfStatementSyntax stmt, ControlFlowGraphNode successor)
{
this.SyntaxNodes.Add(stmt.Condition);
this.IsJumpNode = true;
if (successor != null)
{
this.ISuccessors.Add(successor);
successor.IPredecessors.Add(this);
this.LoopExitNode = successor;
}
var ifNode = new ControlFlowGraphNode(this.Summary);
this.ISuccessors.Add(ifNode);
ifNode.IPredecessors.Add(this);
if (stmt.Statement is BlockSyntax)
{
ifNode.Construct((stmt.Statement as BlockSyntax).Statements, 0, false, successor);
}
else
{
ifNode.Construct(new SyntaxList<StatementSyntax> { stmt.Statement }, 0, false, successor);
}
if (stmt.Else != null)
{
var elseNode = new ControlFlowGraphNode(this.Summary);
this.ISuccessors.Add(elseNode);
elseNode.IPredecessors.Add(this);
if (stmt.Else.Statement is IfStatementSyntax)
{
elseNode.HandleIfStatement(stmt.Else.Statement as IfStatementSyntax, successor);
}
else
{
if (stmt.Else.Statement is BlockSyntax)
{
elseNode.Construct((stmt.Else.Statement as BlockSyntax).Statements, 0, false, successor);
}
else
{
elseNode.Construct(new SyntaxList<StatementSyntax> { stmt.Else.Statement }, 0, false, successor);
}
}
}
}