使用特殊标记解析文本文件

ovg*_*vin 5 python tags markup parsing

我需要DSL使用Python 解析文件.DSL文件是一个文本文件,其文本具有带有ABBYY Lingvo使用的标签的特殊标记.

看起来像:

activate
    [m0][b]ac·ti·vate[/b] {{id=000000367}} [c rosybrown]\[[/c][c darkslategray][b]activate[/b][/c] [c darkslategray][b]activates[/b][/c] [c darkslategray][b]activated[/b][/c] [c darkslategray][b]activating[/b][/c][c rosybrown]\][/c] [p]BrE[/p] [c darkgray] [/c][c darkcyan]\[?ækt?ve?t\][/c] [s]z_activate__gb_1.wav[/s] [p]NAmE[/p] [c darkgray] [/c][c darkcyan]\[?ækt?ve?t\][/c] [s]z_activate__us_1.wav[/s] [c orange] verb[/c] [c darkgray] [/c][b]{{cf}}\~ sth{{/cf}} [/b]
    [m1]{{d}}to make sth such as a device or chemical process start working{{/d}}
    [m2][ex][*]• [/*][/ex][ex][*]{{x}}The burglar alarm is activated by movement.{{/x}} [/*][/ex]
    [m2][ex][*]• [/*][/ex][c darkgray] [/c][ex][*]{{x}}The gene is activated by a specific protein.{{/x}} [/*][/ex]
    {{Derived Word}}[m3][c darkslategray][u]Derived Word:[/u][/c] ?<<activation>>{{/Derived Word}}
    {{side_verb_forms}}[m3][c darkslategray][u]Verb forms:[/u][/c] [s]x_verb_forms_activate.jpg[/s]{{/side_verb_forms}}
Run Code Online (Sandbox Code Playgroud)

现在我看到了使用解析此文件的唯一选项regexps.但我怀疑它是否可以实现,因为该格式的标签有一些层次结构,其中一些在其他层次结构中.

我不能使用特殊xmlhtml解析器.他们是在创建文档的树结构完美的,但他们是专为特殊标签htmlxml.

以这种格式解析文件的最佳方法是什么?是否有用于此目的的Python库?

S.L*_*ott 1

“某些引擎允许基于嵌套标签结构创建树”。

看看http://www.dabeaz.com/ply/

您也许能够快速轻松地将语法定义为一组词法规则和一些语法产生式。

如果您不喜欢那个,这里有一个替代品列表。

http://wiki.python.org/moin/LanguageParsing