一种基于手机中间件的JavaScript解释器系统技术方案

技术编号:32202467 阅读:19 留言:0更新日期:2022-02-09 17:07
基于手机中间件的JavaScript解释器系统:基于封闭手机系统手机中间件的JavaScript解释器系统采用了解释前端与解释后端分离的策略,中间代码采用自定义的字节码。有更好的移植性,与手机中间件跨平台的特性恰好吻合。前端系统中,针对该中间件小内存块有效利用率低的特点,采用了语法分析器驱动词法分析和语义动作的策略,避免了小内存块的大规模使用,语义分析部分采用了面向构造抽象语法树的语法制导翻译法。制导翻译法。

【技术实现步骤摘要】
一种基于手机中间件的JavaScript解释器系统


[0001]本专利技术涉及基于手机中间件的JavaScript解释器系统,是一种基于手机一种手机中间件平台系统。

技术介绍

[0002]目前国外与国内市场上手机可以分为两类:SMART PHONE:;F口FE芦汀URE PHONE,SMARTPHONE硬件配置高,特点在于采用了开放式的智能的操作系统,例如SYMBIAN、WINDOWS MOBILE,用户在终端可以享受多层次的应用体验。而FEATUREPHONE则采用了相对封闭的实时操作系统,硬件配置相对较低,终端应用方面也乏善可陈。但是基于一种新型的手机平台中间件技术(VRE手机中间件),可以在FEATURE PHONE平台上扩展丰富的应用,其中基于F阻汀URE PHONE手机平台的浏览器就是其中之一。而通过JavaScript脚本解释器来支持对JavaScript脚本语言白勺解释执行是手机平台浏览器的核心功能之一。
[0003]JavaScript是一种轻型的、解释型的程序设计语言,而且具有面向对象的能力。该语言的通用核心已经嵌入了Netscape、Internet Explorer和其他的PC平台的Web浏览器中,而且它能用表示Web浏览器窗口及其内容的对象使Web程序设计增色不少。JavaScript的客户端版本把可执行的内容添加到了网页中,这样一来,网页就不再是静态的H丁ML了,而是包含与用户进行交互的程序、控制浏览器的程序以及动态创建HTML内容的程序。

技术实现思路

