基于Perl的企业级代码编辑器的实现
时间:2013-09-10 14:48 文章来源:http://www.lunwenbuluo.com 作者:汪灏 点击次数:
1概述
为了管理代码,有些公司要求在软件产品完工后,按照自己规范标准整理代码。但是,每项软件产品可能是分给多个外包公司完成的,产品整合后,如果要一个个手动的删除所有外包公司的附加注释信息,再加入自己的版权信息,势必消耗大量的不必要的人力物力。
在这种情况下,该文描述了一种代码编辑器的设计与实现,它专门用于企业按照规范化的标准处理源代码。
2设计思路
2.1开发工具选择
我要设计的代码编辑器与常见的UltraEdit等编辑器完全不同:首先,我们要处理的源文件容量非常大,有的源文件一个就有上百兆,普通编辑器根本无法打开。其次,我们要进行的处理比较特殊,普通编辑器也无法胜任——比如删除各种注释符这种操作,普通编辑器或者无法做到,或者会处理错误。
比较后我选择了Perl这种开发工具。它不需要编译器和链接器来运行代码,有一套功能非常强大的用于文本处理的特性,可以处理几乎所有我们能够想到的文本变换方式,对于为大型事件创建原型来测试潜在的解决方案是十分理想的。
正则表达式是Perl最强大的特性之一,它们几乎提供了所有用来匹配,置换和一般地截取文本的功能。在Perl中,向一块文本中插入字符称为插值。当Perl遇到一个可以被查值的字符串时,Perl先扫描整个字符串,看看其中是否有下面三个重要的字符:$,@和\。如果存在上面三个字符中的任意一个,而且该字符没有用反斜杠作前缀表示转义,则该字符马上会触发文本的插值操作。\为插入一个元字符或字符代码;$为在标量上下文中插入一个标量变量或计算一个表达式;@为在一个列表上下文中插入一个数组变量或计算一个表达式。如果没有,Perl会使用字符串本身。正则表达式可以用.来匹配任何单个字符。因此十分灵活。
Perl中的文件句柄是一种非常独特的数据类型。这种数据类型与标量没有任何关系。文件句柄在符号表typeglob中有它们自己的槽。在进行数据写入时,首先将数据缓存在缓冲器中,直到有足够多的数据时才进行实际的发送;而在进行数据读取时,也从设备中读取比当前请求的数据量更多的数据到缓冲器中。对于文件,这样能最大限度减少所需的磁盘访问次数,而对于其它类型的文件句柄,这样做能够最大限度减少系统所需进行的中断次数。
虽然Perl的功能非常强大,但是它的文本运行模式导致它难以使用。因此,可视化是它的一个发展方向。而Perl/Tk为Perl程序的开发,分析和可视化方面提供了图形化的支持。用Perl/Tk可以包装Perl写出的所有脚本,本应该在文本模式下运行的命令可以在一个有同样效果的GUI控制面板上执行,用户把它启动后就可以方便地使用它而不必再输入命令。
2.2设计与实现
这个编辑器应该包括至少三个模块:
1)功能设计模块。用于实现这个代码编辑器的各种功能。
2)问题处理模块。用于处理编辑器运行中可能出现的问题。
3)界面设计模块。用于将这个编辑器界面化,使之容易操作。
2.3代码编辑器实现中的难点
误删是一个会导致所处理源代码出现错误的原因。为了处理这个问题,应设置Log记录和查看的功能。可以利用Perl的文件创建,输入输出等功能,在删除文件的同时,建立一个Log文件,记录被删除或更改的内容。在处理后查看Log文件确定操作是否正确。
3系统设计
基于Perl的企业级代码编辑器运行在装有Perl和Perl/Tk的Linux平台上。该编辑器具有强大的文本处理能力,能删除各类注释行,整理Tab/Space空行,及在文件头加入特定注释,删除或替换想要处理的字符或字符串。
3.1系统概要设计
3.1.1功能模块
- 论文部落提供核心期刊、国家级期刊、省级期刊、SCI期刊和EI期刊等咨询服务。
- 论文部落拥有一支经验丰富、高端专业的编辑团队,可帮助您指导各领域学术文章,您只需提出详细的论文写作要求和相关资料。
-
- 论文投稿客服QQ:
2863358778、
2316118108
-
- 论文投稿电话:15380085870
-
- 论文投稿邮箱:lunwenbuluo@126.com