编译原理,你所不理解的词法分析,这里都帮你整理好了
https://m.toutiao.com/is/dosKEk4/?=编译原理
词法分析程序设计
词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。
词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序
词法分析程序的主要任务:
- 读源程序,产生单词符号
词法分析程序的其他任务:
- 滤掉空格,跳过注释、换行符
- 追踪换行标志,复制出错源程序,
- 宏展开,……
1.词法分析程序与语法分析程序的接口方式
接口方式:独立的一遍、作为子程序被调用
2.词法分析程序的功能与输出
功能:输入源程序、输出单词符号
单词符号的种类:
- 基本字:如 begin,repeat,Ö
- 标识符——表示各种名字:如变量名、数组名和过程名
- 常数:各种类型的常数
- 运算符:+,-,*,/,Ö
- 界符:逗号、分号、括号和空白
输出的单词符号的表示形式:(单词种别,单词自身的值)
单词种别通常用整数编码表示。
- 若一个种别只有一个单词符号,则种别编码就代表该单词符号。假定基本字、运算符和界符都是一符一种。
- 若一个种别有多个单词符号,则对于每个单词符号,给出种别编码和自身的值。
标识符单列一种;标识符自身的值表示成按机器字节划分的内部码。
常数按类型分种;常数的值则表示成标准的二进制形式。
举例说明
C程序
FORTRAN程序
3.词法分析工作分离的考虑
词法分析是作为一个独立的阶段,是否应当将其处理为一遍呢?
- 作为独立阶段的优点:
结构简洁、清晰和条理化,
提高编译程序效率
增强编译程序的可移植性
有利于集中考虑词法分析一些枝节问题。
- 不作为一遍:将其处理为一个子程序。
单词的表述工具——正规文法
回顾几个概念
正规文法
正规式与正规集
- 正规集可以用正规表达式(简称正规式)表示。
- 正规表达式是表示正规集一种方法。一个字集合是正规集当且仅当它能用正规式表示。
正规式和正规集的递归定义
仅由有限次使用上述三步骤而定义的表达式才是Σ上的正规式,仅由这些正规式表示的字集才是Σ上的正规集。
举例
讨论两个例子
程序设计语言的单词都能用正规式来定义.
正规文法与正规集的等价性
总结
正规文法
正规式
正规集
赞 (0)