编译程序是将高级语言书写的源程序翻译成低级语言程序
C语言程序设计试题(卷)集与答案解析

第一章 基础知识 一.填空 1. 每个 C 程序都必须有且仅有一个________ 函数。 2. C 语言程序开发到执行通常要经过 6 个阶段即编辑、预处理、 ________、 链接 、加载 和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计 算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为 低级语言和________两大类 。 6. C 语言是由________组成的。 7. C 语言的函数可分为主函数 main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和 函数体。 9. 编译是将 C 语言所编写的源程序________成机器代码,也称 为建立目标代码程序的过程。 10. 程序是由某种程序设计语言 编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制 计算机本身软硬件协调工作 ,并使其设备充分发挥效力,方便 用户使用的系统软件程序,称为操作系统;而为办公自动 化 (OA)、管理信息系统(MIS)、人工智能、电子商务、网络互 联等等应用而开发的软件程
12. 实数 473.468 写成规范化指数形式,则应为 ______。 13. 实数 0.0453 写成规范化指数形式,则应为 ______。 14. 将 0x123 转换为二进制等于 ______。 15. 字符’A’表示成十六进制等于 ______。 16. 在 C 语言中,称代表常量的标识符为 ______。 17. C语言中是用编译预处理命令______ 来定义符号常量 18. 在 C 语言中,以反斜杠符(\\)开头,后跟字符的字符序列, 称之为 ______ ,主 要用来表示控制及不可见的字符或者一些图形符号 19. 语句 printf(\执行的结果输出是 ______。 20. 语句 printf(“b”)执行的结果输出是______。 21. 语句 printf(“\\\\b”)执行的结果输出是 ______。 22. 语句 printf(\执行的结果输出是 ______。 23. 若有 char ch1; ch1='a'+4; 则语句 printf(\的输出结果为 ______。 24. 字符串常量“Hello, everyone!”占据的内存空间为______ 个字节 25. 字符串常量“Hello,Bob!”占据的内存空间为 ______ 个字 节 26. 十进制整型常量由 0~9 个数据组成,但不能以______ 开始, 没有小数部分 27. 十六进制常量由 0~9 和______ 组成
编译原理填空选择

编译原理填空选择一、填空题:1-01.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,之间代码生成,代码优化等几个基本阶段,同时还会伴有表格处理和出错处理 .1-02.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序 ,则其翻译程序称为编译程序.1-03.编译方式与解释方式的根本区别在于是否生成目标代码.1-04.翻译程序是这样一种程序,它能够将用甲语言书写的程序转换成与其等价的用乙语言书写的程序 .1-05.对编译程序而言,输入数据是源程序 ,输出结果是目标程序 .1-06.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段: 编译阶段和运行阶段 .如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段: 编译阶段 , 汇编阶段和运行阶段.2-01.所谓最右推导是指:任何一步αTβ都是对α中最右非终结符进行替换的。
2-02.一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。
2-03.产生式是用于定义语法成分的一种书写规则。
2-04.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为: L(G)={x│S x,x∈VT*} 。
2-05.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈V*),则称x是文法的一个句型。
2-06.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈VT*),则称x是文法的一个句子。
3-01.扫描器的任务是从源程序中识别出一个个单词符号。
4-01.语法分析最常用的两类方法是自上而下和自下而上分析法。
4-02.语法分析的任务是识别给定的终极符串是否为给定文法的句子。
4-03.递归下降法不允许任一非终极符是直接左递归的。
4-04.自顶向下的语法分析方法的关键是如何选择候选式的问题。
4-05.递归下降分析法是自顶向下分析方法。
4-06.自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。
编译原理期末总结复习

编译原理期末总结复习编译原理期末总结复习篇一:一、简答题1.什么是编译程序?答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。
将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。
2.请写出文法的形式定义?答:一个文法G抽象地表示为四元组 G=(Vn,Vt,P,S)–其中Vn表示非终结符号– Vt表示终结符号,Vn∪Vt=V(字母表),Vn∩Vt=φ– S是开始符号,–P是产生式,形如:α→β(α∈V+且至少含有一个非终结符号,β∈V*)3.语法分析阶段的功能是什么?答:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例:程序、语句、表达式)。
确定整个输入串是否构成语法上正确的程序。
4.局部优化有哪些常用的技术?答:优化技术1—删除公共子表达式优化技术2—复写传播优化技术3—删除无用代码优化技术4—对程序进行代数恒等变换(降低运算强度)优化技术5—代码外提优化技术6—强度削弱优化技术7—删除归纳变量优化技术简介——对程序进行代数恒等变换(代数简化)优化技术简介——对程序进行代数恒等变换(合并已知量)5.编译过程分哪几个阶段?答:逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成。
每个阶段把源程序从一种表示变换成另一种表示。
6. 什么是文法?答:文法是描述语言的语法结构的形式规则。
是一种工具,它可用于严格定义句子的结构;用有穷的规则刻划无穷的集合;文法是被用来精确而无歧义地描述语言的句子的构成方式;文法描述语言的时候不考虑语言的含义。
7. 语义分析阶段的功能是什么?答:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码);并对静态语义进行审查。
8.代码优化须遵循哪些原则?答:等价原则:不改变运行结果有效原则:优化后时间更短,占用空间更少合算原则:应用较低的代价取得较好的优化效果9.词法分析阶段的功能是什么?答:逐个读入源程序字符并按照构词规则切分成一系列单词任务:读入源程序,输出单词符号—滤掉空格,跳过注释、换行符—追踪换行标志,指出源程序出错的行列位置—宏展开,……10.什么是符号表?答:符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。
程序设计语言编译原理第三版答案

