好奇心から、人々はパーサーで何ができるのか、それらがどのように適用されるのか、そして人々は通常それを使って何を作成するのだろうか?
プログラミング言語業界で広く使われていることは知っていますが、これはほんの一部だと思いますよね?
特殊な目的の言語に加えて、パーサー ジェネレーターのこれまでで最も野心的な使用法 (古き良き yacc を C に戻し、後で Python の pyparsing を使用) は、SQL クエリから特定のメタ情報を抽出し、検証し、場合によっては変更することでした -- 解析SQL を適切に使用することは本当の課題です (特に、複数の方言をサポートしたい場合は!-)、パーサー ジェネレーター (およびその上にあるレクサー) は、少なくともジョブのその部分を削除してください!-)
それらはテキストを解析するために使用されます...。
より具体的な例を示すために、私が作業しているところでは、lexx/yaccを使用してソケットを通過する文字列を解析します。
また、名前から、javaccが何に使用されているかがわかります(javaコンパイラコンパイラ!)
一般に、ドメイン固有言語やスクリプト言語、またはコードスニピットの同様のサポートを解析します。
以前、別のソフトウェアツールのコマンドラインベースの出力を解析するために使用されるのを見てきました。このようにして、外部ツール(VPNソフトウェア)は、変更なしでベースルーターのIPSecコードを再利用できます。解析されていたのは、IPルートテーブルやその他の構造化された繰り返しテキストでした。
パーサーを使用すると、手書きのパーサーを見つけて微調整する代わりに、フォーマットが変更されたときに簡単な変更が可能になりました。そして、出力は製品の寿命の数倍変化しました。
パーサーを使用して、+/-800ClipperソースファイルをAlaksaXbase32でコンパイルできる同様のPRGに処理できるようにしました。
リポジトリから言語定義を取得し、常に必要としていたものを追加することで、お気に入りの言語を拡張するために使用できます。通常の構文をアプリケーションに渡し、独自のプログラムで拡張機能を処理できます。