编译原理,你所不理解的词法分析,这里都帮你整理好了

https://m.toutiao.com/is/dosKEk4/?=编译原理

词法分析程序设计

词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。

词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序

词法分析程序的主要任务

  • 读源程序,产生单词符号

词法分析程序的其他任务

    • 滤掉空格,跳过注释、换行符
    • 追踪换行标志,复制出错源程序,
    • 宏展开,……

1.词法分析程序与语法分析程序的接口方式

接口方式:独立的一遍、作为子程序被调用

2.词法分析程序的功能与输出

功能:输入源程序、输出单词符号

单词符号的种类:

    1. 基本字:如 beginrepeatÖ
    2. 标识符——表示各种名字:如变量名、数组名和过程名
    3. 常数:各种类型的常数
    4. 运算符:+-*/Ö
    5. 界符:逗号、分号、括号和空白

输出的单词符号的表示形式:(单词种别,单词自身的值)

单词种别通常用整数编码表示。

    • 若一个种别只有一个单词符号,则种别编码就代表该单词符号。假定基本字、运算符和界符都是一符一种。
    • 若一个种别有多个单词符号,则对于每个单词符号,给出种别编码和自身的值。

标识符单列一种;标识符自身的值表示成按机器字节划分的内部码。

常数按类型分种;常数的值则表示成标准的二进制形式。

举例说明

C程序

FORTRAN程序

3.词法分析工作分离的考虑

词法分析是作为一个独立的阶段,是否应当将其处理为一遍呢?

  • 作为独立阶段的优点:

结构简洁、清晰和条理化,

提高编译程序效率

增强编译程序的可移植性

有利于集中考虑词法分析一些枝节问题。

  • 不作为一遍:将其处理为一个子程序。

单词的表述工具——正规文法

回顾几个概念

正规文法

正规式正规集

    • 正规集可以用正规表达式(简称正规式)表示。
    • 正规表达式是表示正规集一种方法。一个字集合是正规集当且仅当它能用正规式表示。

正规式和正规集的递归定义

仅由有限次使用上述三步骤而定义的表达式才是Σ上的正规式,仅由这些正规式表示的字集才是Σ上的正规集。

举例

讨论两个例子

程序设计语言的单词都能用正规式来定义.

正规文法与正规集的等价性

总结

正规文法

正规式

正规集

(0)

相关推荐