sql架構樹怎么找上層組織?
文法解析的話可以搜索SQL parser一類的工具,像Python就有sqlparse。Parse得到的結果是SQL的結構語法樹,而對應的語義需要自己定義,即每棵樹相應語句結構如何遍歷解釋,是執行運算或者是生成目標代碼。
你的情況下目標代碼就是你們的內部語言。
除了使用parser庫之外,也可以參考Antlr。Antlr是一套通用完整的語言解釋工具,支持各種自定義文法模板。
比如你可以基于Antlr下載一套標準SQL的文法模板文件,然后給語句規則填寫對應的解釋邏輯(執行運算或生成代碼)即可,相當于聲明式地定制了一個解釋器。
基于Antlr之類的程序優點是標準化、易維護,缺點是處理上下文的靈活性不如基于parser庫的原生程序。
不論哪種方法,如果你們內部語言有解釋器API的話,直接在語句解釋時調用API,可省去目標代碼這一環,相當于用你們的內部庫實現一個SQL解釋器。
理論的話可以參考虎書。
下一篇java長時間運行