表达式的处理

做表达式的运算时,一般把中缀表达式转换成后缀表达式

比如 a = b + c

转换成 a b c + = 

译码时先做词法分析,(就是把表达式中的每个基本部分输入到栈中,我分为运算符和变量两种元素)

按照中缀表达式的顺序,a = b + c

之后转换成后缀表达式,:遇到数字直接入后缀表达式栈,(同时事先定义好运算符的优先级,定义一个暂时的符号栈 ),遇到运算符就将其与符号栈栈顶的运算符优先级比较,低就将其入后缀表达式栈,高则将符号栈顶的运算符出栈,并且入到后缀表达式栈中,继续与现在的符号栈栈顶比较优先级,后续操作如上。

之后的计算就比较简单了,不赘述。

但是译码时也会遇到特殊的格式  比如  a = fun_1(b ,c)+d  这种表达式,函数作为一个基本的运算单位,我想了两天,纠结于是否把函数名当作一个运算符处理,之后的括号,参数按照之前的方式处理。但是这样太复杂了,考虑逗号与数组逗号的重复。

现在我考虑把fun_1(b,c)当作一个变量处理,那么整个表达式就简单了很多了。(吐槽一下我的思考能力,就和考数学一样,审题,然后根据题型特点选择合适的公式和定理,我认为这是数学考高分的诀窍,但是自己总是脑子转不到那里去。常常在笨拙的方法上越走越远,难受。) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值