解析标题格式的简单语言

时间:2009-07-27 15:35:10

标签: java

我正在使用java编写音频播放器,我想要一个类似于foobar2000的标题格式化程序。例如:

$if($strcmp(%album artist%,%artist%),%artist%,$if2(%album%,Unknown))

[%album%][ '('CD $ifgreater(%totaldiscs%,1,%discnumber%,)')']

第一个示例返回一个字符串,如果它对于播放列表中的连续曲目是相同的,则将它们分组,第二个示例格式化相册名称并添加cd编号(如果存在)。完整参考是here

我不需要所有功能,但至少需要一些功能。

为这样的语言编写解析器有多难。是否有适用于java的编译器编译器?

使用java的javascript引擎会更容易吗?它的速度有多快(处理数千首曲目)?

2 个答案:

答案 0 :(得分:2)

您是否考虑使用FreemarkerVelocity等模板引擎?他们的标记语言并不完全符合您的要求,但它们非常灵活。但是,如果它适用于最终用户,可能会过于冗长。

答案 1 :(得分:1)

有一些解决自定义语言的工具。其中一个常用工具是解析器生成器antlr

要回答你的问题,是否有困难?是的。将语句解析为语法树只是第一步。你仍然需要编写解释器,这个foobar2000标题生成器语法看起来很复杂!