私が働いているアプリケーションは、ファイルのインポートから大量のデータを入力し、それに従ってデータベースの列を更新します。私は、検証に基づいてすべての入力値を処理し、それに応じてデータの変換を実行するカスタムルールエンジンを用意する必要があります。 E。文法の初心者ガイド
アプリケーションのフィールドの1つは商品名です。したがって、実装する必要があるルールの1つは、ファイルからの入力値が小文字である場合、Product nameを小文字から大文字に変換することです。同様に、多くのテキスト/数学的変換が必要です。これらの理由から、各属性のルールを定義し、解析してルールを適用するカスタムルールエンジンを用意する必要があります。
ANTLRは、Java
の周囲のパーサージェネレータの1つです。
1>パーサージェネレータの動作と、文法を実装するためのベストプラクティスに関する一般的な情報。
2>私はこのルールエンジンを完全に設計する必要があるので、誰も私が参照できるサンプルルールエンジンを指摘できますか? UIからデータベース設計に至るまで私は、データベースのコアロジックとOracleのためのUI、Java用のGWTを使用してい
3>はあり、私は自分の文法を定義するのパスをフォローしたいんがJavaの
4>のために周りの他のパーサジェネレータとパーサジェネレータを使用してこのルールエンジンを構築すると、考慮すべき他のアプローチはありますか?
ファイルがかなり構造的に複雑でない限り、文法はたぶんあなたの人生をより困難にするでしょう。シンプルな文字列テスト、switch文などは十分であるはずです。 – Dan
さて、私たちが現在持っているルールは、始めることだけです。私が言ったように、今では文字列/数学的変換が存在するので、複雑なものが入ってくると "単純な文字列テスト、switch文"がうまくスケールされるかどうかはわかりませんでした。よく –
あなたの問題を記述した方法は、結合する列の選択、出力列の選択、またはこのデータに対して任意の計算を行うことの限界が明確ではありません。あなたが許可されているものに対して信頼できる*限界*を定義できない場合は、Turing対応言語の完全な能力が必要です(Javaはうまくいくようです)。すべての列とレコードにアクセスするには、少なくともデータのアクセスと更新のためにSQLの能力が必要になるでしょう。あなたは、あなたが計算しようとしているものに明確な限界がありますか?なぜあなたはまだ別の言語があなたに役立つと思いますか? –