我几乎不了解我要问的问题,因此我想根据针对给定语法实现解析器所需的技能水平提出建议(因为我是这种形式化方法的初学者解析器和语言)。

仅仅回顾了几年,这种情况让我想起了Pascal语法和C / C++语法,这是左右之分。

但是我不会做任何事情,我的目的是为Markdown等文档的标记语言实现一个简单的解析器。

因此,考虑到我是从一种标记语言入手的,所以我想使事情保持简单,这是在这两个选项以及为什么之间最容易处理的一种。对我来说,另一种语法可能更容易吗?如果是,您建议哪一个?

最佳答案

右递归与左递归主要取决于您将如何实现解析器。

如果您要进行自顶向下(例如递归下降)解析器,则通常需要在语法中使用正确的递归(对于纯递归下降,这是唯一的选择)。

如果要进行自底向上的解析器,通常需要使用左递归。自下而上的解析器通常是由解析器生成器(如Yacc或Bison)生成的,其中大多数可以在需要时处理右递归,但可以更有效地处理左递归,因此,只要它不会对语义产生不利影响,则是首选方法。

关于c++ - 右递归语法还是左递归?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24025119/

10-14 18:39
查看更多