Common Compiler Infrastructure(CCI)开源了!

在我以前的一篇blog,[url=http://rednaxelafx.iteye.com/blog/246814]LINQ与DLR的Expression tree(3):LINQ与DLR及另外两个库的AST对比[/url]里,我提到了Common Compiler Infrastructure(CCI)源自Project 7,用于为.NET平台提供一套实现编程语言用的公共基础设施。这套基础设施不但也用与编译器编写,也可用于代码分析、代码优化、代码生成等多种功能。[url=http://msdn.microsoft.com/en-us/library/bb429476.aspx]FxCop[/url]就一直依赖于CCI来提供PE文件解析和写入的相关功能。Visual Studio中的代码分析功能也是基于CCI的特化版。.NET 4的Code Contract也在使用CCI……

2天前,这套类库终于公开发布了,而且是基于Ms-PL许可证开源发布了。此刻我难以压抑激动的心情。

CCI是在[url=http://research.microsoft.com/]微软研究院[/url]的[url=http://research.microsoft.com/en-us/labs/redmond/]Redmond的研究所[/url]的支持下,由[url=http://blogs.msdn.com/hermanventer]Herman Venter[/url]宣布开源的。

目前发布了的CCI包括三部分,都是以source-only的方式发布的:
CCI on CodePlex:

[url=http://ccimetadata.codeplex.com/]Common Compiler Infrastructure: Metadata components[/url]
这部分提供了对PE文件及其中的元数据的操作,包括PE文件的读、写、遍历、转换等功能,也提供了一些反编译到源码的支持;同时它还包括对PDB文件的读、写功能。
使用过Mono.Cecil的同学可以考虑看看CCI对Metadata的支持是否能更好的满足需要。

[url=http://cciast.codeplex.com/]Common Compiler Infrastructure: Code and AST Components[/url]
这部分提供了连接编译器前端与后端的桥梁,也就是对AST的支持。CCI包含了大量AST节点类型,可以支持大部分程序语言中设计的语法结构的语义。在编译器前端生成了合适的AST之后,CCI提供了后端支持将AST编译为IL,免除了编译器编写的一大痛苦。
这部分可用于替代CodeDOM原本的地位。

[url=http://ccisamples.codeplex.com/]Common Compiler Infrastructure: Sample applications[/url]
这部分包含了一些使用CCI的例子,目前有一个[url=http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx]Small Basic[/url]编译器。日后还会不断有新的例子加入。

其中CCI的主要文档都在CCI-AST的那个部分的Documentation目录里。

值得一提的是,CCI并不提供编译器前端的功能,也就是说词法分析器和文法分析器都不在CCI的功能范围内。但现成的解析器生成器非常多,随便挑一款与CCI配合都没问题。如果是像ANTLR一类有自己的AST类层次的库,可以在前端生成了AST后转换为CCI的AST,这样就能与CCI其余的部分联系上了。

相关链接:
[url=http://channel9.msdn.com/posts/Peli/The-Common-Compiler-Infrastruture-goes-Open-Source/]Channel 9上关于CCI开源的访谈[/url](3:33)
[url=http://research.microsoft.com/en-us/um/redmond/groups/rise]Research in Software Engineering Group based in the Microsoft Research Redmond Laboratory[/url](RiSE)
[url=http://evain.net/blog/articles/2009/04/18/cecil-and-the-cci]Cecil and the CCI[/url] Jb Evain对Cecil和CCI的评论

P.S. 以前Colin老大问过CCI的获取方式和使用许可,当时我回复说只能从FxCop或者[url=http://www.zonnon.ethz.ch/]Zonnon[/url]获取CCI相关的程序集,但FxCop的许可里指明了其附带的CCI不得用于FxCop以外的用途,所以当时觉得很无奈。现在这玩意儿终于开源了啊 T T
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值