【发布时间】:2010-02-09 11:01:02
【问题描述】:
我正在用 Emacs Lisp 编写解析器。它是文本文件的解析器 看起来像这样:
rule:
int: 1, 2, 3, ...
string: and, or, then, when
text:
----------
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque
in tellus. In pharetra consequat augue. In congue. Curabitur
pellentesque iaculis eros. Proin magna odio, posuere sed, commodo nec,
varius nec, tortor.
----------
more: ...
rule:
...
我并不真正关心密钥(int、string、...)。我想要 价值。因此对于 int 上面的文件,其值为 "1, 2, 3, ...", string “and, or, then, when”和文本“Lorem ...”(不包括破折号)。
我正在考虑两种不同的解决方案,但我不知道该使用哪一种。我应该:
创建一个简单的解析器,循环遍历所有行并为每个 行将它与一些正则表达式匹配,然后将我想要的部分分组?
用词法分析器和解析器做一个更复杂的解析器?
现在文件很简单,我想我不需要这样做 像第二种选择一样先进的东西。但是这些文件可能会得到一个 有点复杂,所以我想让它易于扩展。
你会怎么解决这个问题?
【问题讨论】:
-
看起来您正在重新发明 YAML。
-
我没有发明任何东西。它们是风站的日志文件。它们看起来确实有点像 YAML。