`
梁利锋
  • 浏览: 80553 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
文章列表
  以前,因为觉得一直没有这种有智能提示的IDE,想要自己写一个,也开始自己写语法分析器,后来才觉得,这种方法不可取,即使能写出兼容大多数 D 语法的分析器,然而要匹配 D 的各种版本,也是很麻烦,还不如直接使用 D 的前端来写。不过,使用 D 的前端也有一些困难,就是无法用 VC 编译,看了源代码,似乎是只支持 dmc 和 gcc 的,可能使用 gcc 编译成 dll 是一种比较好的方案。   不过,最近比较忙,而且兴趣也不足,所以一直没有继续。今天,看到说波塞冬有新版,到它的主页看了一下,截屏是有智能提示的,于是下载了试用。   测试了当前文件内置类,从其它文件引入类,引入 tango ...
  1.0 版里,为了修正一个造成 PSP 花屏的错误,所以让帮助界面延迟加载,发布之后发现,在帮助界面的每一帧,都会造成重读帮助文件,虽然对于程序的正确性没有影响,不过仍然是个问题,在这一版中已经修正。   而 ...
  最近买了 PSP2000,从而也萌发了要写点儿 PSP 程序的想法,先去找了 PSPSDK,当然,这是一切的基础,而且,大牛们破解 PSP 而建立 PSPSDK 也非常厉害,不过,就是使用起来太底层,许多很零碎的事情都要自己处理,而且,编译 ...
  10年前,还在大学的时候写了个挖雷,后来用作毕业设计,所以又增加了猜数字、俄罗斯方块和华容道。   DOS 下用 Turbo C 2.0 写的,开始,在鼠标显示问题上花了些脑筋,后来,在图形显示、PCX文件解析、汉字显示上也投入不少精力,再后来,使用中断增加了演奏音乐的功能(因为比较难听,所以缺省是关闭的,在游戏中按 PrintScreen 键可以开关音乐)。   现在看来,虽然当时的程序结构并不是很好,但是也还不算差    以前放到主页的时候,以压缩包小为第一,所以,甚至没有附带汉字库 HZK16,以至于有些人说程序出错,现在想想,还是应该提供完整的包的。   现在已经10年过去 ...
  最近做一个广告系统,后台管理部分使用 ASP.NET,使用了 VS2008 + .Net 3.5,还是使用我写的 DbEntry 做数据库接口,页面部分大部分使用 ASP.NET Ajax 的 UpdatePanel 来进行更新,效果很不错,而且,速度上也感觉比普通的非 Ajax 页面快。   而对于权限部分,使用页面级访问控制,读取 Web.Config 的方式,导航使用 html 直接放在母板页中的方式,后来觉得这样,每增加一个页面或对页面改名,就需要修改两个地方,不是一个很好的解决方案。   以前,在做互联星空的一个项目时,曾经设计了使用 XML 做配置,导入 TreeView 做 ...
  这两天用扩展方法用的很舒服,也发现了它的另一个限制,不能扩展“属性”。   虽然,从本质上来说,属性不过是两个特殊命名的方法的一种快捷方式,不过,我试了几种写法,都没有发现有什么可能的迹象。   失败的试验包括,自己写“set_PropertyName”和“get_PropertyName”,然后加[SpecialName]标签。   以上。
  把 D 语言的语法规则改写成 ANTLR 的语法脚本后,大概有30多K,编译的时候,出了很多的错误,最后内存溢出了。想一想,也是,一来我对 ANTLR 还不熟,二来,Digit Mars 上的 D 语言语法介绍,很多左递归,有几个没有定义的过程,两个拼写错误,一个同名不同义的过程等等。在这种情况下,30多K的语法脚本想要很快的就编译通过,是很困难的。   所以,还是决定用 ANTLR 实现一下 Z 编译器。这一次,把 Z 作为 D 的一个子集,语法定义大部分直接从 D 的语法脚本中复制,一来可以熟悉 ANTLR,二来,完成的语法文件,对于 D 来说也是有用的。   作为 D 的子集,现在 ...
  开始把 D 的语法转换为 EBNF,发现 D 还支持中文变量名,也就是所谓的 UniversalAlpha,查看了一下 dmd front end 的源代码,检查字符是否 UniversalAlpha 的函数是这样的: int isUniAlpha(unsigned u) { static unsigned short table[][2] = { { 0x0 ...
  终于把 Z 语言的编译器做完了。意外的在四则运算上耽误了很多时间,发现 Grammatica 的四则运算的例子其实是右结合的,费了很大劲才解决了。现在觉得 Grammatica 的完整度好像不是很高,比如没有帮助建立抽象语法树的工具之类。也许 ANTLR 会好一点儿吧。   重新整理了目录,把生成的程序放到了 bin 目录下,建立了一个 build.bat 的批处理,用来把 z 编译成机器码,再打开虚拟机,加载此机器码。   虚拟机指令增加了一些,比如现在也支持减、乘、除运算,增加直接设置 esp 和把 esp 和 ebx 转移,以及中断指令(在 z 里通过 pause 语句生成中断指令)等 ...
  在《D Parser 之前:写一个简单的虚拟机》里,其中计算 1 到 100 之和的程序 add.bin,是使用十六进制编辑器直接编辑出来的。虚拟机制作完后,考虑了一下,如果直接写 Z 的编译器,难度还是不小,所以决定,先写一个汇编语言的编译器,实现从汇编代码到机器代码的编译工作。   大体来说,汇编编译基本上是一条一条对照生成,不过,行号的需求使得其中多了一些复杂性,另外,我还决定加入注释的支持。所以,这也是一个比较好的机会实践一下分析器生成器的使用。   汇编语言部分做了少量修改,over 改为 end,行号改为加 @ 前缀,完成的 Grammatica 的分析文件如下:%header% ...
  最近写了一点儿 D 程序,除了感觉标准库太差之外,没有一个好的 IDE 也是一个很头疼的事,特别是没有智能提示,每次调用一个函数什么的,都要查文档或者直接看源代码,实在是太费劲了。   所以决定自己尝试写一个支持智能提示的 D 的 IDE。因为 SharpDelelop 比较小,而且它对 C# 的支持也做到了智能提示、窗体编辑器等等,所以决定用它作为主框架,除了智能提示,也许还能加入 DFL 的窗体编辑之类的功能(Entice 做的窗体编辑已经不错了,只是没有事件支持)。目前,已经完成了语法加亮,代码折叠(目前和 notepad++ 一样只是通过大括号匹配来做的),下一步,就是智能提示了,而 ...
  本软件用于将文本的字符串转换为 Text、Default、Unicode、UTF-8 之间的互相转换,用于文本查询。转换结果使用十六进制表示。   D 语言版不需要特殊的运行库支持。相对于 VB5 版增加了允许输入十六进制的功能,相对于 .net 版减少了一些功能。   对于我自己来说,这是练习使用 D 语言的一个副产品。   程序使用 D 1.015, phobos 和 dfl 开发。   在这一次练习中,发现 D 语言使用上可以和 c# 很类似,比如我写的 HexStringCoding 类,从 c# 复制过来,只修改了几个小地方(如增加 cast,去除 unsafe),就可以正常编译并 ...
  原本,我听说 Partial Class 的时候,以为可以为已存在的类添加方法了,不过,Partial Class 只能在同一个 Assembly 之中的要求,使得它并不能实现这一点。.Net 3.5 增加了很多语言特性,扩展方法是其中一个。用扩展方法,我们就可以为已经存在的类添加方法。 c# 代码 public static class ExtendTest    {        public static Print(this object o)        {            Console.WriteLine(o); ...
  刚见到VS2008要在11月底发布的消息,有些反感,本来该出RC的时候,怎么就Release了?我都不急,微软急什么?   结果,还只是月中,VS2008就宣布发布,而且MSDN开始提供下载。而Scott的Blog上介绍的时候,还说,Silverlight 1.1的什么插件还没有能支持VS2008 Release版,需要额外的一周时间;这两天,又说本来预计上星期(和 VS2008 同时)发布的 VSS 2005 对于 VS2008 支持的兼容包因为临时发现一个BUG,所以推迟发布……   当年 VS2005 自带 SQL 2005 Express,既然明年二月也会出 SQL 2008,VS ...
  这是我设计的一个轻量级的 .Net ORM (Object Relational Mapping) 数据访问及 WEB 框架。对于 ORM 和 Sql 调用,它都拥有清晰和易用的接口,目前支持 SqlServer、SQLite、MySql、Access、Firebird、Oracle 等数据库。对于 WEB 开发,它既支持 ASP.NET 2.0 的 DataSource 方式,也支持 Ruby On Rails 风格的 MVC 方式。   目前,数据库部分已经支持多主键、多表联合查询、快速分页集合、隐式数据库事务、连贯API查询、ActiveRecord风格查询、动态对象、部分保存、自动创 ...
Global site tag (gtag.js) - Google Analytics