(申し訳ありませんが、アドホックがここで正しい言葉であるかどうかはわかりません...より良い提案のために開いてください)
Galaxyソフトウェア自体の動作を(部分的に)複製するために、JavaアプリでGalaxy ToolConfigXMLCLIツールラッパー形式を解析しようとしています。
この形式には、コマンドタグ内にいくつかの「フリーテキスト」のif / else句が含まれています(これが発生する唯一の場所です、AFAIK)。
...
<command interpreter="python">
sam_to_bam.py
--input1=$source.input1
--dbkey=${input1.metadata.dbkey}
#if $source.index_source == "history":
--ref_file=$source.ref_file
#else
--ref_file="None"
#end if
--output1=$output1
--index_dir=${GALAXY_DATA_INDEX_DIR}
</command>
...
このif/else構造を、Javaでif / elseロジックを再構築するために使用できるものに解析するための推奨戦略は何でしょうか?
BNF / ANTLRはやり過ぎですか、オブジェクト構造に解析するだけの方が良いですか、それとも?ここに合うデザインパターンはありますか?(これまでBNF / ANTLRを使用したことはありませんが、価値があるかどうかを調査する用意があります)。