我應該如何分析圖形各部分的可達性(稱爲規則):如果驗證某個布爾條件,則可以到達節點。每個節點只知道它的前任,有不同類型的節點,並不是所有的節點都有一個需要檢驗的條件。該規則放置在一個文件中。編譯細節和可達性算法F#
我做了規則的解析,我選擇了(通過使用區別聯合)並根據執行流程對節點進行了排序。現在,我應該做一種靜態分析來通知用戶,對於指定的情況,有些節點是不可訪問的。圖形有多個入口點,但只有一個出口點。
教授告訴我翻譯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」塊用於從數據庫加載列,而「選擇」塊用於選擇所有且僅滿足給定條件的行。我應該靜靜地檢查這些條件是相互矛盾的。
感謝您的回覆。現在我記錄下來,你會知道這是否是我需要的。我添加了一些筆記和一張我希望能夠說明的圖片。 – marcx87 2011-06-15 12:46:18