[0004]基于上述问题,特此专利技术基于手机中间件的JavaScript解释器系统;该系统基于封闭手机系统之上的一种手机中间件平台,采用Doug Lea内存管理算法对非常有限的系统内存进行管理,小内存块的有效利用率比较低,针对该手机中间件的内存特点,开发了基于封闭手机系统手机中间件上的一款JavaScript解释器系统,该系统分为解释前端和解释后端两部分,采取语法分析驱动词法分析和语义动作策略,并基于语法制导思想构造了JavaScript生成抽象语法树的属性文法。
具体实施方式
[0005]基于手机中间件平台VRE设计的JavaScript解释器系统分为前端和后端两部分。系统前端中,选用词法分析模块驱动词法分析和语法动作模块,相对于有些解释器结构中采用的单词链表和语句链表作为前端解释的载体的策略,极大地节省了小内存大规模的申请使用。前端系统通过语法分析模块中分析动作的驱动,调用词法分析模块中产生式归约所需要的单词符号,当一个产生式归约成功后,调用语法动作模块生成抽象语法子树。当一个可执行语句集归约完毕后,与之对应的抽象语法树(AST)构造完毕。由JavaScript解释器主控模块对抽象语法树进行遍历,生成自定义格式的中间字节码。对后端系统而言,前端系统产生的中间代码即为所需的目标码,对其进行解释执行并输出结果即可。前端系统的词
法分析模块和语法分析模块所使用的文法是ECMA一262第二版中的文法。ECMA一262是欧洲计算机制造商协会(ECMA)制定的脚本预研的国际标准。JavaScript V1.3完全兼容ECMA一262,而ECMA一262第二版只是修改了第一版中的~些错误。在前端系统中,根据JavaScript词法规则构造确定有限自动机(DFA),由确定有限自动机可以很容易地构造词法分析器。语法分析和语义部分则采用LALR分析方法和语法制导翻译方法。前端系统产生的中间代码采用自定义的字节码。采用字节码的好处是字节码与平台无关,在不同的平台上使用不同的解释器对它进行解释执行,即可实现在字节码级与各平台兼容,不仅仅局限于VRE手机平台,不必对字节码做任何修改。
[0006]此分析解释器主要分为:1. 1词法分析器构造;根据ECMA-262中JavaScript词法规则定义,构造出DFA的状态转换矩阵表,可以比较容易地构造出词法分析器。词法分析器以JavaScript源代码字符串作为输入,每次将源码字符串中的下一个单词符号信息返回给语法分析器。鉴于JavaScript语言基于其对象的特性,词法分析器返回给语法分析器的单词符号信息应该兼容基本数据类型和对象类型。符号信息数据类型定义如下:typedef struct lexer..word..info{int type; //单词符号类型union{int keyword; ,/关键字int intvalue; //整型数值float fvalue; //浮点型数值char*strvalue;//变量名、对象名、函数名或字符串等指针}wvalue;}lexer..word..i nfo;词法分析器在返回给语法分析模块结果之前,将识别结果写入符号表中。在该JavaScript解释器系统中,词法分析器被语法分析器驱动。
[0007]2. 语法分析器构造;解释器的前端系统的构架设计有多种方案,有的解决方法是把词法分析器、语法分析器和语义动作部件作为平行的部件来对待,即首先对整个源文件进行词法分析得到单词串链表,然后语法分析器逐个读取单词串进行词法分析并得到语句序列链表,最后语义动作对整个语句序列链表采取对应的语义处理。这种设计思路需要单词链表和语句链表作为中间数据结构来支撑,会造成小内存块的大规模占用,鉴于DougLea内存管理算法的特性,这种策略并不适合在手机中间件采用。
[0008]该JavaScript解释器在解释前端的设计上,语法分析器在逻辑上高于词法分析器和语义动作部件,采取“即用即取”的策略,节省了单词链表等中间数据结构的内存开销。语法分析模块负责驱动语法分析和语义动作两个模块,在通过LALR分析法进行产生式归约的过程中,逐个获取JavaScript单词符号并根据每条产生式的语义规则调用对应的语义动作。面向词法分析与语义动作驱动的LALR语法分析器算法如下:Begin初始化LALR归约状念为0状态;
Do//调用洲法分析,得到一个啦词符号word;lf(word有效&&LALR归约未到acc态)按照LALR分析表,基于符号栈做侈进、归约和跳转等操作,有归约时调用列应语义动作:ElseIF(LALR归约未到acc态)Break:ElseError:While(word有效&&LALR归约未到acc态)EndLALR语法分析过程中,基于符号栈和语法树指针栈进行操作。终结符非终结符的操作都基于一个符号栈来进行;在分析过程中生成的抽象语法树指针放在与符号栈对应的语法树指针栈中。
[0009]3. 语义动作模块构造;语法分析器运行过程中,当某个产生式被归约时,调用语义动作模块生成产生式的抽象语法子树(SubAS-I-)。本系统参照语法制导语义分析方法,构造了JavaScript语法生成抽象语法树的属性文法,以JavaScript中对象加法运算语法的属性文法为例,举例如下:A.>A+AA.ptr=NewASTNode(+,2,A1.ptr,A2.p仃)A.>A本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于手机中间件的JavaScript解释器系统:该方法主要是基于封闭手机系统手机中间件平台开发。2.根据权利要求1的基于手机中间件的JavaScript解释器系统,此系统解释器系统分为前端和后端两部分。3.根据权利要求2的基于手机中间件的JavaSc...

【专利技术属性】
技术研发人员:陈伟男
申请(专利权)人:江苏华扬信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1