Я хотел бы создать простой xml-парсер , используя bison / flex. Мне не нужны проверка, комментарии, аргументы, только <tag>value</tag>
, где значение может быть числом, строкой или другим <tag>value</tag>
.
Так, например:
<div>
<mul>
<num>20</num>
<add>
<num>1</num>
<num>5</num>
</add>
</mul>
<id>test</id>
</div>
Если это поможет, я знаю имена всех тегов, которые могут встречаться. Я знаю, сколько вложенных тегов может быть удержано данным тегом. Можно ли создать парсер бизонов, который бы делал что-то вроде этого:
- 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
Метка и количество под-тегов:
- число: 1 (только значение)
- стр: 1 (только значение)
- добавить | суб | муль | div: 2 (num | str | tag, num | str | tag)
Не могли бы вы помочь мне с грамматикой, чтобы иметь возможность создавать AST, как указано выше?