我希望使用bison/flex创建一个简单的XML解析器。我不需要验证、注释和参数,只需要处理形如
如果有帮助的话,我知道所有可能出现的标签名称,也知道给定标签可以容纳多少个子标签。是否可能创建一个Bison解析器来实现以下功能:
<tag>value</tag>
的标签,其中value可以是数字、字符串或其他<tag>value</tag>
格式的内容。例如:<div>
<mul>
<num>20</num>
<add>
<num>1</num>
<num>5</num>
</add>
</mul>
<id>test</id>
</div>
如果有帮助的话,我知道所有可能出现的标签名称,也知道给定标签可以容纳多少个子标签。是否可能创建一个Bison解析器来实现以下功能:
- new Tag("num", 1) // tag1
- new Tag("num", 5) // tag2
- new Tag("add", tag1, tag2) // tag3
- new Tag("num", 20) // tag4
- new Tag("mul", tag4, tag3)
...
- root = top_tag
标签和子标签的数量:
- num: 1(仅值)
- str: 1(仅值)
- add | sub | mul | div: 2(num | str | tag,num | str | tag)
你能帮我处理语法,以便创建类似上面给出的AST吗?
(20 * (1 + 5)) / test
这样的字符串。除非出于其他原因需要使用XML,否则似乎有点过度设计,特别是如果你正在编写解析器的话! - anton.burger