栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

学习编译的过程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习编译的过程

作为一名半路出家的程序员,得多补基础,所以在网上买了课学习,这就是学习的笔记
编译
其实就是把源代码变成目标代码的过程。如果源代码编译后要在操作系统上运行,那目标代码就是汇编代码,我们再通过汇编和链接的过程形成可执行文件,然后通过加载器加载到操作系统里执行。如果编译后是在解释器里执行,那目标代码就可以不是汇编代码,而是一种解释器可以理解的中间形式的代码即可。

1.词法分析,将源代码转化为token,以c语言为例,一个foo的函数,将其解析成token,去掉空格,换行。

int foo(int a){
  int b = a + 3;
  return b;
}


2.语法分析
这一步就是将上一步解析出来的token进行分析成抽象语法树,即将token不断的分解直到每一个叶子节点都是token上的实际的代码

3.语意分析
语义分析的重要特点,就是做上下文相关的分析,确定语法树里的变量引用自哪个变量,确定函数的作用域,以及检查数据类型是否正确。
语义分析获得的一些信息(引用消解信息、类型信息等),会附加到 AST 上。这样的 AST 叫做带有标注信息的 AST(Annotated AST/Decorated AST),用于更全面地反映源代码的含义。

总结起来,在语义分析阶段,编译器会做语义理解和语义检查这两方面的工作。词法分析、语法分析和语义分析,统称编译器的前端,它完成的是对源代码的理解工作。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433568.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号