CN119493569A 一种编译方法及相关装置 (华为技术有限公司)_第1页
CN119493569A 一种编译方法及相关装置 (华为技术有限公司)_第2页
CN119493569A 一种编译方法及相关装置 (华为技术有限公司)_第3页
CN119493569A 一种编译方法及相关装置 (华为技术有限公司)_第4页
CN119493569A 一种编译方法及相关装置 (华为技术有限公司)_第5页
已阅读5页,还剩50页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

行文件在运行时能够直接创建生成序列化格式2获取待编译的源代码,所述源代码中的第一结构标记有对生成所述源代码对应的抽象语法树,所述抽象语法树用于表示所述源代码的语法结对所述抽象语法树中对应于所述第一结构的第一节点执行变换,以得对所述变换后的抽象语法树进行编译处理,以得到可执行文件,所述可所述变换后的第一节点用于指示第一函数,所述第一函数用于创建与所述目标class对所述抽象语法树中的第二节点进行变换,以使得所述变换后的抽象其中,所述第二节点对应于所述源代码中的第二结构,所述述第一结构中所定义的目标class,所述变换后的第二节点用于指示调用所述变换后的第将所述目标文件与库文件链接,得到所述可执行文件,其中所述根据所述第一结构所标记的第一序列化格式,加载所述第一序列化格式通过执行所述扩展插件,对所述抽象语法树中对应于所述第一结构8.根据权利要求6或7所述的方法,其特征在于,3对所述抽象语法树中对应于所述第三结构的第三节点执行变换,对所述变换后的抽象语法树进行编译处理,得到可执行文件,所述可执行所述与所述第三结构相关的序列化对象的格式为所述第二获取模块,用于获取待编译的源代码,所述源代码中的第一结构编译模块,用于生成所述源代码对应的抽象语法树,所述编译模块,还用于对所述抽象语法树中对应于所述第一结构的第一节点执行变述目标class用于指示所述待执行序列化的对所述变换后的第一节点用于指示第一函数,所述第一函数用于创建与所述目标class对所述抽象语法树中的第二节点进行变换,以使得变换后的抽象其中,所述第二节点对应于所述源代码中的第二结构,所述述第一结构中所定义的目标class,所述变换后的第二节点用于指示调用所述变换后的第将所述目标文件与库文件链接,得到所述可执行文件,其中所述4根据所述第一结构所标记的第一序列化格式,加载所述第一序列化格式通过执行所述扩展插件,对所述抽象语法树中对应于所述第一结构56源代码中标记有序列化格式的结构,对抽象语法树中与这部分结构相关的节点执行变换,[0012]本方案中,通过将抽象语法树中的节点变换为指示序列[0013]在一种可能的实现方式中,变换后的第一节点还用于指示第二函数和/或第三函[0015]本方案中,通过将抽象语法树中的节点变换为还能够指示访问/修改序列化对象的函数的节点,能够保证编译得到的可执行文件在运行时同样能够具有访问/修改序列化对抽象语法树中的第二节点进行变换,以使得变换后的抽象语法树包括变换后的第二节7[0021]本方案中,通过在编译器上加载扩展插件来实现对抽象语法树中的节点变换过标记错误为源代码中标记有序列化格式的结构所指示的对象无法转换为所标记的序列化8[0028]在一种可能的实现方式中,源代码中还包括标记有第二[0029]本方案中,通过对源代码中标记有不同序列化格式的结[0032]在一种可能的实现方式中,变换后的第一节点还用于指示第二函数和/或第三函9标记错误为源代码中标记有序列化格式的结构所指示的对象无法转换为所标记的序列化[0039]在一种可能的实现方式中,源代码中还包括标记有第二序列抽象语法树包括变换后的第三节点,变换后的第三节点用于指示序列化对象相关的内容;指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根树通常是一个编译器的语法分析阶段的结果,因此抽象语法树经常作为程序的中间表示。抽象语法树作为一种重要的程序中间表示形式,其基本形成过程可以大致分为三个步骤,[0071]序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期在空间、性能的表现各有不同。常见的序列化格式包括json、XML、FlatBuffers、可以基于函数的相关信息在额外加载的函数库中获得例性地,该电子设备例如可以是服务器、智能手机(mobilephone)、个人电脑(personal或者多个处理器,其中每个处理器都可以包括一个或多个处理器核。显示适配器(video[0090]其中,处理器103可以是任何传统处理器,包括精简指令集计算(reduced[0093]操作系统包括Shell13[0097]本实施例中,源代码是指未编译的按照一定的程序设计语言规范书写的文本文体可以采用@Serializable[json]来标记,以表示第一结构所指示的对象需要序列化为[0100]步骤302,生成源代码对应的抽象语法树,抽象语法树用于表示源代码的语法结代码的抽象语法结构的树状表示,且抽象语法树上的每个节点都表示源代码中的一种结象的相关内容,且该序列化对象则是第一结构中所指示的对象执行序列化后所变换的对[0113]本方案中,通过将抽象语法树中的节点变换为指示序列[0116]本方案中,通过将抽象语法树中的节点变换为还能够指示访问/修改序列化对象的函数的节点,能够保证编译得到的可执行文件在运行时同样能够具有访问/修改序列化(未涉及到对对象的操作),而第二结构才是码下面代码所表示的结构为class使用结构(即对应于上述的第二结构),用于创建class[0122]在对抽象语法树中表示该class定义结构的节点进行变换后,变换后的节点用于指示序列化对象的创建函数(即图4中所示的构造函数列化对象为classRectangle对象对应的序列化后[0123]在对抽象语法树中表示该class使用结构的节点进行变换后,变换后的节点用于[0125]可选的,在编译器对抽象语法树中对应于第一结构的第一节点执行变换的过程[0126]本方案中,通过在编译器上加载扩展插件来实现对抽象语法树中的节点变换过在编译过程中可以是加载对应于序列化格式1的扩展插件1来对这部分结构进行编译处理。码中的部分结构所指示的对象(例如通过cla列化对象与变换后的第一节点所指示的序列化对象的[0140]本方案中,通过对源代码中标记有不同序列化格式的结相关内容的节点,且最终使得编译得到的可执行文件能够在运行时直接生成序列化对象。译得到的目标文件链接在一起,即可得到包括序列化对象相关的函数内容的可执行文件,保证可执行文件在运行时能够直接创建序列[0168]structVec3<T>{//error:@Serializable[flat]unsupportgenerictypedefine.块(Codegen)的处理均为对不同中间结构的遍历过程。Parser对源代码进行遍历处理之后类型推导和检查也在对抽象语法树的若干次遍历中完成,codegen的代码生成也在若干次[0178]步骤503,编译器通过加载扩展插件实现将源代码编译为能直接创建序列化对象化协议的特定语法,比如注解@Serializable[flat];实现针对该协议的语法语义限制检部分)和单独的扩展插件(扩展部分)中。编译器在对含有@S[0188]请参阅图7,图7为本申请实施例提供的一种编译器的系统架构示意图。如图7所[0191]2、语法解析器部分(Parser):对注解语法的支持,对特定形式的解析如@侧的对象创建和访问直接处理为序列化的对象创细的实现取决于编程语言的语法特性和要实现的序列抽象语法树包括变换后的第一节点,变换后的第一节点用于指示序列化对象相关的内容;用于在运行时生成与第一结构相关的序列化对象,且序列化对象的格式为第一序列化格[0203]在一种可能的实现方式中,变换后的第一节点还用于指示第二函数和/或第三函标记错误为源代码中标记有序列化格式的结构所指示的对象无法转换为所标记的序列化[0210]在一种可能的实现方式中,源代码中还包括标记有第二的抽象语法树包括变换后的第三节点,变换后的第三节点用于指示序列化对象相关的内块902、处理器903和存储器904(其中执行设备900中的处理器903的数量可以一个或多个,据。存储器904的一部分还可以包括非易失性随机存取存储器(non_volatilerandom[0214]上述本申请实施例揭示的方法可以应用于处理器903中,或者由处理器903实步骤可以通过处理器903中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理或微控制器,还可进一步包括专用集成电路(applicationspecificintegrated[0215]接收模块901可用于接收输入的数字或字符信息,以及产生与执行设备的相关设所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路以实施为以机器可读格式被编码在计算机可读存储介质上或者被编码在其它非瞬时性介[0219]图10示意性地示出根据这里展示的至少一些实施例而布置的示例计算机可读存[0220]在一个实施例中,计算机可读存储介质1000是使用信号承载介质1001来提供储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服[0230]所述集成的单元如果以软件功

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论