- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
相关概念
(5) 符号串的方幂 : 对符号串 x, 把它自身连接 n 次得到符号串 z, z=xxx… 记作: z=xxx…x,记作:z=xn , x0=ε , x1=x , x2=xx ,……
例如:x=01 ,则x0=ε x=01
x1=01 x2=0101 x3=010101
(6)符号串集合:集合A中的一切元素都是某字母表上的符号串,则称 符号串集合:集合A中的一切元素都是某字母表上的符号串, 为该字母表上的符号串集合。 A为该字母表上的符号串集合。
判断下列句子是否是该语言的句子?(用规则去推导句子) 判断下列句子是否是该语言的句子?(用规则去推导句子) ?(用规则去推导句子
1. 2. 3. 4.
我是大学生 我大学生是 他学习英语 英语学习他
5
3.2 符号和符号串
字母表 Σ:元素的非空有穷集合。(又称为符号集) 元素的非空有穷集合。(又称为符号集) 非空有穷集合。(又称为符号集 符号:字母表中的元素。 符号:字母表中的元素。
文法的简写形式: 文法的简写形式: • 只写出产生式 • G写成G[S],S是开始 写成G[S] G[S], 符号 或 第一条产生式左部 是开始符号 • VN用尖括号括起 或 VN用尖括号括起 大写字母 VT不用尖括号括起 不用尖括号 VT不用尖括号括起 或 小写字母
例1的简写形式: 的简写形式: G: S 0S1 S 01 或 G[S]: S 0S1 S 01
1
3.1 文法的直观概念
语言: 语言: 是由句子组成的集合,是一组记号所构成的集合。 是由句子组成的集合,是一组记号所构成的集合。 –汉语 —— 所有符合汉语语法的句子的全体 –英语 —— 所有符合英语语法的句子的全体 –程序设计语言 —— 所有该语言的程序的全体
2
语言研究
研究语言 :
每个句子构成的规律 每个句子的含义 每个句子和使用者的关系 语言研究的三个方面: 语言研究的三个方面: Syntax: 语法 Syntax:表示构成语 言句子的各个记号之间的 组合规律。 组合规律。 Semantics: 语义 Semantics:表示按 照各种表示方法所表示的 各个记号的特定含义 含义。 各个记号的特定含义。 (各个记号和记号所表示 的对象之间的关系) 的对象之间的关系) Pragmatics: 语用 Pragmatics:表示在 各个记号所出现的行为中, 各个记号所出现的行为中, 它们的来源 使用和影响。 来源、 它们的来源、使用和影响。
符号串:由字母表Σ中的符号组成的任何有穷序列 符号串:由字母表Σ中的符号组成的任何有穷序列 空符号串ε 没有符号的符号串 符号的符号串) 空符号串ε(没有符号的符号串)是Σ上的符号串 符号串不仅表示由哪些符号组成 还表示符号的顺序 符号组成, 符号串不仅表示由哪些符号组成,还表示符号的顺序
例如: Σ={0,1} 例如: ε,0,1,00,01,10,11,…,1011,… ε,0,1,00,01,10,11,…,1011,… 都是Σ上的符号串 01 ≠ 10
14
+ 和 * ⇒ ⇒ 若存在v=w 若存在v=w0 ⇒ w1 ⇒... ⇒ wn=w , (n>0) 则称 v 推导出 w(推导长度为n), 推导长度为n 或称 v 产生 w 或称 w 归约到 v + 记作 v ⇒ w 若有v ⇒ w或v=w, 若有v + w或v=w,则记为 v
第3章 文法和语言
学习要点: 学习要点: 符号和符号串的相关概念 文法和语言的形式定义 文法的类型 上下文无关文法及其语法树 上下文无关文法的句型分析 有关文法实用中的一些说明 学习目的: 学习目的: 掌握文法和语言的相关概念, 掌握文法和语言的相关概念,为以后的词 法分析、语法分析、语义分析等做出准备。 法分析、语法分析、语义分析等做出准备。
例如:Σ={0,1} A ={0,1,00,01,10…,10001,……} 是 Σ={0 ={0 00,01,10… 10001,……}
B ={10,11,101} ={10 11,101} 10, C ={1a,11011,b11} ={1a,11011,b11 11011,b11} 是 不是
(7)符号串集合的乘积:AB={xy|x∈A且y∈B} 符号串集合的乘积:AB={xy|x∈A且
例如:A={01,10} B={ab,cd} AB={01ab,10ab,01cd,10cd} A={01 10} 01, AB={01ab,10ab,01cd,10 01ab,10ab,01cd,10cd}
注意: ห้องสมุดไป่ตู้意: “ab01”不在 AB 中 ab01 01” {ε}A=A{ε}=A
8
相关概念
13
S→01 (使用规则S→01) 使用规则S→01) S→01 使用规则S→0S1 S→0S1) (使用规则S→0S1) 使用规则S→0S1 S→0S1) (使用规则S→0S1)
文法G: 例4 文法G: 标识符>→<字母> >→<字母 <标识符>→<字母> 标识符>→<标识符><字母> >→<标识符><字母 <标识符>→<标识符><字母> 标识符>→<标识符><数字> >→<标识符><数字 <标识符>→<标识符><数字> 字母>→ >→a <字母>→a … 字母>→ >→z <字母>→z 数字>→0 <数字>→0 … 数字>→9 <数字>→9 指出下面直接推导所使用的规则: 指出下面直接推导所使用的规则: 标识符><字母> ><字母 <标识符> ⇒ <标识符><字母> 标识符> 字母><字母> 数字> ><字母 <标识符><字母><数字> ⇒ <字母><字母><数字> 标识符><字母> 数字> ><字母 abc<数字> abc<数字> ⇒ abc5 数字
6
相关概念
(1)符号串的长度:符号串x中符号的个数,用|x|表示 符号串的长度:符号串x中符号的个数, x|表示
例如:x=aabc 例如: 则|x|=4 x|=4
(2)空符号串:ε 空符号串:
则 |ε|=0 ε|=0
(3)头、尾、固有头、固有尾 固有头、 z=xy
• x是z的头;y是z的尾 非空, 固有头; 非空, 固有尾。 • 若y非空,x是z的固有头;若x非空,y是z的固有尾。
(8) 集合的闭包 : 指定字母表 V 之后 , 可用 V * 表示 V 上所 指定字母表V之后,可用V 表示V 有有穷长度的串的集合。 有有穷长度的串的集合。 V+ 为V的正闭包。
V* = V0∪ V1 ∪ … ∪ Vn … V+ = V1 ∪ … ∪ Vn … 则:V* = V0 ∪ V+ V+ = V V*= V* V V+ = V* - {ε}
例如:符号串abc 例如:符号串abc 头:ε,a,ab,abc 固有头:ε,a,ab 固有头: 例如:x=01 x=01
y=abc
尾:ε,c,bc,abc 固有尾:ε,c,bc 固有尾:
则xy=01abc xy=01 01abc yx=abc01 yx=abc01
(4)符号串的连接:x,y的连接即xy(把y的符号写在x符号后面) 符号串的连接:x,y的连接即xy( 的连接即xy 的符号写在x符号后面) 注意:εx=xε=x 注意:
4
文法举例:以自然语言为例, 文法举例:以自然语言为例,用 EBNF 描述语言
〈句子〉::= 〈主语〉〈谓语〉 句子〉 主语〉〈谓语〉 〉〈谓语 主语〉 代词〉 名词〉 〈主语〉::= 〈代词〉|〈名词〉 代词〉 〈代词〉::= 你 | 我 | 他 名词〉 〈名词〉::= 王明 | 大学生 | 工人 | 英语 谓语〉 动词〉〈直接宾语〉 〉〈直接宾语 〈谓语〉::= 〈动词〉〈直接宾语〉 动词〉 〈动词〉::= 是 | 学习 直接宾语〉 代词〉 名词〉 〈直接宾语〉::= 〈代词〉|〈名词〉
研究程序设计语言: 研究程序设计语言:
每个程序构成的规律 每个程序的含义 每个程序和使用者的关系
3
形式语言 形式语言 与 文法
如果不考虑语义和语用, 只从语法 这一侧面来看语言, 如果不考虑语义和语用 , 只从 语法 这一侧面来看语言 , 语法这一侧面来看语言 形式语言。 这种意义下的语言称作形式语言 这种意义下的语言称作形式语言。 形式语言抽象地定义为一个数学系统。 形式语言抽象地定义为一个数学系统。 “ 形式 ” 是指 : 语言的所有规则只以符号串出现的方 形式” 是指: 式来陈述。 式来陈述。 文法: 描述词法 语法规则的工具 文法 : 描述 词法 、 语法规则 的工具 。 用一组规则严格 词法、 的工具。 定义句子的结构, 即对含有“ 无穷句子” 定义句子的结构 , 即对含有 “ 无穷句子 ” 的语言进行 有穷的表示” “有穷的表示”。
其中, 其中, – VN 、VT 和 P 是非空有穷集 – S∈VN ,并且 S 至少在一条规则中作为左部出现 – VN ∩ VT =φ – V = VN∪VT ,V 称为文法G的字母表(字汇表) 称为文法G的字母表(字汇表)
11
文法G= G=( 例1 文法G=(VN,VT,P,S) VN = { S } VT ={ 0, 1 } P={ S→0S1, S→01 } S为开始符号 文法G= G=( 例2 文法G=(VN,VT,P,S) {标识符 字母,数字} 标识符, VN = {标识符,字母,数字} {a,b,c,…x,y,z,0,1, x,y,z,0,1,…,9} VT = {a,b,c, x,y,z,0,1, ,9} {<标识符>→<字母 标识符>→<字母> P = {<标识符>→<字母> 标识符>→<标识符><字母> >→<标识符><字母 <标识符>→<标识符><字母> 标识符>→<标识符><数字> >→<标识符><数字 <标识符>→<标识符><数字> 字母>→a,…, <字母>→z >→a, 字母>→ <字母>→a, , <字母>→z 数字>→0, >→0,…, <数字 数字>→9 <数字>→0, , <数字>→9 } <标识符 标识符> S = <标识符>