• 【c#基础】.Net编译器平台


    1:编译器管道

    2:语法分析

    3:语义分析

    4:代码转换

    5:代码重构

    c#6开始用一个新的编译器--Roslyn。最初,c#编译器是用c++编写的。现在,它的主要部分是用c#和.Net创建的。编译器平台是开源的。

    开源地址:https://github.com/dotnet/roslyn

    新的编译平台优点:使用c#实现新功能要容易得多,新代码易于维护。

    重写c#编译器的一个更大优势是:现在可以利用编译器管道,在编译器管道的每一步添加功能,并分析和转换源代码。

     一:编译器管道

    编译器管道包括以下阶段:

    解析器--阅读和标记化源代码,然后将其解析为一个语法树。语法树API用于在源代码编辑器中格式化、着色、列出大纲。

    声明--分析源代码中的声明和导入元数据,以创建符号。为这一阶段提供了符号API.在编辑器和对象浏览器中的Navigation To特性使用这个API.

    绑定--标识符匹配符号。为这一阶段提供了绑定和流分析API。Find All References、 Rename、Quick Info和Extract Method等特性都使用这个API。

    发布--创建IL代码,发布一个程序集。发布API可用于创建程序集。编辑器中的Edit and Continue特性需要一个新的编译,来利用发布阶段。

    根据编译器管道,提供了编译器API,例如 语法(Syntax)API、符号(Symbol)API、绑定和流分析(Binding and Analysis)API以及发布(Emit)API.

    .Net编译器平台还提供了一个API层,来利用另一个API:工作区Workspace API。工作区API 允许使用工作区、解决方案、项目和文档。

    VS中,一个解决方案可以包含多个项目,一个项目可以包含多个文档。一个工作区可以包含多个解决方案。

    所有用于.Net编译器平台的树是不可变的,不能更改。每次改变都会创建一个新树。这就是为什么需要工作区这个概念--一个工作区可以包含多个解决方案。

    二:语法分析

  • 相关阅读:
    谷歌地图地理解析和反解析geocode.geocoder详解(转)
    Html5 Geolocation获取地理位置信息(转)
    利用单片机快速实现家庭智能控制平台
    邪恶改装:TPYBoard制作廉价WIFI干扰器
    [TPYBoard
    [TPYBoard
    [TPYBoard
    python中的subprocess.Popen()使用
    KVM虚拟机的xml配置文件
    Linux LVM 总结
  • 原文地址:https://www.cnblogs.com/SignX/p/11630670.html
Copyright © 2020-2023  润新知