找回密码
 注册
关于网站域名变更的通知
查看: 390|回复: 2
打印 上一主题 下一主题

[资料] 表达式求值

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-4-26 11:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
表达式求值是程序设计语言编译中的一个最基本问题。它的实现时栈应用的又一个典型例子。这里介绍一种简单直观、广为使用的算法,通常称为“算法优先法”。
1 ]7 g  i! b! k, n/ ]# c: [要把一个表达式翻译成正确求值的一个机器指令序列,或者直接对表达式求值,首先要能够正确解释表达式。例如,要对下面的算术表达式求值:
( z5 @4 C/ Q8 J) ^0 ?6 K, a. {4+2×3-10/5
( F1 q7 E% s8 z" \! ]. j2 {首先要了解算术四则运算的规则。即:
$ P. L; b- a: q$ y. L, D(1)
( f8 B7 w, n! S: K; i& F& S先乘除,后加减;" k3 {0 T& v1 h( A
(2)
' G4 C, O5 v8 d# O8 M; O( V从左算到右;
+ I% M3 `, q  X. w5 q6 Z& _(3)
1 |' k. t' |; }  _- D先括号内,后括号外。$ f4 F. b3 R2 z3 j% q* E
由此,这个算术表达式的计算顺序应为
! G7 V0 j6 P* K' p/ m, W4 I9 F4+2×3-10/5=4+6-10/5=10-10/5=10-2=8
& F" Z$ n& N2 @- X; S# z0 m& L0 H- Z算符优先法就是根据这个运算优先关系的规定来实现对表达式的编译或解释执行的。4 A$ z! `5 _0 V* ]1 d2 G
任何一个表达式都是由操作数、运算符和界限符组成的,我们称它们为单词。一般地,操作数既可以是常数也可以是被说明符为变量或常量的标识符;运算符可以分为算术运算符、关系运算符和逻辑运算符3类;基本界限符有左右括号和表达式结束符等。为了叙述的见解,我们仅讨论简单算术表达式的求职问题。这种表达式只含加、减、乘、除4种运算符。
, ?0 t7 P0 ^4 o8 j3 d) n我们把运算符和界限符统称为算符,它们构成的集合命名为OP。根据上述3条运算规则,在运算的每一步中,任何两个相继出现的算符θ1和θ2之间的有限关系至多是下面3种关系之一;
5 {  U' R2 o4 Mθ1<θ2  θ1的优先权低于θ2
; k$ a6 l! G. _θ1=θ2  θ1的优先权等于θ2) R& C( L+ P. O: U* E! J
θ1>θ2  θ1的优先权高于θ2

该用户从未签到

2#
 楼主| 发表于 2016-4-26 13:55 | 只看该作者
自己支持下

该用户从未签到

3#
发表于 2016-6-6 14:50 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈~谢谢
  B3 R! I5 ]" N1 ?7 w
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-12 06:29 , Processed in 0.093750 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表