解析条件语句

时间:2015-11-11 18:03:57

标签: python parsing

我在Python3中编写了一个小工具来帮助我将我的音乐收藏从NAS复制到移动设备。这样做的有用之处在于它会将flac文件自动转换为ogg-vorbis(以节省空间),并根据其音频标签(即艺术家,专辑,日期等)排除某些文件。

我对排除功能的有限性质感到不满意,我想改进它,但我遇到了一个心理障碍,我正在寻找有关如何继续进行的建议。

我希望用户编写一个类似于以下内容的排除文件:

exclude {
    artist is "U2"

    artist is "Uriah Heep" {
        album is "Spellbinder"
        album is "Innocent Victim"
    }
}

这将转化为:

exclude if 
(artist = "U2") OR 
(artist = "Uriah Heep" AND (album = "Spellbinder" OR album = "Innocent Victim"))

会有更多的条件,例如子字符串匹配和日期范围。

我一直在查看PLY但是我正在努力解决如何解析这种类型的嵌套结构的概念,以及如何表示结果条件,以便我可以在应用时在代码中执行它在复制操作期间排除过滤器。

1 个答案:

答案 0 :(得分:0)

您的数据结构几乎一个字典,为什么不只使用JSON?为了更好,你可以使用Lucene Query Syntax