编译原理第二章1

合集下载

编译原理第二章

编译原理第二章
安徽理工大学 《编译原理》 信息安全系 sb
19
…… <数字>::=9 该文法的字汇表V为:V={0, 1, …, 9, <无 符号整数>, <数字串>, <数字>} •终结符与非终结符: 终结符与非终结符: 终结符与非终结符 给定文法G, 给定文法 ,凡出现在规则左部的符号称 为非终结符,其组成的集合记为: 为非终结符,其组成的集合记为: Vn。凡 不属于V 的符号称为终结符, 不属于 n 的符号称为终结符,其组成的集 合记为: Vt 。 合记为: 字汇表:V= Vn∪Vt 字汇表 Vn∩Vt = φ 若无特殊说 我们用大写字母表示非终结符。 明,我们用大写字母表示非终结符。
安徽理工大学 《编译原理》 信息安全系 sb
17
<代词> ::=I <谓语> ::=<动词><直接宾语> <动词> ::=love <直接宾语> ::=<物主代词><名词> <物主代词> ::=my <名词> ::=motherland 其中,带有尖括号的称为语法成分或语法 类,不带尖括号的称为单词符号或单词。 •文法与字汇表: 文法与字汇表: 文法与字汇表 文法(G[Z])是规则的非空有穷集合。 是规则的非空有穷集合。 文法 是规则的非空有穷集合
安徽理工大学 《编译原理》 信息安全系 sb
8
2.符号串的运算 2.符号串的运算 •符号串相等: 符号串相等: 符号串相等 是字母表∑上的两个符号串 设x, y是字母表 上的两个符号串,若x与y 是字母表 上的两个符号串, 与 的诸符号依次相等,则符号串x, 相等 相等。 的诸符号依次相等,则符号串 y相等。记 为: x=y •符号串的长度: 符号串的长度: 符号串的长度 设x为字母表 上的符号串,符号串中包 为字母表∑上的符号串, 为字母表 上的符号串 含的符号的个数称为符号串x的长度 的长度。 含的符号的个数称为符号串 的长度。用|x| 表示。 表示。

编译原理_第二章 词法分析(1)

编译原理_第二章  词法分析(1)
2010-7-22 编译原理 8
第二章 词法分析
3,词法分析器输出单词的形式 ,
词法分析程序的输入是源程序字符串, 而输出是与源程序等价的单词符号序列, 词法分析器输出单词的形式 并且所输出的单词符号通常表示成如下 的二元式: 单词种别,单词自身的值) (单词种别,单词自身的值)
2010-7-22
2010-7-22
编译原理
11
第二章 词法分析
二,模式的形式化描述-正规式与正规集 模式的形式化描述-
1,字符串与语言 , 从词法分析的角度看,程序设计语言 是由记号组成的集合,每个记号又是由 若干字母按照一定规则组成的字符串.
2010-7-22
编译原理
12
第二章 词法分析
定义2.1 语言 是有限字母表 上有限长度字 语言L是有限字母表 是有限字母表∑上有限长度字 定义 符串的集合. 符串的集合. 定义2.1明确指出,语言是一个集合,集 明确指出, 定义 明确指出 语言是一个集合, 合中的元素是字符串,并且强调了两个有限: 合中的元素是字符串,并且强调了两个有限 字母表是有限的, ① 字母表是有限的,即字母表中元素是 有限多个; 有限多个; 字符串的长度是有限的, ② 字符串的长度是有限的,即字符串中 字符个数是有限多个. 字符个数是有限多个. 这是由于计算机所能表示的字符个数和 字符串的长度都是有限的. 字符串的长度都是有限的.
第二章 词Hale Waihona Puke 分析第二章词法分析
主要内容: 主要内容: 词法分析过程涉及的几个问题 模式的形式化描述模式的形式化描述-正规式与正规集 记号的识别记号的识别-有限自动机 从正规式到词法分析器 词法分析器生成器简介
2010-7-22
编译原理

