编译原理1
![preview](https://dl-preview.csdnimg.cn/86367791/0001-26128eadcee9d9cdac40852f1ddc9c9a_thumbnail-wide.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
编译原理1 本文主要讲述了编译原理的基本概念和技术,包括词法分析、语法分析、容错机制等。 词法分析是编译器的第一个阶段,它的主要任务是将源代码分割成一个个 token,以便于后续的语法分析。词法分析可以理解为进行分词,同时进行词法错误查找。在词法分析中,需要考虑空白符的处理,因为基本上都是用空白符隔开了,把当前词加入报错列表然后开始下一个词的匹配即可。 在词法分析中,需要考虑到注释的处理。注释的分析结构和语法分析里面很像,但是考虑到注释的作用(内部文字对程序无效),所以采用了更好的做法,加入到词法分析的 DFA 中,一块注释作为一个 token 分析。 语法分析是编译器的第二个阶段,它的主要任务是将 token 序列转换成语法树,以便于后续的语义分析和代码生成。语法分析可以理解为进行语法分块(表达式、语法结构),同时进行语法差错(比如需要考虑表达式的类型检查)。 在语法分析中,需要考虑到容错机制。容错即尽可能继续向下分析。词法分析的容错机制如果有了,那么语法分析怎么配合处理也是个麻烦。我们可以使用 getToken() 函数来获取下一个 token,这样可以边词法分析边传。 在词法分析和语法分析中,我们需要考虑到 token 的存储和传递。我们可以使用数组来存储 token,使用 list 来传递 token。每一个数组元素都要有一个指向下一个元素的地址,占用 4 字节。也可以使用固定长度的 char*[],但是需要注意内存的使用。 编译原理是计算机科学中最重要的领域之一,它的应用范围非常广泛,包括编程语言、数据库、人工智能等。了解编译原理可以帮助我们更好地理解编程语言的工作原理,从而提高我们的编程能力。 First Set 和 Follow Set 是编译原理中两个重要的概念。First Set 表示非终结符可能产生的终结符(包含 ε),Follow Set 表示非终结符后面的东东(包含 $)。它们在语法分析中扮演着重要的角色,帮助我们更好地理解语法规则。 在编译原理中,我们还需要考虑到错误处理机制。词法分析和语法分析都需要考虑到错误处理机制,以便于编译器能够正确地工作。错误处理机制可以分为两种:词法错误和语法错误。词法错误是指在词法分析阶段发现的错误,语法错误是指在语法分析阶段发现的错误。 编译原理是一个非常重要的领域,它的应用范围非常广泛。了解编译原理可以帮助我们更好地理解编程语言的工作原理,从而提高我们的编程能力。
![](https://csdnimg.cn/release/download_crawler_static/86367791/bg1.jpg)
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar](https://profile-avatar.csdnimg.cn/e5f67bdb96564f04b915c1e9fecd66c4_weixin_35779001.jpg!1)
- 粉丝: 27
- 资源: 300
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 图标生成工具 Windows 版本(支持.ico和.icns)IconBuilder v1.1
- 666662222277777
- 图标生成工具 Mac 版本(支持.ico和.icns)IconBuilder v1.1
- 求最大公约数(简单).cpp
- elasticsearch数据库下载、配置、使用案例
- springboot的概要介绍与分析
- C语言的概要介绍与分析
- 第一个较大的Android项目,基于Android平台的图书管理系统(Android studio).zip
- Cisco Packet Tracer 6.2 for Windows Instructor Version
- 使⽤pyIAST计算⽓体吸附选择性
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)
评论0