c-建议编写一个解析器,读取CFG并删除左递归



我需要一些关于编写一个接受CFG并删除左递归的解析器(使用C和Lex)的建议。由于解析器需要接受任何字符串和语法,我对如何启动一无所知。虽然我熟悉去除左递归的算法(如前所述,我不知道如何开始,以及所涉及的数据结构是什么。存储语法和字符串的最佳方式是什么。以及如何有效地应用该算法。请提出建议。(由于这是家庭作业,请不要向我提供代码,而是任何其他帮助/伪代码都应该提供):)

  1. 您需要定义一个描述语法的语法P。这应该很容易
  2. 你需要为P构建一个解析器。它不必很复杂,因为P不会很复杂。相信我。您可以使用此方法编写递归下降语法分析器:https://stackoverflow.com/a/2336769/120163
  3. 当P解析时,它建立了一个表示语法的数据结构。这样的数据结构需要为每个规则记录其左侧、长度以及组成规则体的令牌
  4. 此时,您已经收集了数据结构中的规则,现在需要通过调整规则来应用左递归算法
  5. 最后,你需要打印出规则;它们应该以您为P选择的语法重新出现

最新更新