编译原理第二章文法和语言

编译原理第二章文法和语言

语言的语法结构
总结词
语言的语法结构是语言形成和发展的核心要素,决定 了语言的表达方式和意义。
详细描述
语言的语法结构是指语言的组织规律和规则,包括词 法、句法、语义等方面的规则。词法规定了词汇的构 成和变化规则,如名词、动词、形容词等词类的划分 ;句法规定了句子结构的规则,如主语、谓语、宾语 等句子的成分及其排列顺序;语义则涉及到词汇和句 子的意义和解释。语言的语法结构是语言理解和生成 的基础,也是语言演变和发展的关键因素。
文法和语言的应用前景
1 2
人工智能领域
文法和语言是人工智能领域的重要基础,可用于 自然语言处理、机器翻译、语音识别等技术的研 究和应用。
计算机科学教育
文法和语言是计算机科学专业的重要课程之一, 对于培养计算机科学人才具有重要意义。
3
软件工程领域
文法和语言可用于软件工程领域中的编译器设计 和开发,提高软件开发的效率和可靠性。
05
文法和语言的未来发展
文法和语言的研究方向
形式语言理论
深入研究形式语言的基本理论, 包括语法、语义和语用等方面, 为自然语言处理和人工智能等领 域提供理论基础。
自然语言处理
结合自然语言处理技术,研究自 然语言的语法、语义和语用规律, 提高自然语言处理的准确性和效 率。
计算语言学
将计算语言学与形式语言理论相 结合,研究语言处理算法和模型, 为机器翻译、语音识别等领域提 供技术支持。
文法和语言的发展趋势
深度学习与文法和语言的结合
01
随着深度学习技术的发展,文法和语言的研究将更加注重与深
度学习的结合,以提高语言处理的性能和效率。
跨媒体语言处理
02
随着多媒体数据的普及,文法和语言的研究将逐渐扩展到跨媒

编译原理第二章 文法和语言

编译原理第二章  文法和语言

第一节 文法的直观概念
当我们表述一种语言时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需 列出句子的有穷集就行了,但对于有无穷句子的语言来讲,存在着如何给出它的有穷表示的问题。 以自然语言为例, 人们无法列出全部句子, 但是人们可以给出一些规则, 用这些规则来说明 (或 者定义)句子的组成结构,比如: “我是大学生” 。是汉语的一个句子。汉语句子可以是由主语后随 谓语而成,构成谓语的是动词和直接宾语,我们采用 EBNF 来表示这种句子的构成规则: 〈句子〉∷=〈主语〉 〈谓语〉 〈主语〉∷=〈代词〉|〈名词〉 〈代词〉∷=我|你|他 〈名词〉∷=王明|大学生|工人|英语 〈谓语〉∷=〈动词〉 〈直接宾语〉 〈动词〉∷=是|学习 〈直接宾语〉∷=〈代词〉|〈名词〉 “我是大学生”的构成符合上述规则,而“我大学生是”不符合上述规则,我们说它不是句子。 这些规则成为我们判别句子结构合法与否的依据。 一旦有了一组规则以后,我们可以按照如下方式用它们去推导或产生句子。我们开始去找∷= 左端的带有〈句子〉的规则并把它表示成∷=右端的符号串,这个动作表示成: 〈句子〉 〈主语〉 〈谓语〉 ,然后在得到的串〈主语〉 〈谓语〉中,选取〈主语〉或〈谓语〉 ,再用相应的规则∷=右端 代替之。比如,选取了〈主语〉,并采用规则〈主语〉∷=〈代词〉 ,那么得到: 〈主语〉 〈谓语〉〈代 词〉 〈谓语〉 ,重复做下去,我们得到句子: “我是大学生”的全部动作过程是: 〈句子〉 〈主语〉 〈谓语〉 〈谓语〉 〈代词〉 我〈谓语〉 〈直接宾语〉 我〈动词〉 我是〈直接宾语〉 我是〈名词〉 我是大学生 符号 的含义是,使用一条规则,代替 左边的某个符号,产生 右端的符号串。 显然,按照上述办法,不仅生成“我是大学生”这样的句子,还可以生成“王明是大学生” , “王 明学习英语” , “我学习英语” , “他学习英语” , “你是工人” , “你学习王明”等几十个句子。事实上, 使用文法作为工具,不仅为了严格地定义句子的结构,也是为了用适当条数的规则把语言的全部句 子描述出来,是以有穷的集合刻划无穷的集合的工具。

