- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
自顶向下的运算符优先级
自顶而下的运算符优先级
《代码之美》第九章
李长城
前言
• 为什么要讲这篇文章?我之所以要讲这篇文章:
• 第一是因为这种技术非常美妙:不光是从思想上,
而且实现效率极高,逻辑清楚,层次分明,易于
扩展和维护。
• 第二是因为它展示了JavaScript语言一些精彩的、
值得程序语言设计者思考借鉴的特性。
• 第三是因为解析是解释与编译前非常重要的一步,
而如果你不懂解释器,你就不会成为程序员中的
master。
JavaScript简介
• JavaScript是一门动态函数语言,有丰富的支持面向对象
编程的方法。但从句法看,却比较接近C 。
• JavaScript是一种广泛用于客户端Web开发的脚本语言,
常用来给HTML网页添加动态功能,比如响应用户的各种
操作。它最初由网景公司的Brendan Eich设计,是一种动
态、弱类型、基于原型的语言,内置支持类。以它为基础
,制定了ECMAScript标准。(摘自维基百科)
• 虽然更常用于网页,但JavaScript也可以用于其他场合,
比如服务器端编程(参见Rhino)。(摘自维基百科)
• 关于JavaScript更进一步的语言特性,会在讲文章的相应
部分时讲解。
解析器简介
• 在此有必要先介绍一下
什么叫解析器。右图是
程序语言从原文件到解
释、编译的一个流程。
• 其中FrontEnd有两个部
分组成,第一部分把原
文件字符串转换成一串
语素,第二部分解析器
则将语素串组织成表达
式,语句,语块之类的
语法结构,最后生成一
个抽象语法树。
图片截自Essentials of Programming Languages
解析器实现需要?
• 1、正确根据运算符的优先级将语素串组织
成表达式;
• 2、变量的处理——作用域的处理:在作
用域中定义新的元素,查找作用域内变量,
创建新的作用域;
• 3、对函数声明及调用的处理。
• 4、对各种语句的处理。
• 其中的重点是优先级的处理。
• 为了更好的理解文章的内容,我们需要先
做一下准备工作。
准备工作
• 为了后面方便,先介绍一些JavaScript语法。
• var语句:定义变量
• 函数定义:function 可选函数名{函数体}
(和数、字符串一样,是值的一种)
• this: 当前对象
• 对象:{key1:值,key2:值,} (值的一种)
• 创建新对象(一种方法):object (原型)
• ||:一种二元中置运算符,a||b 当a为假值时
返回b的值。
解析流程的大体解释
• 我们的解析器是由符号表驱动的,可理解
为构造解析树的方法有以下几种:
• 1、符号表中符号的方法(构造以本符号为
根的解析树的方法);
• 2、解析表达式的方法expression;
• 3、解析语句的方法statement和语句组的方
法statements 。
• 这些过程之间相互调用。最终构造出了一
颗解析树。
• 解析器工作的大体过程如下:
• 程序是有一条条的语句组成的,解析时首
先调用statements,而statements则反复调
用statement直至程序结束,将解析所得的
结果并入一个列表作为最终解析结果。
• statement一次解析一条语句,如果语句开
头的语素是语句类型的标识,则调用相应
的方法,按相应的语法规则来解析语句;
如果不是,则此语句应是表达式语句(赋
值表达式或函数调用表达式)。
• 解析器的工作就主要转化为对表达式的解
析,和应用语法规则解析语句的一个过程。
符号表
您可能关注的文档
- 窗体顶端解析思科数据中心虚拟化技术和部署数据中心的发展正在.DOC
- 立体声蓝牙音频模组StereoBluetoothAudioModule.PDF
- 竞争性谈判文件-专业网站制作.PDF
- 童话形象-行知阅读.PDF
- 章节词汇索引index.PPT
- 竹产业生态系统结构及演化规律-生态学报.PDF
- 端到端的身份管理解决方案-Oracle.PDF
- 第11防炎防火対象物.PDF
- 第11防炎防火対象物防炎物品.PDF
- 第16期株主通信.PDF
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)