深入浅出编译原理-3-词法分析器
来源:互联网 发布:查看系统端口占用 编辑:程序博客网 时间:2024/05/16 07:50
引言
编译器的工作的开始,就是读入源码(预编译先不考虑),然后,去除一些空字符,然后经过词素匹配,并和其属性(可选),组成一个的词法单元,多个词法单元,连接成词法单元序列。自此,此法分析器的工作就算完成了。呵呵,就这么简单。可见,找到一个词素,是词法分析器的核心工作,那,如何获得一个词素呢?就是本节要讨论的主要内容。
3.1工作流程
上面已经简单描述了词法分析器的工作流程,下面是一张图,更直观的表示了这个流程:
以一条简单的c语言的程序块为例,来展现词法分析器的过程:
3.2内在机制
为了能得到一个符合语言描述的规范的词素,并没有想象的那么简单“不就是得到一个字符串嘛!”,呵呵,咱们错了,这是一项艰巨的任务,由下图标示:
下面是此法分析器的内在机制一张图:
1》首先,要确定一个词素,就是读到一个字符串和模式匹配,
2》模式由DFA来描述。(DFA:确定的有穷自动机)
3》DFA又可以标示为状态转移图
4》状态图又可以通过正则表达式来生成
5》正则表达式是通过语言的文法产生式转换来的
6》文法产生式,又是由编程语言本身来定义的。
需要说的是,编译原理是比较复杂的,要知道DFA,就要学习离散数学;要知道状态图,就要知道‘图’,就是要学习数据结构;还要会正则表达式;还要会编程语言,等等,这些都要有所涉猎。所以编译原理的学习,稍微有点难度,遇到一个概念,就要学习这个概念对应的知识点。况且,这只是词法分析器,后面还有语法分析器,代码优化算法,计算机的体系结构方面的知识。不过不要灰心,只要静下心来,慢慢来,可能学完之后,咱们可能并不能自己去写一个编译器,但是,我想,对于自己写代码优化方面,IC设计方面,一定会有所帮助。
3.3小结
词法分析器的核心,就是找出和模式匹配的词素。要想知道模式描述,就要把具体的编程语言一般描述,先转化问文法,然后文法产生式,然后正则表达式,然后状态转移图,然后DFA。
词素找到了,还要创建符号表,并和词素的属性,组成词法单元,然后组成词法单元序列,最后把序列传给语法分析器,生成抽象语法树,这,就是下一小节打算说的内容。
- 深入浅出编译原理-3-词法分析器
- 编译原理---词法分析器
- 编译原理词法分析器
- 编译原理 词法分析器
- 【编译原理】词法分析器
- 编译原理词法分析器
- 编译原理-词法分析器
- 编译原理词法分析器
- 编译原理词法分析器
- 编译原理--词法分析器
- 编译原理—词法分析器
- 编译原理----Lex词法分析器
- 词法分析器-2-编译原理
- 【编译原理】Lex词法分析器
- 编译原理__词法分析器
- 编译原理(词法分析器)
- 深入浅出编译原理-4-一个简单词法分析器的C语言实现
- 编译原理词法分析器c++源程序
- 回溯法 -数据结构与算法
- 根据Ibatis的SqlMap配置文件生成表结构
- AE建立查询图层
- Microsoft Ajax Minifier Quick Start
- 编码的艺术
- 深入浅出编译原理-3-词法分析器
- 关于服务器内存溢出导致宕机的总结
- 关于iPhone诞生的故事
- UIScrollView UITableView 上提刷新代码
- Ubuntu下添添加的用户没有sudo权限的解决办法
- js日期 转换:计算周岁
- 学习笔记(六)
- 哈希表的尴尬
- 机器人AndyVision 新一代商店库存管理员(附视频)