首页 > 其他分享 >3.2文法与语言

3.2文法与语言

时间:2022-11-18 10:57:29浏览次数:34  
标签:文法 语言 句型 推导 3.2 句子 gave

1、文法生成语言
推导
定义:当αAβ直接推导出αγβ,即αAβ⇒αγβ,仅当A→γ是一个产生式,且α,β∈(VT∪VN)*。
注:按照我的理解是两个字符串的推导。
如果α1⇒α2⇒…⇒αn,则我们称这个序列是从α1到αn的一个推导。若存在一个从α1到αn的推导,则称α1可以推导出αn。
对文法G(E):E→i | E+E | E*E | (E)
E⇒(E)⇒(E+E)⇒(i+E)⇒(i+i)
从一个串到另外一个串的推导往往不是唯一。
下面这个就是一种推导

α1⇒* αn,从α1出发,经过0步或若干步推出αn.
α1⇒+ αn,从α1出发,经过1步或若干步推出αn.
α⇒* β ,α=β 或α⇒+ β
下面三种都是合理的
<句子> ⇒* He gave me a book.
<句子> ⇒+he gave me a book.
He gave 间接宾语 直接宾语 ⇒+ He gave me 冠词 名词
句型、句子和语言
假如G是一个文法,S是它的开始符号。如果S⇒*α,则称α是一个句型。
比如:<主语><谓语><间接宾语><直接宾语>⇒ *He<谓语><间接宾语><直接宾语>,则称He<谓语><间接宾语><直接宾语>是句型。
仅包含终结符的句型是一个句子。
比如:he gave me a book.是一个句子。
文法G所产生的句子的全体是一个语言,记为L(G)。
L(G) = {α|S⇒+α,α∈VT*}
2、句型和句子练习
请证明(ii+i)是文法G(E):E→i | E+E | EE | (E)的一个句子。
满足下面这两种条件。
S⇒* α,α∈VT*(α要可以被S推导出来,并且a要都是终结符)
证明:
E⇒(E)
⇒(E+E)
⇒(E * E+E)
⇒(i * E+E)
⇒(i * i+E)
⇒(i * i+i)
(i * i+i)是文法G的句子。
E,(E),(E*E+E),…,(i * i+i)是句型。

3、文法与语言
设文法G1(A):A→c | Ab,G1(A)产生的语言是什么?


以c,开头,后续若干个b
L(G1) = {c,cb,cbb,…}
设文法G2(S):S→AB,A→aA | a,B→bB|b,G2(S)产生的语言是什么?


L(G2) = {anbm|n,m>0}
请给出产生语言为{anbn|n>=1}的文法
G3(S):S→aSb,S→ab

请给出产生语言为{ambn|1<=n<=m<=2n}的文法
G4(S):
S→ab|aab
S→aSb|aaSb
从递归的角度理解

标签:文法,语言,句型,推导,3.2,句子,gave
From: https://www.cnblogs.com/xzit201802/p/16902477.html

相关文章

  • Vue3.2语法糖
    vue3.0要在template中使用某些变量就必须在最后return出来,多次声明变量,不太方便,也不太友好。而在vue3.2版本之后,我们只需在script标签上加上setup属性,不需要再写return就可......
  • 计算机等级考试二级C语言程序设计专项训练题——程序设计题(四)
    31、请编写函数voidfun(charxx[]),函数的功能是:将字符串数组xx中下标为奇数的字符按其ASCII值从大到小的顺序进行排序。例如:源字符串为:abcdefgh,则处理后字符串为:ahcfedgb......
  • C语言交通查询系统
    C语言交通查询系统数据结构实验周任务书1.设计目的:数据结构实验周课程设计旨在培养学生运用数据结构的相关知识和理论解决计算机建模的能力,具备良好的数据结构建模的思想......
  • C语言运动会分数统计程序
    C语言运动会分数统计程序运动会分数统计程序的设计(2人)运动会分数统计任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1…......
  • LeetCode刷题(6)【栈】有效的括号(C语言)
    有效的括号20.有效的括号-力扣(LeetCode)(leetcode-cn.com)​思路:是左括号,就入栈,是右括号,就与栈顶的左括号判断是否匹配,如果匹配,继续,不匹配就终止。从第79行开始,前面都是......
  • 【C++】如果你准备学习C++,并且有C语言的基础,我希望你能简单的过一遍知识点。
    相关视频——黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili(1-83)我的小站——半生瓜のblog我知道这个视频早已经被很多人学习并且记录​笔记,......
  • LeetCode刷题(8)【栈&队列】用栈实现队列(C语言)
    用栈实现队列232.用栈实现队列-力扣(LeetCode)(leetcode-cn.com)类似题目——用队列实现栈​​LeetCode刷题(7)【栈&队列】用队列实现栈(C语言)_半生瓜のblog-CSDN博客​......
  • 【树】之二叉树(C语言)(含图解)
    树&二叉树​​树​​​​树的概念及结构​​​​树的概念​​​​树的要求​​​​树的表示​​​​现实应用​​​​二叉树​​​​概念​​​​特殊的二叉树​​​​注意......
  • LeetCode刷题(9)【树】前序&深度&平衡(C语言)
    ​二叉树的前序遍历144.二叉树的前序遍历-力扣(LeetCode)(leetcode-cn.com)本题中,对于C++或者Java等语言,返回的是它们的数据结构库里面的数据结构,而C语言没有,这也就是如果......
  • C语言文件操作
    相关视频——C语言精华——C语言文件操作,文件打开、关闭、读取、定位如何操作?为你逐一讲解文件操作标准库函数_哔哩哔哩(゜-゜)つロ干杯~-bilibili我的小站——半生瓜のbl......