编译原理——习题练习

针对期末考试的……有问题欢迎指出,毕竟我的水平连及格都难



知识点

  1. 编译各阶段功能,以及自展和移植的概念。
  2. 语法树,短语,句柄,简单短语……
  3. 正规表达式,先消除左递归、提取左因子,然后构造成NFA、DFA、最简DFA的全过程。
  4. 构造文法的预测分析表、算符优先分析表、LR(0)项目集族、SLR分析表、LR(1)项目集族、规范LR(1)分析表的过程。
  5. 将语句翻译成三地址代码的方法。



可能考的概念题

  1. 编译的过程   词法分析-语法分析-语义分析及中间代码生成-中间代码优化-目标代码生成

  2. 编译程序
    能够把某一种语言程序(称为源语言程序)转换成另一种语言程序(称为目标程序),而后者与前者在逻辑上等价,这种程序称为编译程序。

  3. 词法分析的任务
    输入源程序,对构成程序的字符串进行扫描和分解,识别出一个个的单词符号。 把需要存放的单词放到符号表中,如变量名,标号,常量等。

  4. 单词符号
    构成语言的最小单元。如基本字 if,标识符,常数123,算符 +和界符 ;

  5. 词法单元
    由一个词法单元名和一个可选的属性值组成。词法单元名是一个表示某种词法单位的抽象符号,比如一个特定的关键字,或者代表一个标识符的输入字符序列。词法单元名字是由语法分析器处理的输入符号。

  6. 模式:描述了一个词法单元的词素可能具有的形式。

  7. 词素: 源程序中的一个字符序列,它和某个词法单元的模式匹配,并被词法分析器识别为该词法单元的一个实例。

  8. 语法分析的任务
    在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位。

  9. 中间代码
    是一种含义明确、便于处理的记号系统,并独立于硬件系统。

  10. 优化的主要方面有:公共子表达式的提取、循环优化、删除无用代码等等

  11. 别人总结的一些概念

  12. 乐乐的总结

  13. 挺全的概念小结



应用题




词法分析



自动机与正则表达式的转换



解题步骤

DFA转正则表达式

将状态按 1、2、…、n 的顺序依次标号
先求任意状态 i 到 j(i 可以等于 j,即自身到自身),不经过其它状态的路径对应的正则表达式
求状态 i 到 j,最高只经过状态 1 的路径对应的正则表达式
求状态 i 到 j,最高只经过状态 2 的路径对应的正则表达式
依此类推……
求状态 i 到 j,最高只经过状态 n 的路径对应的正则表达式,即经过所有状态的路径对应的正则表达式

正则表达式转自动机

了解基本的转换公式就可以画出来
在这里插入图片描述


例题

例题一
构造与下述自动机等价的正则表达式
在这里插入图片描述

分解情况,这个比较简单,直接看也能看出来。如果遇上复杂的,就把复杂的部分单独列出来看然后再合在一起。
ab*a(ba)*


例题二

a(b|c)*转成NFA 简书截图

在这里插入图片描述

例题二

r=(a|b)*abb

  • 61
    点赞
  • 391
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值