程序设计语言编译原理第三版答案【篇一:西北工业大学版(蒋立源第三版)编译原理课后习题答案】解:源程序是指以某种程序设计语言所编写的程序。
目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。
翻译程序是将某种语言翻译成另一种语言的程序的统称。
编译程序与解释程序均为翻译程序,但二者工作方法不同。
解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。
即边解释边执行,翻译所得的指令序列并不保存。
编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。
即先翻译、后执行。
2解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。
3解:c语言的关键字有:auto break case char constcontinue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while。
上述关键字在c语言中均为保留字。
4解:c语言中括号有三种:{},[],()。
其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。
c语言中无end关键字。
逗号在c语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。
5略第二章习题解答1.(1)答:26*26=676(2)答:26*10=260(3)答:{a,b,c,...,z,a0,a1,...,a9,aa,...,az,...,zz,a00,a01,...,zzz},共26+26*36+26*36*36=34658个2.构造产生下列语言的文法(1){anbn|n≥0}(2){anbmcp|n,m,p≥0}(3){an # bn|n≥0}∪{cn # dn|n≥0}解:对应文法为g(s) = ({s,x,y},{a,b,c,d,#}, {s→x,s→y,x→axb|#,y→cyd|# },s)(4){w#wr# | w?{0,1}*,wr是w的逆序排列}解:g(s) = ({s,w,r},{0,1,#}, {s→w#, w→0w0|1w1|# },s)(5)任何不是以0打头的所有奇整数所组成的集合(6)所有偶数个0和偶数个1所组成的符号串集合解:对应文法为s→0a|1b|e,a→0s|1c b→0c|1s c→1a|0b3.描述语言特点(1)s→10s0s→aaa→baa→a解:本文法构成的语言集为:l(g)={(10)nabma0n|n, m≥0}。
计算机等级考试三级网络技术名词解释

WWW服务:WWW服务采用客户机/服务器工作模式。它以超文本标记语言HTML与超文本传输协议HTTP为基础,为用户提供界面一致的信息浏览系统。在WWW服务系统中,信息资源以页面(也称网页或Web页的形式存储在服务器(通常称为Web站点中,这些页面采用超文本方式对信息进行组织,通过链接将一页信息接到另一页信息,这些相互链接的页面信息既可放置在同一主机上,也可放置在不同的主机上。页面到页面的链接信息由统一资源定位符URL维持,用户通过客户端应用程序,即浏览器,向WWW服务器发出请求,服务器根据客户端的请求内容将保存在服务器中的某个页面返回给客户端,浏览器接收到页面后对其进行解释,最终将图。文。声并茂的画面呈现给用户。
SSE:意为流式的单指令流。多数据流扩展指令。
VDSL:甚高速数字用户线(VDSL,是在在ADSL基础上发展起来的,可在很短的双绞铜线上传送比ADSL更高速的数据,其最大的下行速率为51Mbps~55Mbps,传输线长度不超过300m;当传输速率在13Mbps以下时,传输距离可达到5km,上行速率则为6Mbps以上。为了实时传输压缩视频信号,VDSL采用前向纠错(FEC编码技术进行传输差错控制,并使用交换技术纠正由于脉冲噪声产生的突发误码。和ADSL相比,VDSL传输带宽更高,而且由于传输距离缩短,码间干扰小,数字信号处理技术简化,成本将显着降低。
ADSL:非对称数字用户线(ADSL,ADSL是在无中继的用户环路网上,使用有负载电话线提供高速数字接入的传输技术,对少量使用宽带业务的用户是一种经济快速的接入方法。其特点是可在现有任意双绞线上传输,误码率低,下行数字信道的传输速率可达6Mbps,上行数字信道的传输速率可达144kbps或384kbps;模拟用户话路独立;采用线路码。
RADSL:速率自适应数字用户线(RADSL,RADSL提供的速率范围与ADSL基本相同,也是一种提供高速下行。低速上行并保留原语音服务的数字用户线。与ADSL的区别在于:RADSL的速率可以根据传输距离动态自适应,当距离增大时,速率降低,这样可以供用户灵活选择传输服务。
编译原理所有名词解释

第一章编译程序是一种程序,它把高级语言编写的源程序翻译成与之在逻辑上等价的机器语言或汇编语言的目标程序。
一个高级语言程序的执行通常分为两个阶段,即编译阶段和运行阶段。
如果编译生成的目标程序是汇编语言形式,那么在编译与运行阶段之间还要添加一个汇编阶段。
解释程序也是一种翻译程序,它将源程序作为输入,一条语句地读入并解释执行。
解释程序与编译程序的主要区别是:编译程序是将源程序翻译成目标程序后再执行该目标程序,而解释程序则是逐条读出源程序中的语句并解释执行,即在解释程序的执行过程中并不源程序产生目标程序。
编译过程可以划分成五个阶段:词法分析阶段、语法分词法分析器析阶段、语义分析和中间代码生成阶段、优化阶段和目单词符号标代码生成阶段。
词法分析的任务是对构成源程序的字语法分析器表出符串进行扫描和分解,根据语言的词法规则识别出一个语法单位个具有独立意义的单词;语法分析的任务是在词法分析格错语义分析与的基础上,根据语言的语法规则(文法规则)从单词符中间代码生成器管处号串中识别出各种语法单位并进行语法检查;语义分析四元式理和中间代码生成阶段的任务是首先对每种语法单位进行理优化静态语义检查,然后分析其含义,并用另一种语言形式四元式来描述这种语义即生成中间代码;优化的任务是对前阶目标代码生成器段产生的中间代码进行等价变换或改造,以期获得更为目标程序高效(节省时间和空间)的目标代码;目标代码生成阶段的任务是把中间代码(或经优化处、理之后)变换成特编译程序结构示意图定机器上的机器语言程序或汇编语言程序,实现最终的翻译工作。
自编译:用某种高级语言书写自己的编译程序。
交叉编译:指用A机器上的编译程序来产生可在B机器上运行的目标代码。
自展:首先确定一个非常简单的核心语言L0,然后用机器语言或汇编语言书写出它的编译程序T0:再把语言L0扩充到L1,此时有L0L1,并用L0编写L1的编译程序T1(即自编译)。
移植:指A机器上的某种高级语言的编译程序稍加改动后能够在B机器上运行。
电子科技大学14秋《计算机编译原理》在线作业2答案

14秋《计算机编译原理》在线作业2单选题多选题判断题一、单选题(共15 道试题,共75 分。
)1. 描述一个语言的文法是。
A. 唯一的B. 不唯一的C. 可能唯一D. 可能不唯一-----------------选择:B2. 在编译程序中,语法分析分为自顶向下分析和自底向上分析两类:采用自顶向下分析方法时,要求文法中不含有()。
A. 右递归B. 左递归C. 直接右递归D. 直接左递归-----------------选择:B3. 算符文法是指()的文法。
①没有形如U::=...VW...的规则(U,V,W ∈VN)②终结符号集VT中任意两个符号对之间至多有一种优先关系成立③没有相同的规则右部④没有形如U::= ε的规则。
A. ①B. ①②C. ①②③D. ①②③④-----------------选择:A4. 如果文法G是无二义的,则它的任何句子α()。
A. 最左推导和最右推导对应的语法树必定相同B. 最左推导和最右推导对应的语法树可能不同C. 最左推导和最右推导必定相同D. 可能存在两个不同的最左推导,但它们对应的语法树相同-----------------选择:A5. 同心集合并有可能产生新的()冲突A. 归约B. “移进”/“移进”C. “移进”/“归约”D. “归约”/“归约”-----------------选择:D6. SLR(1)分析法的名字中,“R”的含义是()。
A. 自左向右进行分析B. 自右向左进行分析C. 采用最右推导的逆过程——最左归约。
编译与解释的区别

计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。
这种"翻译"通常有两种方式,即编译方式和解释方式。
编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。
解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。
如PASCAL、FORTRAN、COBOL等高级语言执行编译方式;BASIC语言则以执行解释方式为主;而PASCAL、C语言是能书写编译程序的高级程序设计语言。
编译程序、解释程序、汇编程序是3种语言处理程序。
其区别主要为:汇编程序(为低级服务)是将汇编语言书写的源程序翻译成由机器指令和其他信息组成的目标程序。
解释程序(为高级服务)直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如BASIC解释程序。
编译程序(为高级服务)是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序。
编译程序与解释程序最大的区别之一在于前者生成目标代码,而后者不生成;此外,前者产生的目标代码的执行速度比解释程序的执行速度要快;后者人机交互好,适于初学者使用。
用COBOL、FORTRAN等语言编写的程序考虑到执行速度一般都是编译执行。
解释:程序运行时,取一条指令,将其换化为机器指令,再执行这条机器指令。
编译:程序运行时之前,将程序的把有代码编译为机器代码,再运行这个程序。
计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ex:
设G[E]:EE+E|E*E|(E)|i,试证明 符号串( i * i + i )是文法G[E]的一个句子
证明:从E出发,只要证明符号串x = ( i * i + i ) 对 于文法G[E] 存在一个推导。
E(E)(E+E) (E*E+E) (i*E+E) (i*i+E) (i * i + i )
•A0={ac,bc,ad,bd} •A1=A={a,b} •A2=AA={aa, ab, ba, bb} •A3=A2A={aaa,aab,aba,abb,baa,bab,bba,bbb}
• 5、集合的闭包(A+和A*)
– 设A是任意一个集合,则定义A:的正闭包,其
A+=A1 ∪ A2 ∪ A3…
2: Σ中可以是字母、数字或其它符号。 – Ex1:C语言的字母表
ΣC={保留字,字母,数字,专用符号,……}
C语言= ΣC 一组规则 – Ex2:汉语的字母表
Σ汉={汉字,数字,标点符号,……}
• 2、符号与符号串
– 符号(字符):一个符号是字母表中的元素。
– 符号串:是符号的有穷序列。
– EX1: Σ={a, b, c},则a, b, c, ab, ba都是Σ上的符号 串。
复习基本概念
第3讲
1、字母表、符号串、符号串的长度、空串
2、符号串运算:连接、符号串的幂
3、集合的运算:集合乘、集合文的法幂的作、用集是合什的闭
包
么?
4、形式语言的描述:
(1)枚举法描述
(2)用文法描述
5、文法的形式定义
G=(VT,VN,S,P)
四、语言的形式定义
1、直接推导
设X,Y是符号串,如果使用一次规则式可以 从X推导出Y,则Y为X的直接推导。记为: XY
X0=
注: X0 ≠1 X1=X X2=XX
X0=
X1=abc X2=abcabc Xn= abc……abc
Xn= XX……X n个X
n个abc
• 4、集合的幂运算
– 设A是符号串的集合,则定义: A0={}
A1=A A2=AA An=AA……A=An-1A
–EX: •A={a, b} ,则有
• 2、集合的乘积
– 设A、B是符号串的集合,则定义A与B的乘 积为:
AB={xy | xA, y B}
– EX: • A={a, b}, B={c, d},则AB ={ac,bc,ad,bd}
• A{}={}A=A
• {} { }, { }=
• 3、符号串的幂运算
– 设X是符号串,则 • 例、设X=abc,则
一组规则可以描述一个语言的语法结构。
非终结符,一般在左边,它能派生出符号、符号串。 用大写字母表示,如上述中的A。与之对应地,终结 符用小写表示,由它不能派生出任何符号,是一个 不可再分的基本单位,即字母表(∑)中的一个元 素。
2、文法的形式定义
一个文法是规则的非空有穷集合。常用一个四 元组表示,定义为
– Note1:符号串的顺序很重要,如:ab≠ba; 2:不含任何符号的符号串称为空串,用
ε 表示。
– 符号串长度:|a|=1,|ab|=2,| ε|=0
二、符号串的运算
• 1、连接
– 设X和Y是符号串,则串XY称为它们的连接。 – EX:X=ABC,Y=CDF
XY=ABCCDF YX=CDFABC – Note: ε与X的连接或X与ε的连接=X
3、*推导 (广义推导)
设X,Y是符号串,若使用0次或多次规则可以从 X推导出Y,则Y为X的*推导。 记为:X Y
Ex:
设G[S]:S0S1|01,则
区别S: S S直01接推导长度=1 S所以正广0推义SS1导推长 导0000S度 长01111度110000111
即:直接推导正推导广义推导
算符 左操作数 右操作数 结果
第2章 文法和语言
QU:
1、A=B*
2、A=B*C
在C语言中的,以上 两个符号串是否是合 法的、正确的?
QU:那么,Compiler如 何对语法进行定义?是 基于什么形式进行判断 识别的?
AN:形式语言中的文 法是阐明语法的一个重 要工具。
2.1 引言
• 形式化方法:指用一整套带有严格规定 的符号体系来描述问题的方法。
中无空串
A*=A0 ∪ A+
=A0 ∪ A1 ∪ A2……
A的 * 闭包,
–EX:
其中有空串
•A={a, b} ,则有
•A+={a, b, aa, ab, ba, bb, aaa, aab, ……}
•A*=A0 ∪ A+
={ ,a ,b, aa, ……}
2.3 文法与语言的形式意义
▪ 形式语言 ▪ 形式语言的描述 ▪ 文法的形式定义 ▪ 语言的形式定义 ▪ 最左、最右推导 ▪ 归约 ▪ 递归
第一章第课2讲程复习
编译程序是将高级语言书写的源程序翻译成低级 语言程序。一般包括词法分析,语法分析,中间代 码生成,代码优化,目标代码生成五个部分,还应 该包括表格管理和出错处理。
其中中间代码生成和代码优化并不是每个程序都 需要的。 词法分析器用于识别单词,语法分析器用于发现 源程序中的语法错误。 代码优化一般都是在中间代码级上完成的,对中 间代码的优化可以使目标程序的运行时间更短或所 占的空间更少。
一、形式语言
“定义为”或 “由……组成”
<句子><主语><谓语><间接宾语><直接宾语>
<主语><代词>
<谓语><动词>
<间接宾语><代词>
<直接宾语><冠词><名词>
<代词>He
<代词>me <冠词>a <动词>gave
QU:句子He gave me a book 语法上是否是正确的?
<句子><主语><谓语><间接宾语><直接宾语> <主语><代词> <谓语><动词> <间接宾语><代词> <直接宾语><冠词><名词>
……
2.2 符号串
• 一、字母表和符号串 • 二、符号串的运算
一、字母表和符号串
• 1、字母表(Σ)
– Def:是元素的非空有穷集合。 – Note1: Σ中至少有一个元素;
4、句型、句子
设有文法G[S],若从文法开始符号S x,则称符 号串x为文法G[S]的句型;仅仅由终结符组成的 句型叫句子。
若x是一个句型,则x (VNVT)* 若x是一个句子,则x VT*
Ex: S0S1|01
S 01 S 0S1 S 000111
(句型、句子) (句型) (句型、句子)
∴ 文法G=(VT,VN,S,P),其中: VT={a, b},VN={A,B,D},S=A P={Aaa|bb|aaB|bbD, Baa|aaB, Dbb|bbD}
另解:P:AB|D Baa|aBa Dbb|bDb
∴ 文法G=(VT,VN,S,P),其中: VT={a, b},VN={A,B,D},S=A P={AB|D, Baa|aBa, Dbb|bDb}
G=(VT,VN,S,P)
其中:
VT:所有终结符的集合 VN:所有非终结符的集合 S:开始符 P:规则式的集合
EX:
一个文法G=(VT,VN,S,P),其中:
VT={0, 1}
所有终结符的集合
VN={A }
所有非终结符的集合
S=A
开始符
P={A0|1|A0|A1} 规则式的集合
Qu: 给定一个语言L,如何求文法G?
Ex1:设∑={a, b},试设计一个文法G,定义语言L={a2n,b2n | n≥1} 解:由串结构的特征L={aa,bb,aaaa,bbbb,……},可以令P此得序列{aa,aaaa,……},同理
Abb
AbbD
Dbb|bbD
可以得到序列{bb,bbbb,……}
以上从文法的开始符E ( i * i + i ),所以符号 串( i * i + i )是G[E]的一个句子。
5、语言L(G[S])
对一个文法G[S],其句子的全体所组成的集合即 语言L(G[S])。
L(G[S])={x | S x 且 xVT*}
主语
句子
谓语
间接宾语 直接宾语
代词
动词
代词 冠词 名词
He
gave
me
a
book
Note: 1、形式语言是一种上下文无关的语言,是有别于自然 语言的一种语言。
2、定义语言的一组规则及其有关符号,称为文法。 因此,我们把定义形式语言的规则和有关符号的集合,称为上
下文无关的文法。
二、形式语言的描述
• 方式一:当语言为有穷集合时,用枚举法表示。 • EX:设字母表A={a, b, c}
以上简记为: G[A]:AB|D Baa|aBa Dbb|bDb
Note1:给定一个语言时,文法不是唯一的。 Ex2:2:用用文文法法定描义述一语个言含时+,,要*准运确算,符既的不算能术扩表大达也式不。能缩小。 解1:非形式化描述, 解12、:变形量式是化一描个述表:达式;
2、G若[EE]:1和EE2是i 一个表达式,则E1+E2、E1*E2、(E1)也是 一个表达式。EE + E|E * E | ( E )
以上所描述的句子的集合为: