在实现解析器方面,我是个新手,我正在尝试pars一个xmldtd文件来为它生成一个上下文无关的语法。我尝试了pyparsing和yacc,但仍然可以得到任何结果。因此,如果有人能给我一些技巧或示例代码来编写这样一个解析器,我将不胜感激。以下是DTD文件示例:
<!DOCTYPE PcSpecs [
<!ELEMENT PCS (PC*)>
<!ELEMENT PC (MODEL, PRICE, PROCESSOR, RAM, DISK+)>
<!ELEMENT MODEL (\#PCDATA)>
<!ELEMENT PRICE (\#PCDATA)>
<!ELEMENT PROCESSOR (MANF, MODEL, SPEED)>
<!ELEMENT MANF (\#PCDATA)>
<!ELEMENT MODEL (\#PCDATA)>
<!ELEMENT SPEED (\#PCDATA)>
<!ELEMENT RAM (\#PCDATA)>
<!ELEMENT DISK (HARDDISK | CD | DVD)>
<!ELEMENT HARDDISK (MANF, MODEL, SIZE)>
<!ELEMENT SIZE (\#PCDATA)>
<!ELEMENT CD (SPEED)>
<!ELEMENT DVD (SPEED)>
]>
提前谢谢。在
这是一个开始,它将数据解析为ParseResults数据结构,然后您可以遍历该结构并为定义的doctype创建一个解析器:
我开始只对每个元素定义中的元素列表使用分隔符列表,但后来我注意到,''和'|'实际上是运算符,而不仅仅是分隔符,甚至可以混合使用,如“a,B,C | D,E”。所以我使用pyparsing的infixNotation助手来允许这些类型的定义。在
通过您的输入示例,我可以分析并显示结果:
^{pr2}$给予:
相关问题 更多 >
编程相关推荐