本文主要是介绍词法分析、语法分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
词法分析器
词法分析的任务是:从左往右逐个字符地扫描源程序,产生一个个的单词符号。也就是说,它会对输入的字符流进行处理,再输出单词流。执行词法分析的程序即词法分析器,或者说扫描器。
词法分析的成果就是由一系列单词符号构成的单词流。单词符号其实就是 token,一般有6类:
- 关键字:例如
while
,if
,int
等 - 标识符:变量名、常量名、函数名等
- 常数:例如,
100
,'text'
,TRUE
等 - 运算符:例如
+
,*
,/
等 - 界符:逗号,分号,括号,点等
- 系统函数名 如 scanf、printf、getc等
词法分析器的输出时一个二元式:(单词种别,单词符号的属性值)
。
单词种别通常用整数编码表示
若一个种别只有一个单词符号,则种别编码就代表该单词符号。假定基本字、运算符和符都是一符一种。
若一个种别有多个单词符号,则对于每个单词符号,给出种别编码和自身的值。
标识符单列一种:标识符自身的值表示成按机器字节划分的内部码
常数按类型分种;常数的值则表示成标准的二进制形式。
词法分析器设计
词法分析器的设计工具---状态转换图
状态转换图
状态转换图的实现
正规式与正规集
运算性质
e*=e﹢|⊱
确定有限自动机
状态转换矩阵:状态\字符
非确定有限自动机
状态转换图
DFA和NFA区别
化简
为正规式构造NFA
内容来源
编译原理学习笔记-3:词法分析(一)基本过程、正规式和有限自动机-腾讯云开发者社区-腾讯云 (tencent.com) 编译原理_中国大学MOOC(慕课) (icourse163.org)
这篇关于词法分析、语法分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!