编译原理课件第二章

编译原理课件第二章

递归子程序法
递归子程序法:对应每个非终结符语法单元,,编一个独 立的处理过程(或子程序)。语法分析从读入第一个单词 开始,由非终结符<程序>(即开始符)出发,沿语法描述 图箭头所指出的方向进行分析。当遇到非终结符时,则调 用相应的处理过程,从语法描述图看,也就进入了一个语 法单元,再沿当前所进入的语法单元所指箭头方向继续进 行分析。当遇到描述图中是终结符时,则判断当前读入的 单词是否与图中的终结符相匹配,若匹配,再读取下一个 单词继续分析。遇到分支点时,将当前的单词与分支点上 多个终结符逐个相比较,若都不匹配时可能是进入下一个 非终结符语法单位或是出错。
N ö í ³ ´
ò ¡ í ó ´ Ó ´ Î
á ÷ ½ Ê
PL/0编译程序语义分析的设计与实现
PL/0编译程序语法、语义分析的的核心程序是BLOCK过程 , 说明部分的分析与处理 表格管理 过程体(语句)的分析与处理
jmp jmp int lod lit opr sto opr int opr sto lod lit opr jpc cal lit lod opr opr opr opr sto jmp opr
0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 2 3 3 10 2 4 0 5 16 3 3 0 9 24 2 2 4 4 14 15 16 3 11 0
3 5 7 9 10 12 13 14
£ ¹ <
= =
Ç = ²
>
11
=
Ç = ²
, + - ( ¡ ¡ ­ ­
PL/0编译程序语法语义分析
PL/0编译程序语法分析的设计与实现

编译原理第二章

编译原理第二章
=, >, :, ',', ; ,., , (, ), {, }, [, ] }
上一页
下一页
10
2.2 符号串定义、术语及运算
▪ 符号串的定义
设∑是一个有穷字母表,它的每个元素称为一个符号。∑上的一 个符号串是指由∑中的符号所构成的一个有穷序列。 (1) 空字ε是∑上的一个符号串。空字ε是不包含任何符号的序列。 (2) 若x是∑上的符号串,而a是∑的元素, 则xa是∑上的符号串。 (3) y是∑上的符号串,当且仅当它由(1)和(2)导出。
由字母表中的符号所组成的任何有穷序列称之为该字母表上的 符号串,也称作“字”。 ∑*(Kleene闭包):表示∑上的所有字符串的全体,ε也在其中。Ф表 示不含任何元素的空集{}。 例如:若∑={a,b},则∑*={ε,a,b ,aa,ab,ba,bb,aaa,…}
上一页
下一页
11
▪ 符号串的术语
设s是符号串 前缀:移走s的尾部的零个或多于零个符号 后缀:删去s的头部的零个或多于零个符号 子串:从s中删去一个前缀和一个后缀 子序列:从s中删去零个或多于零个符号(这些符号不要求是连续的) 逆转:将S中的符号按相反次序写出而得到的符号串。 长度:是该符号串中的符号的数目。例如|aab|=3,|ε|=0。 真前缀,真后缀,真子串: x≠sx ≠ 例子:符号串s=banana 前缀:,b,ba,ban,bana,banan,banana 后缀:banana,anana,nana,ana,na,a, 子串:banana,anana,banan,anan,…, 子序列: baa(这些符号不要求是连续的) 逆转(用SR表示):ananab 长度:banana=6
上一页
下一页Biblioteka 92.1 字母表字母表是符号的非空有穷集合。任何程序语言都有自 己的字母表,一个程序语言只使用一个有限字符集作 为字母表。用∑表示。 例如: 计算机语言:由符号“0”和“1”组成的字母表,

