[发明专利]程序编译装置和程序编译方法有效
| 申请号: | 201110448875.4 | 申请日: | 2011-12-28 |
| 公开(公告)号: | CN102521008A | 公开(公告)日: | 2012-06-27 |
| 发明(设计)人: | 丑洪亮;邓君涛 | 申请(专利权)人: | 用友软件股份有限公司 |
| 主分类号: | G06F9/45 | 分类号: | G06F9/45 |
| 代理公司: | 北京友联知识产权代理事务所(普通合伙) 11343 | 代理人: | 尚志峰;汪海屏 |
| 地址: | 100094 北京*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 程序 编译 装置 方法 | ||
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种程序编译装置和一种程序编译方法。
背景技术
当前在web系统开发中,编写javascript是一个单调乏味且易于出错的过程,然而很多前台页面上的动态功能都需要javascript的支撑,特别是当今AJAX(Asynchronous JavaScript XML,异步的Javascript与XML技术,利用该技术可实现网页与服务器的异步交互,使得用户对系统的体验更加流畅)技术被广泛的应用,使得javascript的使用更为频繁。
目前在Web系统(是指基于万维网/企业网开发的应用系统)开发中,由于javascript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行,而且在javascript中,如果一条运行不了,那么下面的语言也无法运行,虽然现在有很多浏览器插件可以支持javascript运行调试,但是效果不是很理想,功能不是很完善,基于以上原因,编写和调试javascript将是一件很艰巨的任务,会耗费大量的时间和精力,导致工作效率低下。
解决开发javascript中遇到的问题,常用的解决方案是利用编程语言构建客户端并编译成客户端脚本。首先,通过使用预编译操作,获取整个web系统工程的所有类,这一操作同时也可以校验当前web系统工程中有没有语法错误,有没有不能编译成javascript的类存在,然后再根据java与javascript的语法对应关系进行编译操作。例如:Google开发了web工具包(Google Web Toolkit,GWT,谷歌公司发布的网络程序开发工具包),可以使用Java编程语言编写客户端脚本,并交叉编译到优化后的javascript中。
这种解决方案存在一些问题:首先,编译成本很高,因为在每次编译时都需要对整个web系统工程做预编译操作;其次,对于使用的类有一定限制,不能编译的类不能使用,即使引用它的类不需要编译,这就妨碍了语言的灵活使用。
综上所述,在web系统开发中,对于某些类或某个类中的某些方法进行编译客户端脚本的应用,目前的解决方案存在以下缺点:首先,是针对整个web系统工程进行编译,范围广泛,编译成本高;其次,当某些类中使用了不能进行编译的类,虽然这些类是不需要进行编译的,这时也会导致整个web系统工程编译失败。
为了解决前面提到的问题,需要一种智能的按需编译的解决方案,能够根据实际需要进行局部编译或者指定具体对象编译的问题,并解决了某些不支持编译的类的客户端脚本转换问题。
发明内容
本发明所要解决的技术问题在于,提供一种智能的按需编译的解决方案,能够根据实际需要进行局部编译或者指定具体对象编译的问题,并解决了某些不支持编译的类的客户端脚本转换问题。
有鉴于此,本发明提供一种程序编译装置,包括:语法树构建模块,根据待编译方法所对应的类的类文件,生成语法树;信息抽取模块,从所述语法树中,获取所有类节点的类信息,其中,所述类信息包括类方法;解析模块,根据所述待编译方法和所述类信息,从所述语法树中选择方法节点;收集模块,获取所述方法节点中的所述待编译方法和所述待编译方法的属性;编译模块,按预定规则,对所述待编译方法和所述待编译方法的属性进行编译。在该技术方案中,通过构建语法树,可将待编译方法及其属性提取出来,实现按需编译。
在上述技术方案中,优选地,所述收集模块还在所述待编译方法中使用到其他类的其他方法和/或其他属性时,取得所述其他类的类文件,并将所述其他方法和/或所述其他属性对应的方法也作为所述待编译方法,返回给所述语法树构建模块处理。在该技术方案中,还获取待编译方法涉及到其他类的方法和属性,并进行编译,保证最后待编译的方法在编译后可以正常使用。
在上述技术方案中,优选地,所述收集模块还将所述待编译方法和所述待编译方法的属性按类存储为类集合;所述编译模块将对所述类集合进行编译。在该技术方案中,按类集合编译的方式,能够保证编译的效率。
在上述技术方案中,优选地,所述编译模块将所述待编译方法和所述待编译方法的属性编译为脚本,并将所述脚本保存为文件。在该技术方案中,将脚本保存为文件后,便于用户随时取得使用。
在上述技术方案中,优选地,所述类信息还包括所述待编译方法所对应的类的全路径,所述编译模块将所述全路径作为所述文件的文件名。在该技术方案中,通过以上方式自动为文件命名,能够注明该文件的作用,方便用户使用该文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于用友软件股份有限公司,未经用友软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110448875.4/2.html,转载请声明来源钻瓜专利网。





