混合式动态码编译装置、方法及其服务系统的制作方法_2

文档序号:8339436阅读:来源:国知局
静态码,且改写后的动态码则可以通过终端装置的动态码引擎进行解析。由于改写后的动态码保留了原始动态码与静态码之间进行沟通的功能传呼,因此终端装置在解析静态码与改写后的动态码之后,可以完整地执行原始的动态码的内容,以呈现原始的动态码对应的动态或互动的网页。
[0035]另外,上述混合式动态码编译装置及方法还可以解析动态码,取得对应动态码所使用的系统提供的应用程序接口的标注,以拦截垃圾回收处理的功能传呼,并且解析所述标注以产生静态码与修改后的动态码,以使终端装置可以依据网页开发者的设计来控制释放内存。换言之,上述混合式动态码编译装置及方法可以允许网页开发者可以依据需求,通过上述标注加速服务器的处理速度,或控制终端装置的内存的释放,以避免终端装置有内存泄漏的情况。
[0036]除此之外,本发明实施例还提供一种使用上述混合式动态码编译装置或方法的服务系统。上述混合式动态码编译装置或方法可以实现于服务系统的计算机装置、服务器与终端装置的其中一者或其组合,以将网页开发者所撰写动态码进行语法解析,并将动态码中能编译的部分(多个能编译的区块)转为静态码,以及将动态码中不能编译的部分(多个不能编译的区块)进行改写。如此,终端装置将可以使用静态码与改写的动态码来呈现原始动态码所对应的动态或互动的网页。换言之,终端装置呈现动态或互动的网页的处理速度与内存使用效率可有效地被提升。
[0037]请参照图1,图1是本发明实施例的混合式动态码编译装置的方块图。混合式动态码编译装置I包括语法解析器11、辅助分析器12、优化器13、静态码产生器14与动态码改写器15。语法解析器11连接辅助分析器12、优化器13与动态码改写器15,且优化器13连接静态码产生器14。
[0038]辅助分析器12用以接收文件标示语言,例如超文件标示语言,并且分析文件标示语言,以产生辅助信息给语法解析器11,其中辅助信息例如为动态码与网页界面之间的互动信息。语法解析器11接收动态码,例如JavaScript码,通过辅助信息的协助对动态码进行解析,以区分出多个能编译的区块(也即,动态码中能编译的部分)与多个不能编译的区块(也即,动态码中不能编译的部分)。优化器13接收多个能编译的区块,并对所述多个能编译的区块进行优化。静态码产生器14接收被优化后的多个能编译的区块,并将优化后的多个能编译的区块转换为静态码。
[0039]另外,动态码改写器15将多个不能编译的区块进行改写,以产生改写后的动态码,其中改写后的动态码具有原始动态码与与静态码之间进行沟通的多个功能传呼。由于改写后的动态码保留了原始动态码与静态码之间进行沟通的功能传呼,因此终端装置在解析静态码与改写后的动态码之后,可以完整地执行原始的动态码的内容,以呈现原始的动态码对应的动态或互动的网页。
[0040]接着,进一步地说明语法解析器11如何将动态码区分为多个能编译的区块与多个不能编译的区块的细节作法。虽然动态码(如JavaScript码)与静态码(C/C++码)在特性有极大的差异,但在语法结构上却非常类似,因此语法解析器11可以通过遍访(traverse)抽象树(Abstract1n Tree, AST)将动态码依据语言结构储存(也即整理动态码的语法结构),以加速编译流程,并据此将结构化码(structured code)提取出来。另外,因为动态码存在的物件或类别可能不会被明确地宣告,也即动态码的物件或类别可能为隐含的物件或类别,因此语法解析器11须将动态码中的物件或类别信息解析出来,才能够将动态码的物件或类别以利于静态语言的对照。除此之外,除了传统编译技术的用途外,语法解析器11可以记录曾出现过的变数,以作为型别推论(type inference)的基础。由此可知,语法解析器11可将动态码中结构化码、物件或类别信息与变数信息提取出来,以藉此建构多个区块,并且所述多个区块的部分可以成为能编译的部份,而被转码为静态码。
[0041]更进一步地说,语法解析器11通过符号表检视上述结构化码、物件或类别信息与变数信息所形成的多个区块是否为能编译的区块。符号表记录有符号类型与其是否能编译的关系,举例来说,区域变数(local variable)被记录为能编译,全域变数(globalvariable)被记录为不能编译,内建变数(built-1n variable)中的评估变数(evalvariable)被记录为不能编译,而内建变数的其他类变数则视实际实现方式被记录为不能编译或能编译。倘若区块中有全域变数或内建变数中的评估变数,则判断所述区块不能编译。相反地,若区块仅有区域变数,则判断所述区块为可能能编译的区块。接着,语法解析器11将可能能编译的区块进行型别推论,倘若可能能编译的区块的型别无法被确定,则判定所述可能能编译的区块为不能编译的区块。倘若可能能编译的区块的型别可以被确定,则判断可能能编译的区块为能编译的区块。
[0042]另外,本发明实施例的混合式动态码编译装置I还允许让网页开发者进行垃圾回收处理,以依据网页开发者的需求来控制终端装置的内存的释放,也即提供了一个应用程序接口给网页开发者,允许网页开发者呼叫系统进行垃圾回收处理。因此,通过内建特定功能于语法解析器11中,语法解析器11可以在对动态码进行语法分析时,取得对应动态码所使用的系统提供的应用程序接口的标注,以拦截垃圾回收处理的功能传呼,例如拦截V8引擎的全域停止型的垃圾回收处理功能传呼,并且解析标注判断网页开发者是否针对特定物件进行垃圾回收处理,以对应产生可以使终端装置进行垃圾回收处理的静态码与修正后的动态码。另外,语法解析器11也可以不拦截系统原本就需要进行全域停止型的垃圾回收处理功能传呼,而仅是解析标注判断网页开发者是否针对特定物件进行垃圾回收处理,以对应产生可以使终端装置进行垃圾回收处理的静态码与修正后的动态码,以让终端装置可以根据系统与网页开发者的指示确定何时应该释放内存。以V8引擎为例,对应地,终端装置的V8引擎的前端语法分析器会被修正,以使终端装置能够在接收到静态码与改写后的动态码后,根据网页开发者所撰写的标注触动垃圾回收处理机制。
[0043]于此实施例中,上述辅助分析器12与优化器13并不是混合式动态码编译装置I的必要元件。上述辅助分析器12可以被移除,且语法解析器11未必需要辅助分析器12所产生的辅助信息来解析动态码。上述优化器13也可以被移除,且静态码产生器可以直接对未进行优化的多个能编译的区块进行转码,以产生所述静态码。总而言之,辅助分析器12与优化器13的有无并非用以限制本发明。
[0044]在此请注意,混合式动态码编译装置I可以通过集成电路的方式实现于单一芯片中,或者可以是由多个电路所组成,又或者是由基于软件程序代码所构成的多个模块所实现。举例来说,混合式动态码编译装置I可以是一个由软件供货商所实现的软件套件,又或者硬件供货商所贩卖的外接(例如通过通用序列总线(Universal Serial Bus, USB))或内建于计算机装置、服务器或终端装置的硬件装置。总而言之,混合式动态码编译装置I的详细实现方式并非用以限制本发明。
[0045]请接着参照图2A,图2A是本发明实施例的服务系统的示意图。服务系统2包括计算机装置21、服务器22、因特网23与多个终端装置24a?24e。计算机装置21通过因特网23有线或无线连接服务器22,而服务器22通过因特网23有线或无线连接多个终端装置24a?24e。终端装置24a?24e例如为个人电脑、笔记型电脑、智能型手机、功能型手机或平板电脑等,且其类型并非用以限制本发明。
[0046]于本发明实施例中,上述混合式动态码编译装置内建或外接于服务器22。因此,网页开发者20可以通过计算机装置21撰写文件标示语言与动态码,例如超文件标示语言与JavaScript码,并且网页开发者20所撰写的文件标示语言与动态码会被上传给服务器22。
[0047]服务器22使用其内建或外
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1