编译原理第二章课件

例1:文法G: S aSb | ab
L(G)={anbn|n≥1}
28
2.2.2 文法的分类
3型文法(又称线性文法、正则文法、正 规文法)
➢ 如果对文法G中的任一产生式均限制为形如: AB 或 A
其中: A,B∈VN , ∈VT 则称文法G为3型文 法。 ➢ 上述形式的3型文法也称为右线性文法。 ➢ 如果对文法G中的任一产生式均限制为形如:
A0 = { } A1 = { a,b } A2 = AA ={ aa,ab,ba,bb } A3 = A2A ={ aaa,aab,aba,abb,baa,bab,bba,bbb }
……
An =An-1A = AAA……A
12
2.1 基本概念
10.符号串集合的正闭包
设A为符号串的集合,则称A+为符号串集A的 正闭包.具体定义如下:
文法
字符串集合
16
2.2 .1 文法的定义
2.2.1 文法(Grammar)的定义 文法的定义
一个文法G是一个四元组: G = ( VN, VT, S, P )
其中:
➢ VT (Terminal Vocabulary)是一个非空的有限集合,
它的每个元素称为终极符号或终极符,一般用小 写字母表示。 从语法分析的角度看,终极符号是 一个语言不可再分的基本符号。
可合并为一个,缩写为:
P 1 | 2 | … | n
其中,每个i 称为 P 的一个候选式,符号“|” 读作“或” 。
21
⑥一个文法的核心是产生式。 一般约定:
用< >括起来或 大写字母:非终结符 不用< >括起来或小写字母:终结符
22
例1
G =(VN,VT, S, P) 其中:VN={ S , A}

《编译原理》第2章 编译基础-形式语言与有穷自动机

整理课件
句型、推导
G[E]: E→E+T|T T→T*F|F F→(E)|a
对于句子a+a*a 有不同 的推导
EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a
EE+T E+T*F E+T*a E+F*a E+a*a T+a*a F+a*a a+a*a
整理课件
例:奇偶测试器
0
0
1
q0
q1

1
自动机:M=(Q,∑ ,δ ,q0,Z)
Q={ q0, q1}
∑ ={0,1}
q0=q0 Z={q1}
整理课件
映射函数:
δ( q0,0)= q0 0
0
δ( q0,1)= q1
1
δ( q1,0)= q1 q0
q1
δ( q1,1)= q0
1
例:000110001
整理课件
第四节 正规文法与有穷自动机 1、正规文法 产生的语言的推导 例:文法 G=(VN,VT,P,S) 其中: VN={A,B,C}
VT={a,b,c} S=A P:A →aB A →aA
B →bB B →bC C →cC C →c
整理课件
A=>aA=>aaA=>…..=>aa…aB =>aa…abB=>aa…abb…bC =>aa…abb…bcC=> aa…abb…bccC => aa…abb…bcc…c
D→ε
Aa→bD
自然语言属于上下文有关文法
整理课件
文法的类型

编译原理第2章(1)


