在递归下降解析器中使用第一集
Using first-set in recursive descent parser
我在c++中为C编写递归下降解析器。我不知道在以下情况下如何选择正确的产品:
statement: labeled-statement | compound-statement | expression-statement | selection-statement | iteration-statement | jump-statement
我读到关于"first"-set的内容,它将预先标记/char与可能出现在结果中的第一个终端进行比较。目前我被困在使用递归下降解析器中的第一集,因为我只有一个函数,没有其他东西,没有每个规则的对象或任何其他我可以识别规则/产品的东西。
您的语法对于递归下降解析器无效,因为它在左侧是模糊的:
-
labeled-statement
以标识符 开头 -
compound-statement
以{
开头(这是好的) -
expression-statement
以标识符或数字开头(或(
)
可以停在这里,你有标签语句和表达式语句之间的冲突。您需要转换您的语法以消除左侧的歧义(通过临时语法节点来包含公共部分,以便在进行分支时,您可以仅使用提前查找来确定要转到哪个分支)。
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- 如果 x,递归不起作用,我的函数只能删除第一个元素
- C / SFML:使用两个递归调用在屏幕上打印凸形形状仅显示第一个递归调用中的形状,而不是第二个
- 递归函数在数组中找到第一个错误
- 如何在递归模板函数的第一次调用时执行函数
- Fencepost问题:我需要一个递归函数,当它第一次被调用时,它会跳过执行一个部分
- 非递归 Kosaraju 的两次传递算法实现需要很长时间才能在大型数据集上执行
- 幂集~递归~哈塞图
- 递归函数的分区,斯特林数,和切比雪夫多项式的第一
- 一种测试您是否第一次运行多个递归调用 C++ 的方法
- 在递归下降解析器中使用第一集
- 递归呼吸优先搜索适用于第一次执行,但不适用于随后的执行