自己动手写《正则表达式验证器》
由于工作需要,今天看了一天关于正则表达式的相关学习资料,当然都是入门之类的,看完之后,对于正则表达式也算是有了一个大致的了解,简单的正则表达式现在基本可以搞定。这两篇正则式入门资料在本人前两篇文章已经发表了,如果有相同需求的园友,可自行前去观看了解!
&nb
http://www.cyqdata.cn/cnblogs/article-detail-52802
自己动手开发jQuery插件
因为工作需要,所以这几天琢磨了一下关于jQuery插件开发的问题,经过一天鏖战,终于完成自己动手做的第一个jQuery插件,对于俺这种见了css就蛋疼菊紧的人来说,一天时间8小时,保守估计有5个小时在弄css(我css文盲级别,形容得还不够贴切,如果说文盲不会写字,只会说话,那我是连话都不会说的级别。),好了,废话少说
http://www.cyqdata.cn/cnblogs/article-detail-52572
自己动手重新实现LINQ to Objects: 5 - Empty
本文翻译自Jon Skeet的系列博文“Edulinq”。
本篇原文地址:
http://msmvps.com/blogs/jon_skeet/archive/2010/12/24/reimplementing-linq-to-objects-part-5-empty.aspx&nbs
http://www.cyqdata.cn/cnblogs/article-detail-52544
自己动手重新实现LINQ to Objects: 4 - Range
本文翻译自Jon Skeet的系列博文“Edulinq”。
本篇原文地址:
http://msmvps.com/blogs/jon_skeet/archive/2010/12/24/reimplementing-linq-to-objects-part-4-range.aspx&nbs
http://www.cyqdata.cn/cnblogs/article-detail-52501
自己动手重新实现LINQ to Objects: 3 - Select
本文翻译自Jon Skeet的系列博文“Edulinq”。
本篇原文地址:
http://msmvps.com/blogs/jon_skeet/archive/2010/12/23/reimplementing-linq-to-objects-part-3-quot-select-qu
http://www.cyqdata.cn/cnblogs/article-detail-52473
自己动手重新实现LINQ to Objects: 2 - Where
本文翻译自Jon Skeet的系列博文“Edulinq”。
本篇原文地址:
http://msmvps.com/blogs/jon_skeet/archive/2010/09/03/reimplementing-linq-to-objects-part-2-quot-where-quo
http://www.cyqdata.cn/cnblogs/article-detail-52437
自己动手重新实现LINQ to Objects: 1 - 引言
本文翻译自Jon Skeet的系列博文“Edulinq”。
本篇原文地址:http://msmvps.com/blogs/jon_skeet/archive/2010/09/03/reimplementing-linq-to-objects-part-1-introduction.aspx
大
http://www.cyqdata.cn/cnblogs/article-detail-52362
自己动手开发编译器(十二)生成托管代码
前一阶段我们完成了编译器中的重要阶段——语义分析。现在,程序中的每一个变量和类型都有其正确的定义;每一个表达式和语句的类型都是合法的;每一处方法调用都选择了正确的方法定义。现在即将进入下一个阶段——代码生成。代码生成的最终目的,是生成能在目标机器上运行的机器码,或者可以和其他库链接在一起的可重定向对象。代码生成,和这一
http://www.cyqdata.cn/cnblogs/article-detail-42427
自己动手开发编译器(十一)语义分析
上回我们已经用VBF的Parsers.Combinators库生成了miniSharp的语法分析器,并且能够将miniSharp的源代码翻译成抽象语法树(AST)。这一回我们要继续进行下一步——语义分析。就目前大家接触的编程语言,如C#、VB、C++来说,语义分析是编译器前端最复杂的部分。因为这些编程语言的语义都非常复杂。语义分析不像之前词法分析、语法分析那样,有一些特定的工具来帮助。这一部分通常
http://www.cyqdata.cn/cnblogs/article-detail-41978
自己动手开发服务器控件-------分页控件
对于一个大型业务系统来说,数据分页显示,是必不可少的。
但是怎么分、用什么分,方法和工具就有很多了。。。
刚入门的时候,总是会很习惯的从工具箱中拖出一个GridView,加上AllowPaging="true",再写个OnPageIndexChanging事件,OK,分页实现了。。。
发现这种方式效率差后,就开始拖.Net3.5中的独立分页控件了,忘了叫什么名字,公司用.Net2.0,没办法。
这
http://www.cyqdata.cn/cnblogs/article-detail-41938
自己动手写SQL字符串分解函数Split
前段时间,在做一个可以批量审核或删除数据的功能时,遇到这么个问题:
因为审核或删除操作是在存储过程进行的,所以,就打算将选中的数据的主键拼成字符串,传到存储过程进行分离,再继续处理。
C#中和JavaScript中都有相应的分离字符串的Split函数,就想当然的以为SQL中也会有类似的函数,结果查了半天的MSSQL帮助文档,也没找到。
没办法,只好自己写了,在网上搜了下相关的,看了一两
http://www.cyqdata.cn/cnblogs/article-detail-41797
.NET实现之(自己动手写高内聚插件系统)
今天跟大家分享一下本人在“.NET简谈构件系统开发模式”一文中提到的软件架构设计思路的具体实现细节。
大家看了我这篇文章后,总问我为什么要起个这么怪异的名字“构件”而不用“插件”。其实这个名字在我脑子漂浮了很久,一直找不到合适的场合用它。
在一本书上是这样解释构件的:构件是可以更换的部件,并且这个部件是由一系列很小的部件组成,
http://www.cyqdata.cn/cnblogs/article-detail-41558
自己动手开发编译器(十)miniSharp语法分析器
经过前面四篇的铺垫,我们终于拥有了编写语法分析器的强大工具,现在可以正式开发一门编程语言的语法分析器了。我们先来定义miniSharp的语法规则,然后根据LL文法的特点进行一些调整,最后借助解析器组合子生成完整的语法分析器。 miniSharp语言是C#的一个小子集,然而它仍然具有一门完整编程语言的所有要素,而且仍然是一种面向对象的语言。我们把miniSharp的语法分成三类——声明
http://www.cyqdata.cn/cnblogs/article-detail-41372
自己动手开发编译器(九)CPS风格的解析器组合子
上回我们用函数式编程的方法,结合Linq语法,建立了一套解析器组合子方案,并能成功解析自定义文法的输入字符串。但是,上次做成的解析器组合子有个重要的功能没有完成——错误报告。作为编程语言的语法分析器,不能在遇到语法错误的时候简单地返回null,那样程序员就很难修复代码中的语法错误。我们需要的是准确报告语法错误的位置,更进一步,是程序中所有的语法错误,而不仅仅是头一个。后者要求解析器具有错误恢复的能
http://www.cyqdata.cn/cnblogs/article-detail-41186
自己动手开发编译器(八)用Linq编写解析器组合子
上回我们说到手写递归下降语法分析器。手写递归下降的方式是目前很多编译器采用的方式,如果你想写一个商业质量的编译器,这是首选的方法。但是,一个完善的递归下降解析器需要的代码量也不少,如果要进行错误报告、错误恢复等等那代码量就更大了。作为懒人,我们有时想要一些小型语言的解析器,最好写起来像直接写文法的产生式一样,最好连错误报告和错误恢复也一并自动解决,可能吗?在过去很长一段时间,人们采用的方法是使用解
http://www.cyqdata.cn/cnblogs/article-detail-40824
从零开始,学习windows编程(8)--自己动手,编译CRT
翻开对应VC中的lib目录,是可以看到CRT的lib文件的,我电脑上面路径是“d:\Program Files\Microsoft Visual Studio\VC98\Lib\”,大家可以自己找一下自己的路径。经过上面的文章,我们对它已经有了一定的了解,使用它当然没问题了。那作为程序员,是不是还想看看它是怎么生成的呢?这里,就是讲如何来生成一个CRT库。
安装CRT源码
http://www.cyqdata.cn/cnblogs/article-detail-40738
自己动手开发编译器(七)递归下降的语法分析器
上回我们说到语法分析使用的上下文无关语言,以及描述上下文无关文法的产生式、产生式推导和语法分析树等概念。今天我们就来讨论实际编写语法分析器的方法。今天介绍的这种方法叫做递归下降(recursive descent)法,这是一种适合手写语法编译器的方法,且非常简单。递归下降法对语言所用的文法有一些限制,但递归下降是现阶段主流的语法分析方法,因为它可以由开发人员高度控制,在提供错误信息方面也很有优势。
http://www.cyqdata.cn/cnblogs/article-detail-40507
自己动手开发编译器(六)上下文无关语言和文法
上回我们已经学习了语法分析第一阶段——词法分析的原理和工具,介绍了正则表达式、正则语言和DFA等工具。今次我们要开始涉及编译器前端最重要的阶段——语法分析。简单而言,这一步就要完整地分析整个编程语言的语法结构。上回说到词法分析的结果是将输入的字符串分解成一个个的单词流,也就是诸如关键字、标识符这样有特定意义的单词。一种完整的编程语言,必须在此基础上定义出各种声明、语句和表达式的语法规则。观察我们所
http://www.cyqdata.cn/cnblogs/article-detail-40290
自己动手开发编译器(一)编译器的模块化工程
本系列的第一篇,我想概述一下编译器的构造,同时帮助大家了解编译器中各个组成部分的用途。想必大家看别的编译原理书籍,大都在第一章或者序言之类的地方,将编译器分成许多模块,然后每一个模块负责编译的特定阶段,最后串起来组成完整的编译器。比如下面这张图就是虎书(Modern Compiler by Andrew W. Appel)第一章中出现的编译器阶段示意图: 那么,为什么要将编译器拆成一个个阶段,一
http://www.cyqdata.cn/cnblogs/article-detail-39463
自己动手开发编译器(零)序言
好久没写博客了,一来是自己懒,二来是最近一段时间都没有做什么自己认为可以分享的东西。这几天刚好重拾了一个一直打算做但没做的编译器类库,算是积累了一点小小的经验吧。本来我已经发到了Github上,也在微博上零星介绍了一些,但是我最终意识到,如果不写一个详细的文档,别人就不能容易地学习、了解和使用它。甚至于我自己也可能会把这次研究出来的小小成果给忘了。所以,必须下决心动一动笔头,也算是对老长时间不些博
http://www.cyqdata.cn/cnblogs/article-detail-39423