5、4.1词法分析概述

编译程序总框

 

词法分析的任务

  • 词法分析的任务
    • 从左到右做个字符地对源程序进行扫描,产生一个单词符号
  • 词法分析器(Lexical Analyzer)
    • 扫描器(Scanner)
    • 执行词法分析的程序

词法分析器的功能

  • 功能
    • 输入源程序、输出单词符号
  • 单词符号的种类
    • 基本字:如begin, repeat, for, ....
    • 标识符:用来表示各种名字,如变量名、数组名和过程名
    • 常数:各种类型的常数
    • 运算符:+,-,*,/,....
    • 界符:逗号,分号,括号和空白

词法分析器的输出

  • 输出的单词符号的表示形式:
    • (单词种别,单词自身的值)
  • 单词种别通常用整数编码表示
    • 若一个种别只有一个单词符号,则种别编码就代表该单词符号。假定基本字运算符界符都是一符一种
    • 若一个种别有多个单词符号,则对于每个单词符号,给出种别编码自身的值
      • 标识符单列一种;标识符自身的值表示成按机器字节划分 的内部码
      • 常数按类型分种;常数的值则表示成标准的二进制形式。

例 PASCAL程序

  • if(5 = m) goto 100
  • 输出单词符号

例 C程序

  • while(i >= j) i--;
  • 输出单词符号

词法分析器作为一个独立子程序

  • 词法分析器作为一个独立的阶段
    • 结构清晰简洁,有利于集中考虑词法分析一些枝节问题
  • 但不一定不作为单独的一
    • 强其处理为一个子程序

词法分析器在编译器中地位

 

 

posted @ 2022-11-19 21:31  多一些不为什么的坚持  阅读(66)  评论(0编辑  收藏  举报