2013-08-21 109 views
0

我在寫一個簡單的解析器來將查詢轉換爲SQL。我已經完成了解析,並得到了解析樹,但現在我需要使用ANTLR 4.在antlr中匹配輸入選項4

如果我的語法部分看起來像

boolOp : OR|XOR|AND; 

如何將我打印出來,如果要翻譯這些語法SQL任何比賽存在?

其實,我試圖打印AND如果我的查詢存在AND運營商,或者如果我的查詢存在OR,然後我根據上面顯示的語法規則boolOp打印OR運營商。

PART我的代碼

public void exitBoolOp(Parser.BoolOpContext ctx) 
{ 
    if (ctx.AND() == AND) 
    { 
     System.out.print(" AND "+"\t"); 
    } 
    else if (ctx.OR() == OR) 
    { 
     System.out.print(" OR "+"\t"); 
    } 
    else 
    { 
     System.out.print(" XOR "+"\t"); 
    } 
} 

回答

1

明顯的問題我在代碼中發現之一是產生AND()OR()XOR()方法返回一個TerminalNode,但ANDORXOR常量聲明如int。你真正想要使用的是表達式:

if (ctx.AND() != null) { 
    ... 

除此之外,你需要包括更多具體的例子你想要的輸入和輸出。

+0

非常感謝您的回覆。 – user2085189