[发明专利]基于机顶盒浏览器的JavaScript解释器实现方法无效
申请号: | 201110131404.0 | 申请日: | 2011-05-19 |
公开(公告)号: | CN102202242A | 公开(公告)日: | 2011-09-28 |
发明(设计)人: | 黄旭阳;雷曾荣;罗育泽;刘宇 | 申请(专利权)人: | 广东星海数字家庭产业技术研究院有限公司;中山大学 |
主分类号: | H04N21/4782 | 分类号: | H04N21/4782 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 510006 广东省广州市番禺区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 机顶盒 浏览器 javascript 解释 实现 方法 | ||
1.一种基于机顶盒浏览器的JavaScript解释器实现方法,其特征在于:解释器系统包括解释前端和解释后端及解释执行控制模块,解释前端包括词法分析器模块、语法分析器模块、源文件模块、出错处理模块、中间码生成模块;解释后端包括执行栈模块、对象库模块、子句解释器模块、表达式规约模块、对象解释模块、与浏览器交互模块、系统资源管理模块;
其中,词法分析器模块将源程序以字符串的方式读入,并将其分为若干个记号,记号于自然语言中的单词类似;我们将JavaScript语言的单词分为标识符、字符串、整数、浮点数、布尔值、运算符等;源程序经过词法分析后生成一个单词双向链表,供后面的语法分析器模块调用;
语法分析器模块以单词链表作为输入,分别调用不同的语句识别器,识别它们是否符合给定文法,并最终生成一个语法树结构的中间代码,供后面解释执行控制模块执行;
中间码生成模块是把源程序经词法分析和语法分析后产生的结果生成为中间结果,它包含程序流程结构和数据字典两方面的内容,程序流程结构中包含了各种语句结构,数据字典是用来存放程序数据的地方,它是指存贮的全局变量、子程序中的局部变量和复合语句中的局部变量的集合;数据字典供表达式归约模块在归约过程中查找所需要的数据,
解释执行控制模块解释执行控制器负责根据预先生成好的中间数据结构,按照语句的语义对源程序语句进行逐条解释执行,它控制程序的顺序执行过程;执行过程中调用语句解释器解释执行单条语句,并根据解释结果控制程序的继续执行或终止;
执行栈模块是表达式归约模块所要用到的数据结构,它包含一个符号栈和一个操作数栈,分别用来存放表达式归约过程中的终结符号和操作数;
对象库模块也是用来存放程序数据的地方,它是指存贮的系统定义对象、
浏览器文档模型中的对象和用户自定义对象的集合;对象库为解释器的对象解释提供了运行基础,同时也为解释器与浏览器的交互提供了运行机制;它包含了对象的属性、方法和事件处理等方面的内容;
出错处理模块负责处理词法分析、语法分析及解释执行过程中出现的错
误,如果源程序词法语法不符合JavaScript语言的规则,或者执行时出现错误,则记录当前执行的语句,并立即返回;
子句解释器模块完成单条语句的解释执行;每一种类型的语句都对应一个语句解释器;它根据语句类型完成相应的语义动作;子句解释器在解释过程中调用表达式归约模块计算表达式的值,并根据计算结果控制语句流程;
表达式归约模块完成在语句执行过程中组成语句的各种表达式的运算;表达式归约模块按照表达式的产生式规则找出子表达式进行归约最终得出表达式的运算结果;
对象解释模块实现JavaScript语言基于对象的特性,它包含对象的引用、方法调用和事件处理;在对象解释过程中,解释器通过对象属性值的变化、对象的方法调用或事件处理完成与浏览器的交互;与浏览器交互模块完成脚本程序的解释执行对网页产生的副作用,修改浏览器对象的属性,影响或改变浏览器的输出显示;
系统资源管理模块系统资源管理作用于整个解释器,对解释器所用到的内存资源进行分配和回收,对CPU资源进行合理控制。
2.根据权利要求1所述的一种基于机顶盒浏览器的JavaScript解释器实现方法,其特征在于:
所述的解释前端的设计上,语法分析器模块在逻辑上高于词法分析器模块和语义动作部件,采取“即用即取”的策略,节省了单词链表等中间数据结构的内存开销。
3.根据权利要求1所述的一种基于机顶盒浏览器的JavaScript解释器实现方法,其特征在于:解释器的后端系统实际上是一个解释自定义字节码的虚拟机,后端虚拟机系统是由字节码解释控制程序和函数调用关系栈、操作数栈、变量数据栈和对象信息记录表五部分组成的;
其中,字节码字节控制程序根据字节码的操作符码,对操作数进行操作,比如进栈出栈等;函数调用关系栈记录了JavaScript各种可执行代码的相互调用关系,每当进入一个新的可执行代码,就在函数调用关系栈栈顶压入当前可执行代码的的执行上下文环境信息;操作数栈主要用于进行各种计算和中间结果的保存,中间字节码的所有计算均基于它来进行,变量数据栈用于记录字节码执行时的变量信息,每当进入一个新的可执行代码,就在变量数据栈压入当前可执行代码的局部变量信息,包括变量名称、类型、值,一旦当前的可执行代码执行完毕,变量数据栈顶元素即被弹出,同时函数调用关系栈和操作数栈中相关元素弹出;对象信息记录表是存储各种JavaScript对象的内存区;由于手机中间件平台的可用内存资源有限和小内存块利用不充分的特点,将固定长度的结构数组作为对象信息记录表;对象记录表中记录包括对象的属性个数、对象的属性信息等;在JavaScript中,对象的方法也被视作对象的属性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东星海数字家庭产业技术研究院有限公司;中山大学,未经广东星海数字家庭产业技术研究院有限公司;中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110131404.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:真空电镀紫外光固化底漆
- 下一篇:一种检测热插拔设备的方法及系统