- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JavaScript语言解释器设计和实现
JavaScript语言解释器设计和实现 摘 要 近些年来,随着我国各类嵌入式浏览器的不断出现,对JavaScript语言解释器得到更广泛的应用和发展都是十分有利的。文章对JavaScript语言解释器的总体结构以及JavaScript语言解释器实现的技术两个方面的内容进行分析和探析,从而论述JavaScript语言解释器的设计和实现工作。
关键词 JavaScript语言解释器;总体结构;实现技术
中图分类号:TP314 文献标识码:A 文章编号:1671-7597(2014)01-0023-01
1 JavaScript语言解释器的总体结构
整个JavaScript语言解释器在调用各个功能模块时都是以总控程序为中心的,其各个模块的具体功能如下。
1)词法分析。为了更有效的进行语法分析,JavaScript脚本程序是嵌入在html文本中的,并且其是一类输入形成的具有双向链表结构的单词链表。
2)语法分析。在JavaScript语法和语言的规则下,输入形式为单词链表,能够形成中间数据结构,这样就能够清晰的显示出程序语句描述的数据处理流程。
3)语句解释器。其作用为有效的解释和执行各类型的控制语句,同时还会调用解释执行器从而形成递归调用。
4)解释执行器。在控制语句解释器的执行时,是以中间的数据结构作为输入的。
5)表达式规约器。其作用为在语句解释器工作的过程中,能够准确的完成各类表达式的赋值语句和运算的执行,同时由语句解释器来调用。
6)与浏览器交互。在表达式的运算过程中,此模块能够及时的修改当前html文本和文档对象中各种控件对象的属性值,同时还能够以浏览器输出的形式将其表现出来。
2 JavaScript语言解释器实现的技术
1)语言解释器的总控程序。其主要负责整个JavaScript语言解释器的运行和控制,同时也是浏览器和解释器间的接口。首先在词法分析器的结构处,解释器中的JavaScript源程序会形成一个双向的单词链表,然后,在语法分析器的结构处,双向的单词链表又会形成一个中间的数据结构,最后执行器会根据各个语句进行有效的执行,各功能模块调用时都会反馈结果,而总控程序就是以此为依据控制解释器的运行的。
2)中间数据结构。作为整个JavaScript语言解释器运行的基础,中间数据结构最主要的作用就是保存语法分析的中间结果,主要有程序语句、程序流程以及各变量的中间描述,这些工作都是在语法分析阶段完成的,因此,我们只需要给出简单的结构描述。对变量结构VALUE-TYPE设计时,我们应充分的保证各个类型的变量与逻辑存储结构的统一性。所以,JavaScript语言解释器是用名称、类型以及不同类型的变量值来描述变量的。因为JavaScript这类语言的弱类型性,所以我们并不需要明确的指定其类型,在运行的过程中确定其类型就可以了。
3)解释执行控制器。其最重要的作用就是有效的控制程序语句的各个解释执行的流程,而解释执行控制器也是整个JavaScript语言解释器的核心结构,进行解释执行时,其从第一条语句就开始工作了,并且不同类型的语句其单条语句的处理模块也是不同的,举例来说,在系统进入deal-if-statement模块的IF语句,只要前一句解释成功就可以解释下一语句了,当前一语句没有解释成功时,那么就无法解释下一语句了,并且不同类型的控制语句其都有对应的解释模块,中间的描述结构指针就是传入参数,在调用各个单独的语句解释模块后就形成了各类的复合语句等递归调用。
4)表达式规约器。作为整个JavaScript语言解释器最核心的组成部分,表达式规约器的作用就是顺利的完成各类赋值语句和表达式的执行和运算。各种类型的表达式组成了程序设计语言中的各类语句,通常情况下,表达式含有函数、算符以及数据引用等调用模式。而调用对象的自身特点也决定了表达式的复杂性,对象的属性、一般类型的变量以及常量都可以是表达式的引用数据,而函数调用则可以是对象的方法或是用户自定义的调用。
为了更加有效并且准确的控制解释器的运行状态,我们就必须保证所有表达式运算的统一性。①由于在语法的分析阶段只需要弄清构成表达式的各个单词串,而并不需要掌握表达式的语义,所以如果可以由规约器对表达式进行操作和处理,那么整个解释系统就变得十分简化了;②如果能够保证各类表达式的统一性,那么原来应在主控程序中完成的复杂控制逻辑就被转移到规约器中去操作完成了,因此在算符方法的基础上,作者设计了算符优先的分析算法,从而保证了JavaScript中所有表达式的统一性。其主要的设计思路就是充分的参考了基于对象的JavaScript语言的自身特点:建立新的算符和产生式规则后,对象的属性就被转化成了表达
文档评论(0)