编译原理第2章 前后文无关文法和语言,计算机与软件学院 陆克中 18098923437, ,1,第2章 前后文无关文法和语言,2,本章讨论与编译实现相关的形式语言理论基本概念,主要内容有: 文法及语言的表示 文法和语言的定义 句型的分析 文法的化简和改造 文法和语言的Chomsky分类 文法与语言
编译原理文法和语言Tag内容描述:
1、编译原理第2章 前后文无关文法和语言,计算机与软件学院 陆克中 18098923437, kzluszu.edu.cn,1,第2章 前后文无关文法和语言,2,本章讨论与编译实现相关的形式语言理论基本概念,主要内容有: 文法及语言的表示 文法和语言的定义 句型的分析 文法的化简和改造 文法和语言的Chomsky分类 文法与语言 一个程序设计语言的确切定义是构造编译程序的重要前提。 文法被用来精确而无歧义地描述语言的构成方式。 文法描述语言的时候不考虑语言的含义。,2.1 文法及语言的表示,3,程序设计语言的定义 语言是一个记号系统 汉语符合汉语语法的句子的全体。。
2、编译原理讲义 (第二章:文法与语言),南京大学计算机系 赵建华,文法与语言,文法被用来精确而无歧义地描述语言的句子的构成方式.文法描述语言的时候不考虑语言的含义。,字母表,定义:字母表是有穷非空集合。字母表包含了语言中所允许出现的一切符号。,符号串,定义:符号串是由字母表中的符号所组成的有穷序列。 一个语言的句子总是它的字母表的符号串。这个符号串的组成必须是按照文法规则组合而成的。 语法分析的一个重要任务就是:判断一个符号串的组成是否满足某个文法的规定,并且分析出是如何按照规则组成的。,关于符号串的概念和操作,。
3、编译原理武汉大学计算机学院编译原理课程组前述内容回顾 编译程序 编译方式与解释方式的根本区别 编译程序的工作过程 编译程序的结构 编译程序的组织方式 编译程序的构造本章内容简介 文法的形式定义 语言的形式定义 为语言构造文法 和语法分析有关的概念 文法的实用限制第2章文法和语言的形式定义编译程序使得高级语言源程序所描述的功能得以在计算机上实现。编译程序的设计者就是高级语言的 实现者 ,源程序的编写者就是高级语言的 使用者 ,他们必须 遵循同样的准则 高级语言程序的构成规则,才能使写出的源程序能够被成功地翻译, 文。
4、第二章 文法和语言的基本知识,字母表和符号串,文法和语言的形式定义,短语、直接短语和句柄,语法树和文法的二义性,文法和语言的分类,2.0 概 述,对程序设计语言的描述是从语法、语义和语用三个因素来考虑。,语法是对语言结构的定义。,语用则是从使用的角度去描述语言。,语义是描述了语言的含义。,2.0 概 述,例如 赋值语句s2*3.1416*r*(r+h)的非形式化的描述为:,语法:赋值语句由一个变量,后随一个赋值号“”,再在其后面跟一个表达式构成。,语义:首先计算语句右部表达式的值,再将结果送给左部变量中。,语用:赋值语句可用来计算和保存表。
5、第二章 文法和语言,编译过程的核心就是翻译,就是把一种语言翻译成为另一种语言,与自然语言的翻译类似,只不过其工作对象是某种程序设计语言。 两个重要的前提: 1)描述和定义程序设计语言 2)识别或分析这种语言 20世纪50年代,语言学家Noam Chomsky(乔姆斯基)提出了一个用来描述语言的数学系统,把用一组数学符号和规则来描述语言的方式叫做形式描述,而把能用数学符号和规则描述的语言称为形式语言。 这种理论对程序设计语言的设计和编译程序的构造有着重大的作用。程序设计语言就是形式语言。,2.1 文法及语言的表示,如何来描述一。
6、第二章 文法和语言,编译过程的核心就是翻译,这是一个十分复杂的信息加工过程,其加工的对象是用某种高级语言编写的程序。对于一个英文翻译来说,首先必须对英文有很深的了解,掌握英文的语法和词汇,才能进行翻译。而编译程序的任务就是将高级语言编写的程序翻译成机器语言程序,因此,在学习和掌握编译技术之前,就需要对高级语言有深刻的了解。首先要了解如何确切地描述或定义一种程序设计语言,其次才能识别和分析这种语言。20世纪50年代,语言学家Noam Chomsky(乔姆斯基)提出了一个用来描述语言的数学系统,把用一组数学符号和规则。
7、1,第三章 文法和语言,本章的目的是为语言的语法描述寻求工具通过这个工具,可以达到以下目的: 工具要对源语言(程序设计语言)给出精确无二义的语法描述,要求严谨、简洁、易读 根据语言文法的特点来指导语法分析的过程。 从描述语言的文法可以自动构造出可用的语法分析程序。 制导语义翻译,2,文法的直观概念和语言概述,表述一种语言时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需列出句子的有穷集就行了,对于含有无穷句子的语言,存在着如何给出它的有穷表示的问题。自然语言无法列出全部句子,但可以给出一些规则。
8、第二章文法和语言,本章目的为语言的语法描述寻求工具,以便: 对源程序给出精确无二义的语法描述。 根据语言文法的特点来指导语法分析的过程。 从描述语言的文法可以自动构造出可用的分析程序。本章讲述目前广泛使用的上下文无关文法。即用上下文无关文法作为程序设计语言语法的描述工具。阐明语法的一个工具是文法 。,文法和语言,文法的直观概念符号和符号串文法和语言的形式定义 文法的类型上下文无关文法及其语法树句型的分析1.向上而下的分析方法 2.自下而上的分析方法 有关文法实用中的一些说明,文法的直观概念,语言是由句子组成的集。
9、第 4 讲,编译原理,西北农林科技大学本科教程,主讲教师:赵建邦,第三章 语法分析,3.1 文法和语言 3.2 推导与语法树 3.3 自顶向下的语法分析 3.4 自底向上的语法分析 3.5 规范规约的自底向上语法分析方法,第三章语法分析 3.1 文法和语言 文法和语言的基本概念 形式语言分类(4类) 正规表达式与上下文无关文法 重点掌握 正规表达式与上下文无关文法,本讲目标,定位 语法分析是编译过程的第二个阶段,也是核心部分 任务 根据语言的语法规则对单词序列进行语法分析,识别合法的语法单位(如表达式、语句、程序段等),若不存在语法错误则给出正。
10、1,编译原理 文法和语言,华东交通大学 软件学院网络工程教研室 万仲保 Tel:7046821 13907097766 E-mail:zbwantom.com,2,第三章 文法和语言,本章目的为语言的语法描述寻求工具 工具要对程序设计语言给出精确无二义的语法描述。(严谨、简洁、易读) 形式工具-形式语言抽象地定义为一个数学系统。“形式”是指这样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述。,3,3.1 文法的直观概念 3.2 符号和符号串 3.3 文法和语言的形式定义 3.4 文法的类型 3.5 上下文无关文法及其语法树 3.6 句型分析 3.7 实用说明,第三章 文法和语言,4,文。
11、第3章:文法和语言的概念和表示,3.0 概述 3.1 形式语言基础 3.2 文法的直观理解 3.3 文法和语言的定义 3.4 文法的类型 3.5 语法树与二义性 3.6 句型的分析,3.0 概述,用高级语言编程比用低级语言方便,但要解决两个问题: (1)计算机怎样懂得高级语言程序,这就需要一个翻译程序实现从源程序到目标程序的转换。 (2)用什么方法来精确定义高级语言,即怎样精确描述高级语言。要构造一个编译程序,应深刻理解被编译的源语言的结构(即词法和语法) 及其含义(即语义),同时要弄清源语言的语法规则和语义规则是采用什么理 论或什么方法来描述的。
12、基本概念字母表、符号、符号串、闭包等 文法的定义 文法的分类 Chromsky 对文法的分类 文法和语言 推导、归约、句型、句子、语言 语法分析树和二义性,第二章 文法和语言,2.1 文法和语言的定义,例句:int i = 0;包含字母i, n, t, =, 0, ; ,所有字母形成字母表;符号串,如int,定义2.1 字母表:字母表是符号元素的非空有限集合。 定义2.2 符号(字符):字母表中的元素。 定义2.3 符号串(字符串):字母表中的符号所组成的任何有穷序列。如字母表=a,b,则a,b是字母表中的元素,a,b,aa,ab,都是符号串。空符号串:不含任何符号的符号串,用表。
13、第2章 文法和语言,A thousand-li journey is started by taking the first step. 千里之行,始于足下,第2章 文法和语言(P12),2.1 字母表和符号串 2.2 文法 2.3 推导 2.4 句型和句子 2.5 语言 2.6 递归规则与递归文法 2.7 短语、简单短语和句柄 2.8 语法树 2.9 子树与短语 2.10 由树构造推导过程 2.11 文法的二义性 2.12 有关文法的实用限制 2.13 文法和语言分类,学习重点,1 文法的定义、分类和二义性 2 最左推导、规范推导(或最右推导) 3 语言、句型和句子 4 短语、简单短语(或直接短语)和句柄 5 语法树,形式语言(P12),如果不考虑语义和语。
14、内容回顾,什么是编译程序 编译的过程 词法分析 语法分析 语义分析及中间代码生成 优化 目标代码生成 编译程序的结构与组织,文法和语言,字母表和符号串的基本概念 文法和语言的形式定义 递归规则与递归文法 语法树与文法的二义性 文法的分类,字母表和符号串的基本概念,字母表:元素的非空有穷集合。记为。 字母表包含了语言中所允许出现的一切符号。例如: = 0,1 符号串(字):字母表中的符号所组成的有穷序列。一个语言的句子总是它的字母表的符号串。这个符号串的组成必须是按照文法规则组合而成的。 语法分析的一个重要任务就是:判断一。
15、练习 1. 文法和语言1. 文法:Z U0 | V1U Z1 | 1V Z0 | 0(1) 请写出全部由此文法描述的只含有四个符号的句子.(2) 该文法是 Chomsky 几型文法?Answer:(1) 1010, 0110, 1001, 0101(2) 3 型文法2. 给定前缀表示的表达式文法 G :(1) E -EE(2) E -E(3) E a(4) E b(5) E c试问 -a-bc 是否 L(G) 的句子? 若是,请给出该句子所有可能的分析树;若不是,请说明理由.Answer: -a-bc 是 L(G)的句子。所有可能的分析树如下。(1) (2) (3)E-Eca-Eb E-E-Eabc E-Eca-bE3. 考虑文法:S ( L ) | aL L, S | S写出句型 ( a , ( a , a ) ) 的最左推导和最右推导。Ans。
16、1,第二章 文法和语言,2.1 文法的直观表示 2.2 符号和符号串 2.3 文法和语言的形式定义 2.4文法的类型 2.5 上下文无关文法及语法树 2.6 句型分析 2.7 文法的实用限制,2,第2章 文法和语言,【学习目标】 本章是为语言的语法描述寻求工具 掌握对程序设计语言给出精确、无二义(严谨、易读)的语法描述的手段之一文法。 对形式语言的理论有一个初步基础 根据文法的特点指导语法分析过程,3,2.1 文法的直观表示,文法:阐明语法的一个工具,也可以说是以有穷的集合刻画无穷的集合的一个工具。 语言:程序设计语言。 一、语言概述 语言是由符合语法。
17、编 译 原 理,3.1 符号和符号串 3.2 文法和语言的形式定义 3.3 文法的分类 3.4 语法树和二义性 3.5 有关文法的实用限制,第三章 文法和语言,程序设计语言和自然语言的组成结构,语言定义的方法,枚举方法 一个语言中的句子有限(非形式化描述) 形式化描述方法(文法) 一组数学符号(形式化描述) 产生语言中全部句子的有限个规则 自动机方法 识别某字母表上所有符号串是否是该语言句子的一种装置(算法或过程),产生的观点,识别的观点,3.1 符号和符号串,一、字母表与符号,1.字母表:元素的非空有限集合 例:=a,b,c=begin,end,if,then,else。
18、1,第三章 文法和语言,语言是一个记号系统,完整的定义包括语法和语义两方面。语法是一组规则,用它可以形成和产生一个合适的程序。文法就是阐明语法的一个重要的形式工具。语义包括静态语义和动态语义,阐明语义要比语法困难的多。本章主要讨论文法和语言的概念,上下文无关文法及其句型的分析。,2,本章内容,3.1 文法的直观概念 3.2 符号和符号串 3.3 文法和语言的形式定义 3.4 文法的类型 3.5 上下文无关文法及其语法树 3.6 句型的分析 3.7 有关文法实用中的一些说明 3.8 典型例题及解答,3,3.1 文法的直观概念,如何来描述一种语言? 如果。