2.3.1 文法的形式定义
因此,定义语言L的文法 G=( VN,VT,P,S ) 注意: V 其中: N={A, B, D} VT≠{aa,bb} VT={a, b} P={ A→aa | aaB | bb | bbD B→aa | aaB D→bb | bbD } S=A
2.3.1 文法的形式定义
规则的作用是告诉我们如何用规 则中的符号串生成语言中的序列。
2.3.1 文法的形式定义
例如,前述例中一组规则
A→0 A→1 A→A0 A→A1
描述的语言序列只可能是由0和1 组成的符号串。
2.3.1 文法的形式定义
规则中出现的符号分为两类,一类 是终结符号,另一类是非终结符号。
非终结符号是出现在规则左部能 派生出符号或符号串的那些符号,即 每个非终结符号表示一定符号串的集 合,用大写字母表示或用尖括号把非 终结符号括起来。例如,上例中的A。
2.1 字母表和符号串
1. 字母表 元素的非空有穷集合。 例如,∑={ a, b, c }
根据字母表的定义,Σ是字母表, 它由a、b、c三个元素组成。
2.1 字母表和符号串
注意: (1) 字母表中至少包含一个元素。 (2) 字母表中的元素, 可以是字母、 数字或其他符号。 例如,∑' ={0, 1} 是一个字母表,由0、1两个元素 组成。
2.3.1 文法的形式定义
当n=1 L={____}
L={a2n, b2n | n≥1}
当n=2 L={_______} 当n=3 L={aaaaaa, bbbbbb}
……
L={aa, bb, aaaa, bbbb, aaaaaa, bbbbbb, … …}
即语言L是由偶数个a,偶数个b这样的 符号串组成的集合。

编译原理 第二章


