如何解决用于文本格式的“文档模型”解析器/编写器?
我正在寻找编写处理许多纯文本格式的代码的方法,这些纯文本格式在原理上都相似,但是语法不同。例如。一个就像
NUM_ENTRIES=33
BEGIN ENTRY
NAME=name
PROPERTY1=Value
PROPERTY2=Some_Value
SYNONYM=asdf,asdfas
BEGIN TABLE
555,666
333,444
BEGIN ENTRY
NAME=xyx
[...]
另一个:
Name: name
Property1: value
Property2: some_value
Synonym: asdf
Synonym: asdfas
Table Rows: 2
555 666
333 444
(two newlines separate entries)
Name: xyx
(这是质谱格式,其中有5或6种左右浮动。)所有这些格式都不是那么复杂。有些在属性中具有层次结构。
我可以轻松地为每个编写一个单独的解析器和编写器。但是我的愿望是改为以某种方式指定文档格式,以便可以在内部进行读写。基本上,一个类似于lex / yacc规范的语法文件,不仅指定如何读取,而且还指定如何编写任何元素。即我将为每个元素同时指定一个解析规则和一个书写规则。例如,我将PROPERTY
指定为KEY: VALUE\n
,并将其与写作为sprintf("%s: %s\n",key,value)
那里有这样的概念吗?
我知道:
- lex / yacc用于指定解析器,以及BNF
- XSLT指定文档转换
- 所有这些格式看起来都像是YAML的卑鄙版本,也许只要编写从每种格式到YAML的转换并返回就足够了
我可能会在R中实现它,但这没关系。我大多只是不想在概念上重新发明轮子。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。