1

在哪里可以找到描述 C++ 语法的帕斯卡风格铁路图?(作为 EBNF 的替代品)

4

3 回答 3

1

不存在,据我所知。C++ 语法甚至不能用正确的 EBNF 表达——它是一种上下文相关的语法,任何试图解析它的东西都必须能够处理 C++ 代码,至少就模板实例化和重载解析而言(更不用说宏了) )。

于 2008-11-21T19:17:00.173 回答
1

我不知道 C++ 图是否有一些铁路图(我不太重视这些图像),但将 EBNF 转换为这些图是一项纯粹的机械工作。

关于 C++ 的语法:如果看 C++ 标准附录中的语法,那就是上下文无关语法。这种文法的问题在于它是一种模棱两可的文法。另一件事是,语法接受不是有效 C++ 程序的字符串——但对于每一种带有变量声明的类型化语言来说都是如此。如果语法是undecidable,则意味着您无法判断某个字符串是否是根据语法生成的。顺便说一句,给定的 C++ 文件是否编译确实是一个无法确定的问题,因为模板是图灵完备的。

这种模棱两可的语法不受欢迎的原因是它使解析器更复杂、更慢和/或需要更多内存。

于 2009-02-19T15:11:51.837 回答
0

没有一个——C++ 语法不仅不是上下文无关的,而且是不可判定的。看http://yosefk.com/c++fqa/defective.html#defect-2和相关链接进行更深入的讨论。

于 2008-11-21T19:21:33.237 回答