一起来写个简单的解释器( 5):加减乘除表达式
弹出层效果倒计时效果用 JS 实现放大镜特效用 JS 实现购物车特效
本文由 伯乐在线 - SamLin 翻译,黄利民 校稿。未经许可,禁止转载!
英文出处: Ruslan Spivak 。欢迎加入翻译组。本系列:
《一起来写个简单的解释器( 1)》
《一起来写个简单的解释器( 2)》
《一起来写个简单的解释器( 3)》
《一起来写个简单的解释器( 4)》
如何创建一个解释器或编译器这么复杂的问题,你会如何处理呢?开始的时候它很像是一团乱糟糟的毛线,你得重新梳
理展开,然后缠成一个完美的毛线球 。
达到上述目的的方法只需一次解开一根线、一个结。虽然有时候你可能会觉得你无法马上理解某些事情,但是你必须坚持下去。我保证如果你足够坚持,最后你会“豁然开朗”(哎
呀呀,如果每次我不能马上弄懂某些事情的时候, 我都存 25
美分,那么我早就变成富豪了 :))。
关于理解如何创建一个解释器和编译器,也许我能给你的最好建议之一就说阅读本系列文章的解释、代码,然后自己去编写代码,甚至在一段时间内多次编写同样的代码,使得这些材料和代码对于你来说是很自然的。直到那时才继续学习新的主题。不要着急,请慢下来,花时间去深刻地理解基础概念。虽然这种方法看起来有点慢,但是你会受益匪浅。相信我。
你在最后终究会得到完美的毛线球。你知道吗?即使它不够完美,但是总比什么都不做和不学习这些课题,或者走马观花然后几天之后就忘记了要好。
js购物车结算代码记住——只需要坚持不懈地解开缠绕: 一次一根线、 一个结,并且通过编写大量代码来实践你所学过的:
今天你将会用到在本系列前面几篇文章中学到的所有知识,并且学习如何解析和解释带有任意数量的加法、减法、乘法
和除法运算符的算术表达式。 你将会编写一个可以计算像“ 14
+2 * 3 –6 / 2 ”这样的表达式的解释器。
在深入研究和编写代码之前,让我们讨论一下运算符的结合律和优先级。
按照约定, 7+3+1 等同 (7+3)+1 ,7–3–1 等同 (7 –
3)–1 。这里没有什么可惊讶的。我们在某个时候学过那些
约定,并且从那以后把那些约定当作是理所当然的。如果我
们把 7 –3 –1 当作是 7 –(3 –1) ,那么结果会是 5 而不是
预期的 3。
在普通的算术运算和大部分编程语言中,加法、减法、乘法
和除法都是左结合:
Shell1234
7 + 3 + 1 is equivalent to (7 + 3) + 17 - 3 - 1 is equivalent to (7 - 3) - 18 * 4 * 2 is equivalent to (8 * 4) * 28 / 4 / 2 is equivalent to (8 / 4) / 2
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论