Antlr3を使用して文法言語を定義しました。ANTLRWorksは、レクサーおよびパーサーコードを生成します。
以下は文法の例です。
grammar i;
@header {
package com.data;
}
elements : (value (',' value)*)?;
insert : 'INSERT INTO table' 'VALUES' '('elements')'';';
WS : (' '|'\t'|'\f'|'\n'|'\r')+ {skip();}; // handle white space between keywords
上記の文法は一例に過ぎません。私は実際に私の会社のために大きな文法を開発しています。
プロジェクトのcom.dataパッケージに文法をインポートし、生成されたレクサーとパーサーを使用できます。私が知りたいこと:
- Javaコードは文法内に記述する必要がありますか?
- レクサーとパーサーを使用し、文法内ではなく別のクラス内でJavaコードを記述したいと思います。
次の投稿によると:ANTLR:簡単な例はありますか?簡単な例を示しています。ただし、私の場合、文法は大きく、インポートして使用することをお勧めします。私には多くのルールがあります:
たとえば、上記の文法は次のコードを生成します。
public void insert() throws RecognitionException;
これを処理するための最良の方法は何ですか?ボイドのリターンタイプであるルールがたくさんあります。
各ルールには、Java用語で特定の意味があります。構文を取得してからコードを呼び出して確認するのが最善の方法ではないと思います。例えば:
String input = "INSERT INTO table VALUES (null);";
if(input.equals("INSERT INTO table VALUES (null);") {
insertData();
}
public void insertData() {
// insert data into database
}
すべての構文をチェックしてコードを呼び出すことをお勧めしますか?