我見過的最接近的工具是Ralf Lammel的Grammar Recovery System。這取決於鐵路圖的可訪問性文本字符串。這通常不是他們如何找到的。在DB2的情況下,你看起來很幸運,拉爾夫的工作點朝着正確的方向發展。
考慮到這樣的圖通常只是一組像素(PLSQL就像是在爲文檔提供的PDF文件中一樣),你有幾套問題:從像素中識別圖形實體,將它們組裝成實際的表示鐵路圖,然後使用如你的助手。
我認爲這是一個漫長而艱難的不切實際的方法。如果你有它的工作,你會發現許多地方的圖表都有些錯誤(閱讀Ralf的論文或者難以找到答案),因此無法使用本應產生「正確」材料的工具來幫助你數據庫管理員。
當然,您正在反對閱讀文檔和生成匹配的文法,然後根據現實世界對這些文法進行驗證的另一種長期,艱苦,「不切實際」的方法。是的,這也是一個棘手的問題,但它確實產生了有用的結果。您需要找到完成此操作的供應商並將其提供給您。
ANTLR.org提供了各種語法。你在那裏檢查過嗎?
我公司提供語法和工具來處理它們。我們已經完成了PLSQL和SQL2011,但還沒有DB2。
給定一個語法,你現在需要用它來爲用戶提供「建議」。您的用戶不會輸入完整的「程序」;他們想要生成片段(例如,SELECT語句)。現在您需要一個解析器來處理語法片段,並至少說出「合法」或「不」。大多數人不會那樣做。我們的DMS Software Reengineering Toolkit將這樣做。
要提供建議,您需要能夠走語法(就像您考慮鐵路圖時一樣)來計算「什麼是合法的下一步」。這實際上很難(事實上,它大致相當於構建表時LR/GLR解析器生成器的功能)。我們的DMS引擎在語法錯誤修復期間通過遍歷其GLR分析表(因爲這些工作已經在表格中編碼了!)。這並不容易,因爲它是GLR解析算法的一個特殊變體。 Earley解析器可能會更好,它將所有可能的解析作爲一組選項進行存儲;你可以簡單地檢查每一個。
但是這看起來像很多工作,我想你會爲你需要的機器數量感到驚訝。
該領域的最佳作品是Harmonia,它爲代碼生成增量編輯器。我們的DMS引擎的解析器基於此項目完成的早期工作,因爲我們對增量性方面感興趣。