我正在考虑基于W3C的编译器生成器实现XML翻译器的想法 XML 1.1 规格,其中包括完整的EBNF语法。

更确切地说,我计划使用 Qi-yacc 因为我想学习这个工具。这将是我第一次尝试使用任何编译器编译器。

我打算实施的第一种翻译非常简单:xml S-Exprs. 。之后,我计划概括我的翻译人员,但这不是我问题的重点。

您是否期望此类项目有任何重大陷阱? 我读过,使用其EBNF翻译XML是 一个坏主意. 。我想知道为什么。这并不像Qi语言已经有了XML解析器,所以我绝对不希望在这里重新发明轮子。

有帮助吗?

解决方案

现在,我不是需要上下文来解析XML的原因。

但是QIYACC可以使用全局变量利用上下文。如果您可以通过解析器或类似的东西在解析器中通过状态S,那将是更干净的。这不在QI中,但我计划为沉实施此类功能。

这样就可以做到。

/Stefan

其他提示

我一无所知,但是将XML的EBNF转换为递归下降(RD)解析器或多或少是简单的。人们只需要牢记一个事实,即在某些地方,对语法进行一些小的调整会对解析器产生重大的性能影响。这是因为语法是用简洁的和清晰的,而不是试图避免追逐规则。

在C ++中,我通过将XML的语法写入一组类型中,就在C ++中做了这样的事情。您可以看到我在上面写的一篇文章 代码项目. 。相同的基本原理可以应用于任何语言。

我还建议您环顾四周的语法。它们通过允许您引入零宽度的断言来扩展EBNF,并且是增强解析器的EBNF语法的好方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top