浏览 2838 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-16
最后修改:2009-04-21
LINQ与DLR的Expression tree(3):LINQ与DLR及另外两个库的AST对比里,我提到了Common Compiler Infrastructure(CCI)源自Project 7,用于为.NET平台提供一套实现编程语言用的公共基础设施。这套基础设施不但也用与编译器编写,也可用于代码分析、代码优化、代码生成等多种功能。FxCop就一直依赖于CCI来提供PE文件解析和写入的相关功能。Visual Studio中的代码分析功能也是基于CCI的特化版。.NET 4的Code Contract也在使用CCI……
在我以前的一篇blog,2天前,这套类库终于公开发布了,而且是基于Ms-PL许可证开源发布了。此刻我难以压抑激动的心情。 CCI是在微软研究院的Redmond的研究所的支持下,由Herman Venter宣布开源的。 目前发布了的CCI包括三部分,都是以source-only的方式发布的: CCI on CodePlex: Common Compiler Infrastructure: Metadata components 这部分提供了对PE文件及其中的元数据的操作,包括PE文件的读、写、遍历、转换等功能,也提供了一些反编译到源码的支持;同时它还包括对PDB文件的读、写功能。 使用过Mono.Cecil的同学可以考虑看看CCI对Metadata的支持是否能更好的满足需要。 Common Compiler Infrastructure: Code and AST Components 这部分提供了连接编译器前端与后端的桥梁,也就是对AST的支持。CCI包含了大量AST节点类型,可以支持大部分程序语言中设计的语法结构的语义。在编译器前端生成了合适的AST之后,CCI提供了后端支持将AST编译为IL,免除了编译器编写的一大痛苦。 这部分可用于替代CodeDOM原本的地位。 Common Compiler Infrastructure: Sample applications 这部分包含了一些使用CCI的例子,目前有一个Small Basic编译器。日后还会不断有新的例子加入。 其中CCI的主要文档都在CCI-AST的那个部分的Documentation目录里。 值得一提的是,CCI并不提供编译器前端的功能,也就是说词法分析器和文法分析器都不在CCI的功能范围内。但现成的解析器生成器非常多,随便挑一款与CCI配合都没问题。如果是像ANTLR一类有自己的AST类层次的库,可以在前端生成了AST后转换为CCI的AST,这样就能与CCI其余的部分联系上了。 相关链接: Channel 9上关于CCI开源的访谈(3:33) Research in Software Engineering Group based in the Microsoft Research Redmond Laboratory(RiSE) Cecil and the CCI Jb Evain对Cecil和CCI的评论 P.S. 以前Colin老大问过CCI的获取方式和使用许可,当时我回复说只能从FxCop或者Zonnon获取CCI相关的程序集,但FxCop的许可里指明了其附带的CCI不得用于FxCop以外的用途,所以当时觉得很无奈。现在这玩意儿终于开源了啊 T T 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-16
哈哈哈哈,好啊,好啊,不用你通知,我也会来Happy Happy的。RSS是好东西啊。
|
|
返回顶楼 | |
发表时间:2009-04-16
cajon 写道 哈哈哈哈,好啊,好啊,不用你通知,我也会来Happy Happy的。RSS是好东西啊。
呵呵,我也是正好看到老大今天发帖了,顺便过去踩踩。 老大最近在忙些啥?有机会用上CCI不? CCI刚发布,从source history来看似乎在发布前commit得非常频繁,或许过那么一两个星期再去抓档会比现在稳定些。不过文档是可以先抓来读读的,在CCI-AST里。 |
|
返回顶楼 | |