【编译原理】第三章总结

思维导图

在这里插入图片描述

总结

词法分析程序的功能及实现方案

功能

  • 词法分析:根据词法规则识别及组合单词,进行词法检查
  • 删去空格字符和注释
  • 对数字常数完成数字字符串到二进制数值的转换

实现方案

  • 词法分析单独为一遍:
    在这里插入图片描述
    优点:结构清晰、各遍功能单一
    缺点:效率低
  • 词法分析为单独子程序:
    在这里插入图片描述
    优点:效率高

单词种类及词法分析程序的输出形式

单词种类

  • 保留字:begin、end、for、do…
  • 识别符:由用户定义,表示各种名字的字符串
  • 常数:无符号数、布尔常数、字符串常数等
  • 分界符或操作符:+、-、*、/、:、(、)、;…等

单词内部形式

  • 单词种类分类:类别编码|单词值
    在这里插入图片描述
  • 保留字和分界符采用一符一类
    在这里插入图片描述
  • 标识符和常数的单词值又为指示字(指针值)(符号表中的地址)

正则文法及其状态图

左线性文法的状态图画法(重难点)

  • 用结点(状态)表示G的非终结符,G的识别符号为终止状态(双圈)
  • 设一个开始状态S
  • 若Q ::= t , Q∈Vn, t∈Vt , 则画一条从状态S到状态Q的有向弧,且弧上标记为t
  • 若Q::=Rt, Q、R∈Vn,t∈Vt, 则画一条从状态R 到状态Q的有向弧,且弧上标记为t
  • 例子:正则文法以及其状态图
    Z::= U0 |V1
    U ::=Z1 | 1
    V ::=Z0 | 0
    在这里插入图片描述

句子识别算法(重点)

利用状态图可按如下步骤分析和识别字符串x:

  • 置初始状态为当前状态,从x的最左字符开始,重复步骤2,直到x的右端为止
  • 扫描x的下一个字符,在当前状态所射出的弧中找出标记有该字符的弧,并沿此弧过渡到下一个状态;如果找不到标有该字符的弧,那么x不是句子,过程到此结束;如果扫描的是x的最右端字符,并从当前状态出发沿着标有该字符的弧过渡到下一个状态为终止状态Z,则x是句子

词法分析程序的设计与实现

  • 主要实现思想
    在这里插入图片描述
  • 文法及其状态图:
    语言的单词符号:
    1、标识符
    2、保留符
    3、无符号整数
    4、单分界符+*/:,()
    5、双分界符:=
    在这里插入图片描述
  • 状态图的实现——构造词法分析程序
    1、单词及内部表示: 保留字和分界符采用一符一类
    2、词法分析程序需要引用的公共(全局)变量和过程
    3、词法分析程序算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值