BUAA 编译作业 练习2-1 2-2 2-3
练习2-1
给出下述句子的推导,并画出语法树:
(1) John ate the big peanut
(2) John ate the big brown peanut
(3) John ate the big roasted peanut
(2)(3)推导方式类似,区别为最后的<名词短语>继续推导为<形容词><名词短语>
利用规则2-1,除最左推导外,给出句子"The big elephant ate the peanut"的另外两种推导(其中一种为最右推导)。
注:所谓最左(最右)推导,是指在推导的每一步中,若符号串中有两个以上语法成分(非终结符号)同时存在时,总是选取最左边(最右边)的语法成分进行推导。后面将给出这两种推导的形式定义。
练习2-2
令A={0,1,2},又令x=01,y=2和z=001,写出如下符号串及其长度:
xy={012} |xy|=3
xyz={012001} |xyz|=6
x4={01010101} |x4|=8
(x3)(y2)={01010122} |(x3)(y2)|=8
(xy)2={012012} |(xy)2|=6
令A={0,1,2},写出集合A+和集合A*的7个最短的符号串。
A+: 0,1,2,00,01,02,10
A*: ε,0,1,2,00,01,02
试证明:A+=AA*=A*A
由定义:A+ =A1∪A2∪A3∪......∪An∪...... ={x, x2, x3, ... ,xn,... |x∈A}
A* =A0∪A+={ε, x, x2, x3, ... ,xn,... |x∈A}
故 A ={x, x2, x3, ... ,xn,... |x∈A}
={xε, xx, xx2, x3, ... ,xn,... |x∈A}
=AA*
={εx, xx, x2x, x3x, ... ,xnx,... |x∈A}
=A*A
练习2-3
写一文法,使其语言是偶整数的集合。
G = <Vn,Vt,P,Z> = <{F,S,D,N}, {0,1,2,...,9,+, -}, P, S>
P:
F ::= + | -
S ::= FND | FD | ND | D
D ::= 0 | 2 | 4 | 6 | 8
N ::= NN | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
写一文法,使其语言是偶整数的集合,但不允许有以0开始的偶整数。
G = <Vn,Vt,P,Z> = <{F,S,K,D,N}, {0,1,2,...,9}, P, S>
P:
F ::= + | -
S ::= KD | D
K ::= KN | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
D ::= 0 | 2 | 4 | 6 | 8
N ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
设文法G的规则是< A > ::= b< A >|cc, 试证明:cc, bcc, bbcc, bbbcc ∈ L[G]。
A => cc ∈ L[G]
A => bA => bcc ∈ L[G]
A => bA => bbA => bbcc ∈ L[G]
有文法G3[<表达式>]:
<表达式> ::= <项> | <表达式>+<项> | <表达式>-<项>
<项> ::= <因子> | <项>*<因子> | <项>/<因子>
<因子> ::= (<表达式>) | i
试给出下列符号串的推导:i, (i), i* i, i* i+i , i*(i+i)。
<表达式> => <项> => <因子> => i
<表达式> => <项> => <因子> => (<表达式>) => (<表达式>) => (<项>) => (<因子>) => (i)
<表达式> => <项> => <因子> => <项>*<因子> => <项> *i => <因子> *i => i *i
<表达式> => <表达式>+<项> => <表达式>+i => i*i+i
<表达式> => <表达式>+<项> => <表达式>+<因子> => <表达式>+ (<表达式>) => <表达式>+ (<表达式>+<项>) => i+(i+i)
9. 设文法G为
N ::= D |ND
D ::= 0|1|2|3|4|5|6|7|8|9
(1) G的语言L(G)是什么?
(2) 给出句子0125和783的最右推导(规范推导)和最左推导。
(1) L(G) = {0,1,2,3,4,5,6,7,8,9}
(2) 0125: 最右:N => ND => N5 => ND5 => N25 => ND25 => N125 => D125 => 0125
最左:N => ND => NDD => NDDD => DDDD => 0DDD => 01DD => 012D => 0125
783: 最右:N => ND => N3 => ND3 => N83 => D83 => 783
最左:N => ND => NDD => DDD => 7DD => 78d =>783
知识点
从集合的角度看语言(符号、符号串)
符号: 字母表中的元素 例: a,b,c (–用英文字母表开头的小写字母和字母表靠近末尾 的大写字母来表示符号)
符号串: 符号的有穷序列 例:a, aa, ac, abc,... (用英文字母表靠近末尾的小写字母来表示符号串)
文法的形式定义:4元组
文法::G=<Vn,Vt,P,Z>
推导: 直接推导:v=>w
间接推导:v=>u0=>u1=>u2=>...=>un=w
规约
递归规则:规则右部具有和左部相同非终结符号。
简单短语: Z=*=>xUy且U=>u,称u是一个相对于非终结符号U的句型w的简单短语。
句柄: 任一句型最左简单短语称为该句型的句柄。
构造文法的基本技巧 :枚举、重复生成、对称
推导树:给定文法,推导句子
复习
文法:G=(Vn,Vt,P,Z)
若有规则U ::= u,且 v=x Uy,w=xuy, 则有推导 xUy =>xuy ,即 v =>w
注意弄清 =>【上面是+,*,|,+|】的概念
文法G对应的语言L(G[Z]) = {x| x∈Vt*, Z+=>x}
递归U =+= ...U...
有句型w=xuy,若Z=*=>xUy,且U=+=u,则u是句型w相对于U的短语
简单短语: Z=*=>xUy且U=>u,称u是一个相对于非终结符号U的句型w的简单短语。
句柄: 任一句型最左简单短语称为该句型的句柄。
BUAA 编译作业 练习2-1 2-2 2-3相关推荐
- BUAA 编译作业 练习11
1. 令A.B和C是任意正则表达式,证明以下关系成立. A|A = A (A*)* = A* A* = ε |AA* (AB)*A = A(BA)* (A|B)* = (A*B*)* = (A*|B* ...
- BUAA 编译作业 练习3
伪代码那道题自己写的也不是很确定......暂时先鸽了/(ㄒoㄒ)/~~ 画出下述文法的状态图: <Z> ::= <B>e <B> ::= <A>f & ...
- BUAA数据结构作业——基于Huffman码的文件压缩工具
目录 前言 题目 问题描述 输入形式 输出形式 样例 问题分析 代码实现 前言 大家好哇!今天给大家分享一道Huffman码的实战应用题.Huffman码来源于Huffman树,假设二叉树有m个叶结点 ...
- 编译Linux 2.6内核
编译内核易如反掌.让人叹为观止的是,这实际上比编译和安装像glibc这样的系统级组伴还要简单.2.6内核提供了一套新工具,使编译内核更加容易,比早期发布的内核有了长足的进步. 2.3.1 配置内核 因 ...
- visual studio编译linux,在 Visual Studio 中配置 Linux MSBuild C++ 项目
在 Visual Studio 中配置 Linux MSBuild C++ 项目Configure a Linux MSBuild C++ project in Visual Studio 10/16 ...
- mysql openwrt 编译_如何编译OpenWrt
(!文末,附加人生如戏写的编译OPENWRT的TXT内容,可直接跳至末尾,有例子) Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx.trx2),此映像文件可从Openwr ...
- 读书笔记-内存初始化和清理
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 在Java开发中,对象创建.数据关系.垃圾回收始终是不变的话题,今天我们来简单说一下初始化和清理的问 ...
- 我终于加上博士大佬的微信!攒了近百个技术问题,一口气解决!(文末有福利)...
昨天,我终于加上了CMU计算机博士大佬 Johnson 的微信了! 之前我研究机器学习的时候,遇到了很多小问题,希望这位大佬能帮忙指点一下. 毕竟CMU是计算机学科全球排名前三的顶级高校,当然出来的博 ...
- 架构编译器框架系统 LLVM 使用简介
2019独角兽企业重金招聘Python工程师标准>>> LLVM 是什么 LLVM 是 low level virtual machine(底层虚拟机)的简称,它是一个开源的编译器架 ...
最新文章
- IntelliJ IDEA2016.2 Eclipse(mac os x)常用推荐捷键手册
- 方舟服务器显示队友位置,方舟如何看队友在哪 | 手游网游页游攻略大全
- express 的 middleware 设计
- css设置鼠标指针光标样式
- 分布式文件系统之MogileFS的使用
- 程序员如何财务自由【原创】
- [教程][6月4日更新]VMware 8.02虚拟机安装MAC lion 10.7.3教程 附送原版提取镜像InstallESD.iso!...
- 速卖通关键词挖掘工具_SEMer如何利用工具挖掘更多的关键词?拓词技巧
- U8 ActiveX 部件不能创建对象
- VisualAge使用技巧(二)
- mysql去除重复数据
- 使用Dir函数遍历文件和目录
- 路由器配置和静态路由
- java swing 多行文本,Java Swing JTextArea
- 神经网络控制与matlab仿真,matlab神经网络拟合预测
- 8.8 Web前端-小米商城项目实战
- 扎心了!当代大学生孤独等级测试,你是第几级?
- 牛客小白月赛3 B.躲藏
- 高新计算机考试题库安装,计算机信息高新技术考试模块题库教材配套一览表.doc...
- 比手机自带截图更吊的截图大师去广告汉化版摇一下即可截图!