词法分析程序GETSYM将完成下列任务:
(1) 滤空格:空格在词法分析时是一种不可缺少的界符,而在语法分析时则是 无用的,所以必须滤掉。 (2) 识别保留字:设有一张保留字表。对每个字母打头的字母、数字字符串要 查此表。若查着则为保留字,将对应的类别放在SYM中。如IF对应值IFSYM,THEN 对应值为THENSYM。若查不着,则认为是用户定义的标识符。 (3) 识别标识符:对用户定义的标识符将IDENT放在SYM中,标识符本身的值放 在ID中。 (4) 拼数:当所取单词是数字时,将数的类别NUMBER放在SYM中,数值本身的值 存放在NUM中。 (5) 拼复合词:对两个字符组成的算符如:>=、∶=、<= 等单词,识别后将 类别送SYM中。 (6) 输出源程序:为边读入字符边输出(可输出在文件中)。
(1) 说明部分的分析
对每个过程(包括主程序,看成一个主过程)的说明对象造名字表TABLE,填写登录 所在的层次、标识符的属性和分配的相对位置。登录信息是调用ENTER过程完成的。 说明部分的处理对主程序看成是第0层过程,主程序定义的过程为第1层,随着嵌套 的深度增加而层次数加大。PL/0允许最大层次为3。 所造名字表放在全程量一维数组TABLE表中。TX为索引表的指针,表中的每个元素 为记录型数据。LEV给出层次,DX给出每层局部量当前已分配到的相对位置,可称地址 指示器,每说明完一个变量后DX指示器加1。 例如:
2.5 PL/0编译程序的目标代码结构和代码生成
编译程序的目标代码是在分析程序体时生成的,在处理说明部分时并不 生成目标代码,而当分析程序体中的每个语句时,当语法正确则调用目标代 码生成过程以生成与PL/0语句等价功能的目标代码,直到编译正常结束。 PL/0编译程序所产生的目标代码是一个假想栈式计算机的汇编语言,可 称为类PCODE指令代码,它不依赖任何具体计算机,其指令集极为简单,指令 格式也很单纯,其格式如下:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
α
0
+ α
n
显然,这里n≥1, 当n=1,就是直接推导。 当n=0时, α0=αn
. 当n≥0,我们称为广义推导 。
推导的逆过程称为归约,即αn可归约到α0 。
编译原理
2013年7月13日
2.3.3 和语言有关的几个概念
3. 最左推导和最右推导
如果在某个推导过程中的任何一步直接推导
αβ中,都是对符号串α的最左(右)非终结符号
文法的有关概念
1.语法规则:又叫产生式,我们通过它来描述句子的语法结构。 规定用“→”表示“由……组成”。 <句子> → <主语><谓语> <主语> → <代词><名词> <谓语> →<动词><宾语> <动词> →驾驶 <宾语> → <名词> <代词> →这个 <名词> →男孩|汽车 识别符号(开始符号) 尖括号部分表 示语法成分
编译原理
2013年7月13日
符号串集合的闭包运算
设A是符号串集合,定义 A+= A1 ∪ A2 ∪ A3 ∪……∪ An ∪…… 称为集合A的正闭包。 A*= A0 ∪A+ 称为集合A的闭包。 例:A={x,y} A+=? {x,y, xx,xy,yx,yy , xxx,xxy,xyx,xyy, ……}
* 2
{ } ......
* * 2 3
例:Σ ={a,b} Σ *={ε ,a,b,aa,ab,ba,bb,aaa,aab,…} Σ +={a,b,aa,ab,ba,bb,aaa,aab,…}
编译原理
2013年7月13日
为什么对符号、符号串、符号串集合以及它们的运算感兴趣? 若A为某语言的字母表 A={a,b,…,0,1,…,9, +,-,×,_/, ( , ), =… if, else,for...} B为单词集 B ={if, else,for,……,<标识符>,<常量>,……} 则B A* 。 语言的句子是定义在B上的符号串。 若令C为句子集合,则C B * , 程序 C 即
一组规则用来描述<句子>这个语法成分。可以生成所有句子。
编译原理
2013年7月13日
<句子> → <主语><谓语> 2.由推导生成句子:从一个要识别符 <主语> → <代词><名词> <谓语> →<动词><宾语> 号开始推导,即用相应规则的右部 <宾语> → <名词> 来替代规则的左部,每次仅用一条规 <动词> →驾驶 采用最左推导 说明: 则去进行推导。 <主语> → <代词> →这个 <代词><名词> (1) 从一组规则可推出不同的句子,如以上规则还可推出“ <名词> →男孩 | 汽车
进行替换,则称其为最左(右)推导。最右推导又叫 做规范推导。规范推导的逆过程(最左规约)称【例1】设有文法G[N1]: N1→N N→ND∣D D→0∣1∣2
N1 =>N =>ND =>N2 =>D2 =>12 N1 =>N =>ND =>DD =>1D =>12 最右推导 最左推导 不是最左推导 也不是最右推导
这个汽车驾驶男孩”,“这个男孩驾驶男孩”,“这个汽车 <代词> → 这个 驾驶汽车”等句子,它们在语法上都正确,但在语义上都 <句子> => <主语><谓语> <名词> → 男孩 不正确。 所有带< >的符号都由终
=> < 代词><名词><谓语> <谓语> → <动词><宾语> 结符号替代 => 这个<名词><谓语> 所谓文法是在形式上对句子结构的定义与描述,
程序 C B * A*
编译原理
2013年7月13日
语言是由句子组成的集合,是由一组符号所构成的集合
字母表上的一个语言是上的一些符号串的集合 字母表上的每个语言是*的一个子集 例如:字母表 Σ ={a,b} ,Σ *={ε ,a,b,aa,ab,ba,bb,aaa,aab,…}
教学内容
• 2.1 字母表和符号串的基本概念
• • • • 2.2 2.3 2.4 2.5 文法和语言的形式定义 句型的分析 文法和语言的分类 PL/0编译程序概述
编译原理
2013年7月13日
2.1
字母表和符号串
不对 符号就是字符,对吗? 如={if,else,for,while} 字母表:符号的非空有限集 例:={0,1} C语言的字母表 A={a,b,…,0,1,…,9, +,-,×,_/, ( , ), =… if, else,for...} 符号:字母表中的元素 例: 0,1 符号串:由字母表中的符号组成的任何有穷序列 例:0,1, 01, 10, 011,.. 空符号串:无任何符号的符号串,用ε 表示
把表达式用 E 代替,有些产生式具有相同的左部,可以合在一 起表示。文法规则表示如下:
P:{ E→ E+E | E*E | (E) | i }
编译原理
2013年7月13日
文法的BNF表示法
G=(VT , VN , S , P )
几点说明:
(1)产生式左边符号构成集合VN ,且 S ∈VN。 VN :代表程序的语法成份,如“<表达式>”,它不会 出现在程序语言中。 VT :会出现在程序语言中,如 i+i。 (2)文法的核心部分是产生式集合P,和开始符号S 。我们规 定第一条规则的左部是开始符号。
编译原理
2013年7月13日
符号串的前缀和后缀: 从符号串s的尾部删去若干个(包括0个)符号之后所余下的 部分称为s的前缀
ε,0,01及011都是符号串011的前缀
ε,1,11及011都是符号串011的后缀
符号串集合:若集合A中的一切元素都是某字母表上的符号 串,则称A为该字母表上的符号串集合。 例:={a,b,c} A={ a,aa,ac}
<动词> → 驾驶 <宾语> →<名词>
而未涉及语义问题。 =>这个男孩<谓语>
=>这个男孩<动词><宾语>
<名词> →汽车 (2) 有若干语法成分同时存在时,我们总是从最左的语法 =>这个男孩驾驶<宾语> 成分进行推导,这称之为最左推导。类似的有最右推导 =>这个男孩驾驶<名词> =>这个男孩驾驶汽车 (规范推 导)。 编译原理
集合{ab,aabb,aaabbb,…,anbn,…} 或表示为{w|w∈Σ*且w=anbn,n≥1}为字母表上的一个语言 集合{a,aa,aaa,…} 或表示为{w|w∈Σ*且w=an,n≥1} 为 字母表上的一个语言
编译原理
2013年7月13日
2.2 文法的形式定义
文法 是对语言结构的定义与描述又称为“语法” 。
赋值语句 标识符
=
表达式
y
表达式
+
表达式
表达式 整数
标识符 表达式
语 法 分 析 的 结 果 正 确
-----
*
x
标识符
r
6
<赋值语句>→ <标识符>=<表达式> <表达式>→ <表达式>+<表达式> | <表达式>*<表达式> <表达式>→ 编 译 原 理<标识符> | <整数> | <实数> <表达式> | 2013年7月13日 <标识符> →……
编译原理
2013年7月13日
符号串集合的乘积 设A、B为符号串集合,则A和B的乘积定义为: AB={ xy |x∈A,y∈B} 例如,A={a,b},B={c,d} 则AB= {ac,ad,bc,bd}
编译原理
2013年7月13日
符号串集合的幂运算 有符号串集合A,定义A0 ={ε}, A1=A, A2=AA, A3=AAA,…… An=An-1A=AAn-1 ,n>0 例如,A={0,1},则 A0= {ε} A1= {0,1} A2= {00,01,10,11} A3= {000,001,010,011,100,101,110,111}
“男孩开汽车”
这是一个在汉语语法、语义上都正确定句子,该 句子的结构是由它的语法即汉语语法决定的 。我们 熟知它为“主谓宾结构”。
编译原理
2013年7月13日
文法的作用
1
文法是描述语言结构的工具。 文法是产生语言的工具。
2
计算机程序设计语言也如此
<赋值语句>→ <标识符>=<表达式> <表达式>→ <表达式>+<表达式> | <表达式>*<表达式> <表达式>→ <表达式> | <标识符> | <整数> | <实数> <标识符> →……
第2章
形式语言的基本知识
教学目标
1. 本章是编译原理课程的理论基础,要求掌握形 式语言的基本术语和概念。 2. 掌握文法和语言的定义,文法的二义性与递归 性的判断方法及句型的分析方法。 3. 熟练使用文法定义程序设计语言的单词和语法 成分。 4. 对形式语言的理论有一个初步认识。
相关文档
最新文档