随笔分类 -  我的软件

摘要:上一次曾经发布过一篇如何实现一个代码编辑器。今年工作中得空,所以对这个编辑器进一步做了些更新,把名字改成了从CuteC改成了CEditor。主要是重写了软件的界面(最终还原朴素),重写了编辑控件语法高亮的着色方式,还有增加了一个简单的SSH客户端和SFTP文件编辑的功能。感觉基本的功能已经实现了,所以再次写点东西记录一下。并且发布一下编辑控件的源代码,有兴趣的可下载下来看看,虽然代码写得比较乱。 上个版本:http://www.cnblogs.com/linxr/archive/2011/10/30/2229256.html 编辑控件源码链接:http://files.cnblogs.com. 阅读全文
posted @ 2013-08-13 12:37 linxr 阅读(10442) 评论(1) 推荐(10) 编辑
摘要:源码下载: kvfs.rar正文: 所谓的Key-Value就是每次存储一个数据时,是根据Key进行索引存储的。为了实现Key的快速查找功能,我使用了B-tree存储结构。B-tree被大量用于数据库的索引中,所以选用B-tree想必不会有太大的问题。Value是对应该Key的值,他的长度是未知的,所以要实现这样一个存储系统,必须要解决从Key值到文件位置的映射关系。问题一:实现文件的"自由"读写问题二:实现BTree问题一:实现文件的"自由"读写。 基本思想:所有内容被存储到一个文件中,文件被划分成同一大小的粒度,可以自由的申请不同的大小空间,可以释放 阅读全文
posted @ 2013-08-12 12:15 linxr 阅读(19115) 评论(12) 推荐(5) 编辑
摘要:目录:1.脚本的执行要素2.栈的模拟.3.变量在栈中的地址计算4.函数的调用过程5.命令的解析6.C的库函数调用在前面的文章中,我主要讲解了语言的解析部分,最终我们生产了脚本的中间代码。接下来,将是一个最困难的时刻,怎么解析执行中间代码! 执行代码其实是经过一定处理后的中间代码的另外一种表示。正如前面提到的,我们的中间代码是三元组的形式,比如:c = a + b * c; 可以表示成 @1 = b * c; @2 = a + @1; @3 = c = @2;但是,这种中间代码还得经过一定的转换才能更方便我们解析执行。接下来,我将一步步的说明,中间代码被执行的每个过程。1.脚本的执行要素 一个脚 阅读全文
posted @ 2012-03-15 20:26 linxr 阅读(17552) 评论(12) 推荐(3) 编辑
摘要:上一篇:C语言解释器的实现--词法分析(二)1.类型的表示 C语言的类型是相当灵活的,除了标准的类型(int char float double long 等等)外,自己根据需求,能定义出无穷的类型。一个具体的例子: int * a[10]; 它表示的意思是: a is ARRAY 0..9 of POINTER to INT 仔细观察它的意思,就会发现,这个类型是其他基本类型按照一定顺序的组合:ARRAY|POINTER|INT。要表示这种形式,链表是最合适不过的了。如下图: (图2.1类型的表示) 还有一些情况,比如结构体类型,那么上述的表示就不大合适了。例如下面的结构体: struct. 阅读全文
posted @ 2011-12-27 20:44 linxr 阅读(4843) 评论(3) 推荐(3) 编辑
摘要:上一篇:C语言解释器的实现--存储结构(一) 词法分析是编译原理中最容易理解的,就算没有了解过编译原理,也能写出一个词法分析器。我们不用理解正则表达式,不用理解状态机原理,就可以轻松的完成词法的分析。 这里首先介绍下自顶向下的解析过程,所谓的自顶向下,按我的理解,就是从一个大的集合解析到小的集合。例如:解析一个文件,那么进入文件,解析一个函数,进入一个函数,解析局部变量,解析表达式,进入表达式,解析变量、常量等等,最终完成一个C文件的解析过程。整个过程,其实就是一个猜测的过程。但是这个过程中,我们必须依赖于文件中的每个词(token),token可以看成是解析过程中的一个单位。 例如: 1.. 阅读全文
posted @ 2011-12-27 13:20 linxr 阅读(6244) 评论(0) 推荐(0) 编辑
摘要:在写CuteC文本编辑器的同时,为了使之有脚本执行能力。特意实现了一个简易的C语言解释器,所谓的解释器,就是它是解析执行脚本文件的,并不产生可执行的目标代码。它具备了C语言的几乎全部的语法。随着时间的推移,我打算把它作为一个独立的项目来开发了。在这个过程中,自己也学到了不少的知识,所以也打算跟大家分享。写这些东西,虽然是重复发明轮子的事,但也不至于是在浪费生命。程序员嘛,我总觉得应该是要理解我们每天所编译出来的程序是怎么被执行,应该明白我们敲打的每行代码的实际意义。 我打算写一个系列的文章来说明这个解释器的实现过程,其中对于编译原理的理论知识不做太多的讲解,一是不容易提高大家的积极性,二是自. 阅读全文
posted @ 2011-12-16 17:18 linxr 阅读(13393) 评论(8) 推荐(4) 编辑
摘要:本文宗旨在于提出一种给软件添加注册码的方法。至于所提出的方法是否有效,是否能够经得起一些逆向高手的破解,还得经过验证。我只是提出我个人的看法。一、目标。 目标很明确,就是根据需要注册软件的个人信息,产生注册码。并且软件本身必须可以校验该注册码是否有效。并且能够防止别人逆向算出校验算法,产生注册机;能够防止别人用暴力破解方法,直接修改软件执行代码,绕过注册。 二、方法论述 要做到以上的目标,有两个方面特别重要。一是,注册码产生算法的选择;二是,要使软件具有自身校验机制,防止可执行程序别篡改。下面我们分别论述这两点。1. 注册码产生算法的选择 现在很多软件都存在注册机,很大原因是因为软件本身的注册 阅读全文
posted @ 2011-11-08 16:08 linxr 阅读(29028) 评论(48) 推荐(19) 编辑
摘要:这一年来我花了很多的时间在写一个代码编辑器。大部分时间都是在实现各种各样的功能,其中也遇到了不少的问题。现在把实现这个编辑控件的一些问题的解决方法写出来,以供参考。这里说明下,我用的是MFC,当然了,没有用现成的控件,而是直接从CWnd继承来实现自己的编辑控件。先给大家弄个效果图吧,你可以在这里CuteC Editor下载,欢迎大家提出意见。问题1:如何让控件接受所有的按键和汉字。问题2:如何计算光标的位置。问题3:如何存储编辑控件的文本内容。问题4:如何实现关键字高亮。问题5:如何实现自动换行。问题6:如何解析脚本。呵呵,我自己写了个C语言解释器,那它来用还是很不错的。一. 如何让控件接受. 阅读全文
posted @ 2011-10-30 13:53 linxr 阅读(8044) 评论(21) 推荐(14) 编辑
摘要:CuteC 下载更新内容:1. 修改了便笺管理界面,添加了加解密功能2. 添加了FTP功能3. 添加了代码的符号显示该软件还在开发过程中,由于个人的时间有限,开发进度受到多方因素的影响,但我将不断的更新完善。希望大家多多支持~命令界面如上。FTP界面如上。符号界面如上。便笺文件界面如上。 阅读全文
posted @ 2011-10-24 15:01 linxr 阅读(1101) 评论(4) 推荐(0) 编辑
摘要:CuteC 更新记录:1. 添加了 ()[]{}高亮匹配2. 添加了函数高亮显示3. 修改了文件列表为树形结构4. 修改了配置文件的存储方式,采用自己设计的格式存储。可见http://www.cnblogs.com/linxr/archive/2011/05/03/2035132.html。 只样子方便修改配置。5. 修改了一些bug可以下载:CuteC 阅读全文
posted @ 2011-05-19 13:17 linxr 阅读(590) 评论(0) 推荐(0) 编辑
摘要:希望写一个通用的配置文件的格式,必须方便软件进行读取定义的数据,并且易读。暂时想到了如下的方式:color(var.r, var.g, var.b);font(var.font, var.size, var.b, var.u, var.i );keys(color.cl, font.ft, var..kw );incs(var.begin, var.end);keytabs( keys..kw, incs..ic )syntax;syntax = { 255,255,255,宋体,29,b,u,i,{int,double,char,long,unsigned,float}, 244,444,4 阅读全文
posted @ 2011-05-03 12:15 linxr 阅读(1602) 评论(0) 推荐(0) 编辑
摘要:记录下CuteC接下来要做的改进设想:界面:1. 添加子窗体可拉动功能。2. 添加界面边框颜色配置。编辑框:1. 设计大长度行的显示方案,包括自动换行。2. 设计代码块高亮的显示方案。3. 添加大文件的UTF-8 UNICODE UNICODE-BE 编码的支持。4. 美化代码显示。 目标: a. {} [] () 匹配高亮。 b. 根据段落的设置,可以提供更高级的段落显示。比如 显示当前段落的边框和所属段落的边框,当前段落的颜色高亮。 c. 对段落的管理。抽取所有段落的标志,并且实现跳转。 d. 增加关键字/段落的属性:背景色、前景色、字体(大小、下划线、粗体)。 增加关键字的动作处理方式 阅读全文
posted @ 2011-01-01 23:09 linxr 阅读(570) 评论(0) 推荐(2) 编辑
摘要:CuteC是一款由个人完成的文本便笺器,但它可以做的不仅仅是编辑文本文件。长期以来,我尝试用过很多的编辑器,最终萌发了自己写一个文本编辑器的想法。虽然我觉得自己不能在很多方面做得比现在流行的编辑器好,但是,我想我能够写出一个很有特色的编辑器来。而本人长期用C语言工作,我在编辑器中嵌入了C的解释器,这也是开发这款软件至今让我值得骄傲的地方!所以,我把它叫做CuteC。 下载地址:CuteC 阅读全文
posted @ 2010-12-30 16:54 linxr 阅读(1346) 评论(8) 推荐(3) 编辑