Skip to content

  • 项目
  • 群组
  • 代码片段
  • 帮助
  • 当前项目
    • 正在载入...
  • 登录 / 注册
L
Lab08
  • 项目
    • 项目
    • 详情
    • 活动
    • 周期分析
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
    • 统计图
  • 问题 0
    • 问题 0
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 0
    • 合并请求 0
  • CI / CD
    • CI / CD
    • 流水线
    • 作业
    • 日程
    • 统计图
  • Wiki
    • Wiki
  • 代码片段
    • 代码片段
  • 成员
    • 成员
  • 折叠边栏
  • 活动
  • 图像
  • 聊天
  • 创建新问题
  • 作业
  • 提交
  • 问题看板
  • 银宸时代
    • CP Lab Group
  • 实验项目模板
  • Lab08
  • Issues
  • #2

已关闭
未关闭
在 11月 16, 2020 由 李嘉鑫@li-fstz@li-fstz 
  • 违规举报
  • 新建问题
举报违规 新建问题

当前计算 FOLLOW 集的算法无法处理含有空产生式的文法

应在AddSetToSet(&TempFirstSet, pFirstSetXn);下添加以下代码:

if (SetHasVoid(pFirstSetXn) && pSymbol->pNextSymbol->pNextSymbol == NULL) {
    AddSetToSet(&TempFirstSet, GetSet(pFollowSetList, pRule->RuleName));
}

此处补充的逻辑是 A->BC 如果 C 可以推出空则应该向 FOLLOW(B) 中加入 FOLLOW(A)。


以上添加的逻辑太简单了,不能处理所有含有空产生式的情况

编辑时间 11月 17, 2020 作者 李嘉鑫
指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无截止日期
0
标记
无
指派标记
  • 查看项目标记
引用: engintime/cp-lab/Project-Template/Lab08#2