6.解析表达式算法

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 6.解析表达式算法

1.解析表达式算法

编写算术表达式的方法称为 符号 。算术表达式可以用三种不同但等效的符号书写,即不改变表达式的本质或输出。这些符号是 -

  • 中缀表示法
  • 前缀(波兰语)表示法
  • 后缀(反向波兰)表示法

这些符号被命名为它们如何在表达式中使用运算符。我们将在本章中学到相同的内容。

中缀表示法

我们用中 表示法编写表达式,例如a - b + c,其中运算符用 操作数之间。我们人类很容易用中缀符号进行读,写和说话,但同样适用于计算设备。在时间和空间消耗方面,处理中缀符号的算法可能是困难且昂贵的。

前缀表示法

在这种表示法中,运算符是操作数的 前缀 ,即操作符在操作数之前写入。例如, + ab 。这相当于其中缀符号 a + b 。前缀表示法也称为 波兰表示法

后缀表示法

这种符号样式称为 反转波兰表示法 。在这种表示法样式中,运算符 后缀 为操作数,即操作符在操作数之后写入。例如, ab + 。这相当于其中缀符号 a + b

下表简要介绍了所有三种符号的区别 -

Sr.No. 中缀表示法 前缀表示法 后缀表示法
1 a + b + ab ab +
2 (a + b)* c * + abc ab + c *
3 a *(b + c) * a + bc abc + *
4 a / b + c / d + / ab / cd ab / cd / +
5 (a + b)*(c + d) * + ab + cd ab + cd + *
6 ((a + b)* c) - d - * + abcd ab + c * d -

解析表达式

正如我们已经讨论过的,设计一个解析中缀符号的算法或程序并不是一种非常有效的方法。相反,这些中缀符号首先转换为后缀或前缀表示法,然后进行计算。

要解析任何算术表达式,我们还需要处理运算符优先级和关联性。

优先权

当操作数位于两个不同的运算符之间时,哪个运算符将首先取操作数,由运算符优先于其他运算符决定。例如 -

由于乘法运算优先于加法,因此将首先计算b * c。稍后提供运算符优先级表。

关联性

关联性描述了具有相同优先级的运算符出现在表达式中的规则。例如,在表达式a + b -c中,+和 - 具有相同的优先级,然后表达式的哪个部分将首先被评估,由这些运算符的关联性决定。这里,+和 - 都是左关联的,因此表达式将被评估为 (a + b) - c

优先级和关联性决定了表达式的评估顺序。以下是运算符优先级和关联表(从最高到最低) -

Sr.No. 操作者 优先权 关联性
1 Exponentiation ^ 最高 正确联想
2 乘法(*)和除法(/) 第二高 左联想
3 加法(+)和减法( - ) 最低 左联想

上表显示了运算符的默认行为。在表达式评估的任何时间点,可以使用括号来更改顺序。例如 -

a + b * c中 ,首先评估表达式部分 bc ,乘法作为加法的优先级。我们在这里使用括号为 A + B 先计算,如 (A + B) C

目录
打赏
0
0
0
0
487
分享
相关文章
.NET 平台 SM2 国密算法 License 证书生成深度解析
授权证书文件的后缀通常取决于其编码格式和具体用途。本文档通过一个示例程序展示了如何在 .NET 平台上使用国密 SM2 算法生成和验证许可证(License)文件。该示例不仅详细演示了 SM2 国密算法的实际应用场景,还提供了关于如何高效处理大规模许可证文件生成任务的技术参考。通过对不同并发策略的性能测试,开发者可以更好地理解如何优化许可证生成流程,以满足高并发和大数据量的需求。 希望这段描述更清晰地传达了程序的功能和技术亮点。
131 13
.NET 平台 SM2 国密算法 License 证书生成深度解析
|
11天前
|
基于 C# 的内网行为管理软件入侵检测算法解析
当下数字化办公环境中,内网行为管理软件已成为企业维护网络安全、提高办公效率的关键工具。它宛如一位恪尽职守的网络守护者,持续监控内网中的各类活动,以确保数据安全及网络稳定。在其诸多功能实现的背后,先进的数据结构与算法发挥着至关重要的作用。本文将深入探究一种应用于内网行为管理软件的 C# 算法 —— 基于二叉搜索树的入侵检测算法,并借助具体代码例程予以解析。
25 4
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
26天前
|
关于员工上网监控系统中 PHP 关联数组算法的学术解析
在当代企业管理中,员工上网监控系统是维护信息安全和提升工作效率的关键工具。PHP 中的关联数组凭借其灵活的键值对存储方式,在记录员工网络活动、管理访问规则及分析上网行为等方面发挥重要作用。通过关联数组,系统能高效记录每位员工的上网历史,设定网站访问权限,并统计不同类型的网站访问频率,帮助企业洞察员工上网模式,发现潜在问题并采取相应管理措施,从而保障信息安全和提高工作效率。
33 7
探秘员工泄密行为防线:基于Go语言的布隆过滤器算法解析
在信息爆炸时代,员工泄密行为对企业构成重大威胁。本文聚焦布隆过滤器(Bloom Filter)这一高效数据结构,结合Go语言实现算法,帮助企业识别和预防泄密风险。通过构建正常操作“指纹库”,实时监测员工操作,快速筛查可疑行为。示例代码展示了如何利用布隆过滤器检测异常操作,并提出优化建议,如调整参数、结合日志分析系统等,全方位筑牢企业信息安全防线,守护核心竞争力。
基于 Go 语言的公司内网管理软件哈希表算法深度解析与研究
在数字化办公中,公司内网管理软件通过哈希表算法保障信息安全与高效管理。哈希表基于键值对存储和查找,如用户登录验证、设备信息管理和文件权限控制等场景,Go语言实现的哈希表能快速验证用户信息,提升管理效率,确保网络稳定运行。
30 0
基于生物地理算法的MLP多层感知机优化matlab仿真
本程序基于生物地理算法(BBO)优化MLP多层感知机,通过MATLAB2022A实现随机数据点的趋势预测,并输出优化收敛曲线。BBO模拟物种在地理空间上的迁移、竞争与适应过程,以优化MLP的权重和偏置参数,提升预测性能。完整程序无水印,适用于机器学习和数据预测任务。
106 31
基于LSB最低有效位的音频水印嵌入提取算法FPGA实现,包含testbench和MATLAB对比
本项目展示了一种基于FPGA的音频水印算法,采用LSB(最低有效位)技术实现版权保护与数据追踪功能。使用Vivado2019.2和Matlab2022a开发,完整代码含中文注释及操作视频。算法通过修改音频采样点的最低有效位嵌入水印,人耳难以察觉变化。然而,面对滤波或压缩等攻击时,水印提取可能受影响。该项目运行效果无水印干扰,适合实时应用场景,核心逻辑简单高效,时间复杂度低。
基于GA遗传算法的拱桥静载试验车辆最优布载matlab仿真
本程序基于遗传算法(GA)实现拱桥静载试验车辆最优布载的MATLAB仿真,旨在自动化确定车辆位置以满足加载效率要求(0.95≤ηq≤1.05),目标是使ηq尽量接近1,同时减少车辆数量和布载耗时。程序在MATLAB 2022A版本下运行,展示了工况1至工况3的测试结果。通过优化模型,综合考虑车辆重量、位置、类型及车道占用等因素,确保桥梁关键部位承受最大荷载,从而有效评估桥梁性能。核心代码实现了迭代优化过程,并输出最优布载方案及相关参数。

热门文章

最新文章

推荐镜像

更多