(抱歉,不确定 ad-hoc 是否是正确的词……欢迎提出更好的建议)
我正在尝试在 Java 应用程序中解析 Galaxy ToolConfig XML CLI 工具包装格式,以便(部分)复制 Galaxy 软件本身的行为。
该格式在命令标签内包含一些“自由文本” 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 合作过,但如果值得的话,我愿意研究它)。