算术表达式文法
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
暂无评论内容