打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何写表达式产生式 重要性5
表达式解析 可以使用 递归下降 + 堆栈,也可以使用纯粹的递归下降.
使用递归下降 + 堆栈,更容易形成语法树,也更容易扩展.

递归下降对应递归调用.
考虑递归调用的终止条件.

表达式中最低优先级的是最基本的,对应生成的语法树的最底层,最接近终止条件,最先写.

根据产生式的匹配顺序,以及嵌套关系决定优先级比较麻烦.

将操作符和 操作数 分别放到两个堆栈中,易于扩展.

每个规则对应一个函数.
函数内首先处理 可以处理的termial ,即退出递归的条件.


 expression = ["+"|"-"] term {("+"|"-") term} .

 term = factor {("*"|"/") factor} .

 //不考虑三元操作符 , 将 上面的两项合并
                        一元操作符        二元操作符
 expression =[ uniOp ] factor  { dblOp  factor} .

将操作符封装为类.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何手写语法分析器 - λ-calculus in C++Blogs - C++博客
108.递归整数四则运算
漫谈递归:递归的思想
编程中国
也谈表达式分析和计算
复杂的正则表达式应该如何构造 | 我爱正则表达式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服