0

クエリを SQL に変換する単純なパーサーを作成しています。パーサーを完成させて解析ツリーを取得しましたが、ANTLR 4 を使用してこれらの文法を SQL に変換する必要があります。

私の文法の一部が次のように見える場合

boolOp : OR|XOR|AND;

一致するものがある場合、どのように印刷しますか?

実際、ANDif my query exists ANDoperator または if my query existsを出力しようとしていますがOR、上記ORの文法規則に従って operatorを出力する必要があります。boolOp

私のコードの一部

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");
    }
}
4

1 に答える 1

1

コードで気付いた明らかな問題は、生成されたAND(),OR()およびXOR()メソッドが を返しますTerminalNodeANDOR, およびXOR定数が として宣言されていることintです。実際に使用したいのは次の式です。

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

これを超えて、目的の入力と出力のより具体的な例を含める必要があります。

于 2013-08-24T15:18:20.043 に答える