C# 概念及特点 NET Framework 及编译原理

一概念及特点

C#是微软(Microsoft)公司基于.NET FrameWork框架设计的面向对象的程序设计语言,并且是类型安全的强类型语言。C#高级语言是运行在.NETFrameWork框架之上的。
C#是从C和C++派生来的一种简单、现代、面向对象和类型安全的编程语言,并且能够与.NET框架完美结合。
C#具有以下特点:
语法简洁。
彻底的面向对象设计。
与Web紧密结合。
灵活的版本处理技术。
完善的错误、异常处理机制。
强类型的。

二C#与.NET Framework ,.NETCore 的关系


.NET Framework是微软推出的在Windows平台上的开发框架,只是一个平台,不是语言,而C#才是编程语言。
在.NET Framework框架之上可以多种语言,包括VB、C#、J#等语言。其中C#是微软主推的编程语言。Net Framework是运行在Windows操作系统之上的

.Net FrameWork 与.Net Core是.net平台推出的两大 框架;c#语言是运行在.net平台上的高级语言之一。.

Net FrameWork 可以用来创建Windows应用程序,即所说的Winform开发;Web方面 它还可以用来做Asp.Net开发与Asp.Net MVC开发,经常所说的Asp.Net开发就是指的Web Form开发;

.NET Core 是微软推出的最新的开源的,跨平台的框架,可以运行在Windows、MAC、Linux系统上。

三 CLR    FCL  CTS   CLS   lL 及编译原理

CLR:CLR是Common Language Runtime的缩写,中文含义是:公共语言运行时。提供一个运行时环境,使用C#、VB编译的代码最终要被编译为能被CLR运行的可执行代码 相当于-一个发动机,负责执行IL 它包括CTS和CLS两个部分,和其他的组件。
FCL:FCL是Framework Class Library的缩写,中文含义就是.Net Framework框架类库,包含有几千个类型的定义,每个类型都提供了某种功能。CLR是.Net Framework的底层。
CTS: Common Type System通用类型系统。Int32、 Int16- →int、String→string、Boolean- →bool.每种语言都定义了自己的类型,.NET 通过CTS提供了公共的类型,然后翻译生成对应的类型。
CLS: Common Language Specification通用语言规范。不同语言语法的不同。每种语言都有自己的语法,.NET 通过CLS提供了公共的语法,然后不同语言翻译生成对应的语法。
IL(Intermediate Language)) 中间语言,是经过编译之后可以执行的二进制代码,实现了.net平台的互联互通,后缀名为.exe或.dll。IL中间语言,是在CLR监控下运行的代码,称为托管代码(Managed Code)

C Sharp编译原理
在C#语言中,首先是C#编译器将编写好的代码进行编译,生成DLL或者exe文件,而.Net Core只会生成DLL文件。DLL或EXE还需要CLR/JIT的即时编译成字节码, 最后被计算机识别。总结:第一次编译:生成DLL或EXE文件(即生成MSIL微软中间语言)。第二次编译:DLL或EXE再经过CLR中的即时编译JIT,生成字节码(即机器码)

  • 40
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#编译原理 目 录 译者序 前言 第1章 概论 1 1.1 为什么要用编译器 2 1.2 与编译器相关的程序 3 1.3 翻译步骤 5 1.4 编译器中的主要数据结构 8 1.5 编译器结构中的其他问题 10 1.6 自举与移植 12 1.7 TINY样本语言与编译器 14 1.7.1 TINY语言 15 1.7.2 TINY编译器 15 1.7.3 TM机 17 1.8 C-Minus:编译器项目的一种语言 18 练习 19 注意与参考 20 第2章 词法分析 21 2.1 扫描处理 21 2.2 正则表达式 23 2.2.1 正则表达式的定义 23 2.2.2 正则表达式的扩展 27 2.2.3 程序设计语言记号的正则表达式 29 2.3 有穷自动机 32 2.3.1 确定性有穷自动机的定义 32 2.3.2 先行、回溯和非确定性自动机 36 2.3.3 用代码实现有穷自动机 41 2.4 从正则表达式到DFA 45 2.4.1 从正则表达式到NFA 45 2.4.2 从NFA到DFA 48 2.4.3 利用子集构造模拟NFA 50 2.4.4 将DFA中的状态数最小化 51 2.5 TINY扫描程序的实现 52 2.5.1 为样本语言TINY实现一个扫描 程序 53 2.5.2 保留字与标识符 56 2.5.3 为标识符分配空间 57 2.6 利用Lex 自动生成扫描程序 57 2.6.1 正则表达式的Lex 约定 58 2.6.2 Lex输入文件的格式 59 2.6.3 使用Lex的TINY扫描程序 64 练习 65 编程练习 67 注意与参考 67 第3章 上下文无关文法及分析 69 3.1 分析过程 69 3.2 上下文无关文法 70 3.2.1 与正则表达式比较 70 3.2.2 上下文无关文法规则的说明 71 3.2.3 推导及由文法定义的语言 72 3.3 分析树与抽象语法树 77 3.3.1 分析树 77 3.3.2 抽象语法树 79 3.4 二义性 83 3.4.1 二义性文法 83 3.4.2 优先权和结合性 85 3.4.3 悬挂else问题 87 3.4.4 无关紧要的二义性 89 3.5 扩展的表示法:EBNF和语法图 89 3.5.1 EBNF表示法 89 3.5.2 语法图 91 3.6 上下文无关语言的形式特性 93 3.6.1 上下文无关语言的形式定义 93 3.6.2 文法规则和等式 94 3.6.3 乔姆斯基层次和作为上下文无关 规则的语法局限 95 3.7 TINY语言的语法 97 3.7.1 TINY的上下文无关文法 97 3.7.2 TINY编译器的语法树结构 98 练习 101 注意与参考 104 第4章 自顶向下的分析 105 4.1 使用递归下降分析算法进行自顶向下 的分析 105 4.1.1 递归下降分析的基本方法 105 4.1.2 重复和选择:使用EBNF 107 4.1.3 其他决定问题 112 4.2 LL(1)分析 113 4.2.1 LL(1)分析的基本方法 113 4.2.2 LL(1)分析与算法 114 4.2.3 消除左递归和提取左因子 117 4.2.4 在LL(1)分析中构造语法树 124 4.3 First集合和Follow集合 125 4.3.1 First 集合 125 4.3.2 Follow 集合 130 4.3.3 构造LL(1)分析表 134 4.3.4 再向前:LL(k)分析程序 135 4.4 TINY语言的递归下降分析程序 136 4.5 自顶向下分析程序中的错误校正 137 4.5.1 在递归下降分析程序中的错误 校正 138 4.5.2 在LL(1)分析程序中的错误校正 140 4.5.3 在TINY分析程序中的错误校正 141 练习 143 编程练习 146 注意与参考 148 第5章 自底向上的分析 150 5.1 自底向上分析概览 151 5.2 LR(0)项的有穷自动机与LR(0)分析 153 5.2.1 LR(0)项 153 5.2.2 项目的有穷自动机 154 5.2.3 LR(0)分析算法 157 5.3 SLR(1)分析 160 5.3.1 SLR(1)分析算法 160 5.3.2 用于分析冲突的消除二义性 规则 163 5.3.3 SLR(1)分析

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值