I would like to create simple xml parser using bison/flex. I don't need validation, comments, arguments, only <tag>value</tag>
, where value can be number, string or other <tag>value</tag>
.
So for example:
<div>
<mul>
<num>20</num>
<add>
<num>1</num>
<num>5</num>
</add>
</mul>
<id>test</id>
</div>
If it helps, I know the names of all tags that may occur. I know how many sub-tag can be hold by given tag. Is it possible to create bison parser that would do something like that:
- 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
Tag & number of sub-tags:
- num: 1 (only value)
- str: 1 (only value)
- add | sub | mul | div: 2 (num | str | tag, num | str | tag)
Could you help me with grammar to be able to create AST like given above?
(20 * (1 + 5)) / test
. Unless it's required for some other reason, XML seems a bit like overkill, especially if you're writing the parser! – anton.burger