1. 梳理第二章的内容,写一篇理解与总结。
答:在本章学习内容里,我学习到了知识点如下:
(1) 文法的直观概念
汉语句子能由谓语而成,构成谓语的是动词和直接宾语,采用第一章学习的EBNF来表示构成的规则:
<句子> :: = <主语><谓语>
<主语> :: = <代语> | <名词>
<代词> :: = 我 | 你 | 他
<名词> :: = 王明 | 大学生 | 工人 | 英语
<谓语> :: = <动词><直接宾语>
<动词> :: = 是 | 学习
<直接宾语> :: = <代词> | <名词>
*把这些规则看成是一种元语言,用它描述汉语,我们将这种语言描述称为文法。
(2)符号、和符号串
a.字母表:字母表是元素的非空有穷集合,例如,∑={a,b,c},字母表中的元素称为符号,也称为符号集;根据字母表的定义,∑是字母表,它由a,b,c个元素组成。字母表中至少包含一个元素。字母表中的元素,可以是字母、数字或其他符号。
b.符号串:由字母表中的符号组成的任何有穷序列称为符号串, 例如0011110是字母表∑={0,1}上的符号串。
*如果某符号串x中有m个符号,则称为其长度为m,表示为 |x| = m,如001110的长度是6.
*允许空符号串,即不包含任何符号的符号串,用 ε 表示,其长度为0,即 |ε|=0;。
运算:
Ⅰ.字符串的头尾:如果 z = xy是一串符号串,那么x是z的头,y是z的尾,如果x是非空的,那么y是固有尾。
Ⅱ.符号串的连接:设x和y是符号串,它们的连接xy是把y的符号写在x符号之后得到的符号串。
Ⅲ.符号串的方幂:设x是符号串,把x自身连接n次得到符号串z,即z = xx....x,称为符号串x的方幂。
Ⅳ.符号串集合:如集合A中的一切元素都是某字母表上的符号串,则称A为改字母表上的符号串集合。
* 指定字母表∑之后,可用∑*表示∑上的所有有穷长的串的集合。∑*称为集合∑的闭包,而∑+ = ∑1 U ∑2....∑n称为∑的正闭包。
* ∑*具有可数的无穷数量的元素。使用一般集合论的表示符号:若x是∑*中的元素,则表示为 x ∈ ∑*,否则 x ∉ ∑* 。 对于所有的∑,有 ε ∈ ∑* 。
(3)文法和语言的形式定义
a.规则:称为重写规则、产生式或生产式,是形如 α → ß 或 α :: = ß 的 (α ,ß)有序对,其中 α 称为规则的左部,ß称为规则的右部。
b.四元组(VN,VT,P,S):VN为非终结符(或语法实体,或变量)集;VT为终结符集;P为规则( α → ß)的集合,α ∈ (VN U VT)*且至少包含一个非终结符,ß ∈ (VN U VT)*;VN,VT和P是非空有穷集。S称作识别符或开始符,它是一个非终结符。
* VN和VT不含公共的元素,即VN ∩ VT = Ø 。
*通常用V表示VN U VT ,V称为文法G的字母表或字汇表。
c.直接推导:设 α → ß 是文法G = (VN,VT,P,S)(或说是P中的一个产生式), γ 和 δ 是 V*中的任意符号,若有符号串 v、ω满足: v = γαδ, ω = γßδ;
则说v直接产生 ω,或说 ω是 v 的直接推导。
d.句型、句子: 设G[S]是一个文法,如果符号串x是从
2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)
整数n
标识符i
表达式e
条件语句
赋值语句
复合语句
函数
程序
...