表达式解析 可以使用 递归下降 + 堆栈,也可以使用纯粹的递归下降.
使用递归下降 + 堆栈,更容易形成语法树,也更容易扩展.
递归下降对应递归调用.
考虑递归调用的终止条件.
表达式中最低优先级的是最基本的,对应生成的语法树的最底层,最接近终止条件,最先写.
根据产生式的匹配顺序,以及嵌套关系决定优先级比较麻烦.
将操作符和 操作数 分别放到两个堆栈中,易于扩展.
每个规则对应一个函数.
函数内首先处理 可以处理的termial ,即退出递归的条件.
expression = ["+"|"-"] term {("+"|"-") term} .
term = factor {("*"|"/") factor} .
//不考虑三元操作符 , 将 上面的两项合并
一元操作符 二元操作符
expression =[ uniOp ] factor { dblOp factor} .
将操作符封装为类.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。