私はPythonでCLIアプリケーションを作成しており、かなり複雑なコマンドライン言語を使用しています。この考え方は、ほぼ間違いなく同じプロパティを持つfind(1)と非常によく似ています。
現在、パーサーは手作りのEBNF記述言語を使用して完全に手書きされています。問題は、すべてをPython構造として記述しなければならないため、この言語の使用が非常に難しいことです。また、構文解析のために、私のプログラムはまだ肥大化しすぎていると感じています。
使いやすさ、およびコマンドライン解析用の真の記述言語(文字列/ドキュメントとして入力)を備えたライブラリはありますか?構文ツリーから、各アイテムをクラスインスタンスに直接マップしたいと思います。当然、トークナイザーは必要ありません。少なくとも、トークナイザーはコマンドライン引数からトークンに直接マップする必要があります。
すべての提案をありがとう!
更新:私のプログラムの要点は、オブジェクトを生成し、オブジェクトを再度出力する場合としない場合、または別のタイプのオブジェクトを出力する場合がある任意の数のフィルター(おそらく純粋でない/効果のないアクション)を通過させることです。一般的な考え方は、明らかにfind(1)から収集されます。コマンドラインの例は次のとおりです。
~/picdb.py -sqlselect 'select * from pics where dirname like "testdir%"' -tagged JoSo -updateFromFile [ -resx +300 -or -resX +200 -resY +500 ] -printfXml '<jpegfile><src>%fp</src><DateTimeOriginal>%ed</DateTimeOriginal><Manufacturer>%eM</Manufacturer><Model>%em</Model></jpegfile>%NL'