微软公布CCI工具源代码 并加入微软开源许可

开发
微软在本周正式公布它的CCI(Common Compiler Infrastructure )工具源代码,并归入获得OSI认证的开源许可 MS Public License (Ms-PL)中免费进行下载。微软的CCI是一组可以提供编译器和相关编程工具功能的组件,这些组件可以用来读写和处理微软的CLR(公共语言运行库 )组件和调试文件。

微软内部一直使用CCI来开发各种不同的编程语言和编程工具,包括FxCop 和 Spec#。

Common Compiler Infrastructure(CCI)源自Project 7,用于为.NET平台提供一套实现编程语言用的公共基础设施。这套基础设施不但也用与编译器编写,也可用于代码分析、代码优化、代码生成等多种功能。FxCop就一直依赖于CCI来提供PE文件解析和写入的相关功能。Visual Studio中的代码分析功能也是基于CCI的特化版。.NET 4的Code Contract也在使用CCI……

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其余的部分联系上了。

【编辑推荐】

  1. 微软开始组织开发大型Windows Mobile应用程序
  2. 微软MVP教你如何看懂.NET CLR基本术语
  3. 微软发布ASP.NET MVC源代码
责任编辑:彭凡 来源: 51CTO
相关推荐

2009-11-24 14:46:43

APC

2009-11-05 13:51:49

APC微软系统中心联盟

2009-09-16 14:22:08

APC微软系统中心

2012-03-11 18:40:49

GroupMe

2020-11-14 16:05:44

Python微软

2020-02-24 09:25:33

代码开发工具

2013-09-16 09:20:04

微软

2021-05-06 09:58:08

微软AI 系统工具Counterfit

2015-10-14 15:18:33

软件IC网

2012-01-09 11:05:02

2012-01-07 00:50:44

2021-03-01 11:33:03

微软恶意代码恶意软件

2014-12-09 09:47:31

谷歌谷歌云平台微软

2009-06-18 09:11:03

2014-04-04 10:07:46

ApacheWinJS

2009-06-10 16:10:49

微软MAPP启明星辰

2012-05-14 10:56:38

Win7

2015-05-11 15:03:43

JavaScriptJavaScript开

2021-01-04 13:28:37

SolarWinds微软漏洞

2014-07-03 13:51:10

Android LAndroid L源码
点赞
收藏

51CTO技术栈公众号