【发布时间】:2020-09-01 18:03:08
【问题描述】:
我试图弄清楚如何从我的 Ruby 解析器 (https://github.com/kenaniah/ruby-parser/blob/master/ruby-parser/src/parsers/expression/logical.rs) 的 Rust 端口中的逻辑关键字表达式中删除间接左递归。语法如下:
E --> N | A | O | t
N --> n E
A --> E a E
O --> E o E
E = expression
A = keyword_and_expression
O = keyword_or_expression
N = keyword_not_expression
我将如何进行转换以删除 A 和 O 中的递归?
【问题讨论】:
-
正如源代码所示,我已经从那些中删除了左递归(那些是直接左递归的情况,我知道如何处理)。这是 间接 递归让我感到困惑,因为我不确定如何将其转换为等效的语法。