分享

如何写表达式产生式 重要性5

 quasiceo 2013-12-11
表达式解析 可以使用 递归下降 + 堆栈,也可以使用纯粹的递归下降.
使用递归下降 + 堆栈,更容易形成语法树,也更容易扩展.

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

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

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

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

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


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

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

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

将操作符封装为类.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多