0

最終的に、SQL の小さなサブセット用のパーサーを作成しました。文法には多くの通常のトークン (SELECT、CREATE など) と、いくつかの一般的なトークン (例: S_GEN_IDENTIFIER の match [A-Z_.\d]|\"(~[\n, \r, \"])*\").

問題は、「SELECT col AS type ...」が解析されないことです。これは、<S_GEN_IDENTIFIER>「type」の代わりに列エイリアスが として一致するため<T_TYPE>です。

トークンを同じ名前のルールに置き換えて、対象のトークンがトークンの範囲内にあることを確認するというアイデアがありました ( [<T_AS> - <T_KEEP_DUPLICATES>].新しいルール内のすべてのトークンをコピーして貼り付けることができますが、明らかな理由でそれを行いたくありません。

トークンが事前定義されたトークンの範囲内にあるかどうかを確認する方法はありますか?

4

1 に答える 1

0

おそらく、「type」を予約されていないキーワードとして扱うことができます。次に、FAQ http://www.engr.mun.ca/~theo/JavaCC-FAQ/javacc-faq-moz.htm#tth_sEc4.19の質問 4.19 のアドバイスに従うことができます 。

于 2013-10-16T15:40:04.263 に答える