2014-10-02 72 views
2

我開發一個類似於SQL的語言解析器我自己的語言(姑且稱之爲MySQL的。它包含SQL結構,但增加了一些額外的東西。Antlr4如何開始

我的工具得到一個MySQL查詢,分析它,改變的東西,產生正常的SQL查詢Hibernate一樣做

我創建的語法文件,它看起來不錯,但我不知道下一步該怎麼做

例如:。讓我們這行: SELECT a AS aa, b FROM tbl1

並將其更改爲

SELECT string1, integer2 FROM server1[tbl1]

我有一個地圖,可以轉換tbl1.a - > string1,tbl1.b - > integer2。

我該怎麼做?

我創建了監聽器,但是如何將結果列連接到它的別名(例如)?

我的語法有以下規則:

select_statement : 
    SELECT result_column (AS? alias)? (',' result_column (AS? alias)?)* 
    FROM from_cluase (',' from_cluase (AS? alias)?)* 

回答

1

創建一個result其中包括可選alias一個額外的解析器規則:

select_statement 
: SELECT result (',' result)* 
    FROM from_cluase (',' from_cluase (AS? alias)?)* 
; 

result 
: result_column (AS? alias)? 
; 

監聽器內部的enterSelect_statement方法現在會給你訪問List<ResultContext>通過其上下文。然後可以檢查這些ResultContextresult_column和可選的alias