【编译原理】预测分析表方法

算术表达式文法
E→TE’
E’ → +TE’|- TE’|ε
T→FT’
T’ →*FT’ |/ FT’ |%FT’|ε
F→(E) |id|num

给定一符合该文法的句子,如id+id*id#,运行预测分析程序,给出分析过程和每一步的分析结果

前言

  • 代码遵从C++14标准,忙着别的事潦草的完成,还有许多需要优化的地方。
  • 预测表里面的数:-1代表这有报错,其他数字拆开十位代表行,个位代表列;
  • 行:给出文法的行,从0开始,如:E→TE’是第0行;因为只需要到了右半部分所以只保留了右半部分
  • 列:为什么会出现列呢?因为很多文法右半部分是或的关系,如:T’ →*FT’ |/ FT’ |%FT’|ε 依次的行列是(3,0),(3,1),(3,2),(3,3)所以预测表里存储的是30,31,32,33
  • 其他部分看代码的注释即可,有问题可以留言或加我QQ讨论

话不多说上代码

温馨提示:本文最后更新于2022-05-08,若文件或内容有错误或已失效,请在下方留言
© 版权声明
THE END
喜欢就支持一下吧
点赞19赞赏 分享
评论 共9条

请登录后发表评论