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