我是否应该对图的某些部分的可达性(称为规则)进行分析:如果验证了某个布尔条件,则可以到达一个节点。每个节点只知道它的前任,有不同类型的节点,并非所有节点都有要验证的条件。该规则被放置在一个文件中。
我做了规则的解析,我已经选择(通过使用有区别的联合)并按照执行流程对节点进行排序。现在,我应该进行一种静态分析,以告知用户,在特定条件下,某些节点是不可达的。图表有多个入口点,但只有一个出口点。
教授让我在F#中翻译布尔条件并通过编译检查。但我注意到即使我编写了以下代码,F# 编译器也没有给我警告:
let tryCondition cond =
if cond then
if not cond then "Not reachable"
else "Reachable"
else "bye"
或者
let tryConditionTwo num =
match num with
| x as t when x > 0 -> match t with
| y when y < 0 -> "Not reachable"
| _ -> "Reachable"
| _ -> "bye"
是否有更好的解决方案并且在 F# 中实现并不太复杂来解决这个问题?或者编译器中是否有一个选项可以让我获取有关无法访问的代码的信息?
这是我必须检查各个分支的可达性的图表示例。“IN”块用于从数据库加载列,而“Select”块用于选择所有且仅满足给定条件的行。我应该静态地检查这些条件是否相互矛盾。