gpt4 book ai didi

c++ - 在递归下降解析器中使用第一集

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:49 26 4
gpt4 key购买 nike

我正在用 C++ 编写 C 的递归下降解析器。在以下情况下,我不知道如何选择合适的制作:

statement: labeled-statement | compound-statement | expression-statement | selection-statement | iteration-statement | jump-statement

我读到了“第一”集,它将先行标记/字符与可能的终端进行比较,后者在产品中首先出现。目前,我一直坚持在递归下降解析器中使用第一个集合,因为我只有一个函数,没有其他任何东西,每个规则都没有对象,也没有任何其他我可以用来识别规则/产生式的对象。

最佳答案

您的语法对于递归下降解析器无效,因为它在左侧不明确:

  • labeled-statement 以标识符开头
  • compound-statement{ 开头(这很好)
  • expression-statement 以标识符或数字开始(或 ()

可以到此为止,标签语句和表达式语句之间存在冲突。您需要转换语法以消除左侧歧义(通过临时语法节点包含公共(public)部分,以便在分支时您可以仅使用前瞻性来确定要转到哪个分支)。

关于c++ - 在递归下降解析器中使用第一集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7433838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com