我对维基百科上的引用感到困惑:
这意味着解析器生成器(例如bison)非常强大(因为它可以处理换句话说,如果一种语言足够合理,可以允许高效的一遍扫描解析器,那么它可以由LR(k)文法描述。而且,该文法总是可以机械地转化为等价的(但更大的)LR(1)文法。因此,LR(1)解析方法在理论上足够强大,可以处理任何合理的语言。实际上,许多编程语言的自然文法接近于LR(1)。
LR(k)
文法),如果能够将LR(k)
文法转换为LR(1)
文法。是否存在一些示例或如何执行此操作的说明?我想知道这个,因为我的语法中存在移位/规约冲突,但我认为这是因为它是LR(2)
文法,想将其转换为LR(1)
文法。附带问题:C ++
是否是不合理的语言,因为我读到,bison
生成的解析器无法解析它。