词法分析 231对于词法分析器的要求 词法分析器的功能和输出形式 ●功能:输入源程序、输出单词符号 ●输出的单词符号的表示形式: (单词种别,单词自身的值) 单词符号的种类: 基本字:如 begin, repeat,, ●标识符表示各种名字:如变量名、数组 名和过程名 常数:各种类型的常数 ●运算符:+,-,*,/, °界符:逗号、分号、括号和空白
2.3.1 对于词法分析器的要求 一、词法分析器的功能和输出形式 功能:输入源程序、输出单词符号 输出的单词符号的表示形式: (单词种别,单词自身的值) 单词符号的种类: ⚫ 基本字:如 begin,repeat, ⚫ 标识符——表示各种名字:如变量名、数组 名和过程名 ⚫ 常数:各种类型的常数 ⚫ 运算符:+,-,*,/, ⚫ 界符:逗号、分号、括号和空白 词法分析
例C程序 while(i=jiai e输出单词符号: <while <id,指向i符号表项的指针 <id,指向j的符号表项的指针> <id,指向i符号表项的指针>
例 C程序 while (i>=j) i--; 输出单词符号: <while, -> <(, -> <id, 指向i的符号表项的指针> <>=, -> <id, 指向j的符号表项的指针> <), -> <id, 指向i的符号表项的指针> <--, -> <;, ->
例F0 RTRAN程序 IF(5. EQ M)GOTO 100 输出单词符号: 逻辑IF(34, 左括号(2, 整常数(20,“5的二进制) 等号 (6,-) 标识符(26,“M) 右括号(16, GOTO (30,-) 标号 (19,(100的二进制)
例 FORTRAN程序 IF (5.EQ.M) GOTO 100 输出单词符号: 逻辑IF (34,-) 左括号 (2,-) 整常数 (20, ‘5’的二进制) 等号 (6,-) 标识符 (26, ‘M’) 右括号 (16,-) GOTO (30,-) 标号 (19, ‘100’的二进制)
词法分析器与语法分析器的关系 单词符号 源程序词法分 语法分 析器 析器 取下一单词 符号表
词法分析器与语法分析器的关系 词法分 析器 语法分 析器 符号表 源程序 单词符号 取下一单词
2.3,2词法分析器的设计 预处理 输入列表 子程序仁输入缓冲区 扫描器-扫描缓冲区 单词符号 词法分析器的结构
词法分析器的结构 预处理 子程序 扫描器 输入缓冲区 扫描缓冲区 单词符号 输入 列表 2.3.2 词法分析器的设计