我正在阅读解析器和解析器生成器,并在维基百科的LR解析页面中找到了这个语句:
可以使用LR解析器的一些变体来解析许多编程语言.一个值得注意的例外是C++.
为什么会这样?C++的哪个特定属性导致无法使用LR解析器进行解析?
使用谷歌,我只发现C可以用LR(1)完美解析,但C++需要LR(∞).
在C++中,符号"<"和">"用于比较以及表示模板参数.因此,代码片段
[...] Foo < Bar > [...]
Run Code Online (Sandbox Code Playgroud)
可能被解释为以下两种方式中的任何一种:
C++编译器的解析器如何有效地决定这两种可能性?