我正在用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:
...
我不关心键(key)的类型(int, string等),只想要值(value)。因此对于上面那个文件,int有值"1, 2, 3, ...",string有值"and, or, then, when",text有值"Lorem ..." (不包括破折号)。
我在考虑两种不同的解决方案,但我不知道哪种更好。我应该:
创建一个简单的解析器,循环遍历所有行,并针对每一行使用一些正则表达式进行匹配,然后分组提取出我想要的部分?
使用词法分析器和语法分析器进行更复杂的解析?
目前这些文件非常简单,我想不需要像第二个选项那样采用高级工具。但是这些文件可能会变得更加复杂,所以我希望能够轻松扩展。
您会如何解决这个问题?