第二章 高级语言及其语法描述

合集下载

第02章 高级语言及其语法描述

第02章 高级语言及其语法描述

现它
2
一个程序语言是一个记号系统
• 程序语言由两方面定义:
– 语法 – 语义 – 语用
3
1. 语 法
• 程序本质上是一定字符集上的字符串。 • 语法:一组规则,用它可以形成和产生一
个合式(well-formed)的程序。
例:字符串 0.5x1+c 其中,0.5、x1、等称单词符号,而表达 式称语言的一个语法范畴或语法单位。
1
§2.1 程序语言的定义•语言定义是语言实现的基础:• 从语言用户角度看
– 语言初等成分的实际含义是什么?
– 如何有意义地使用它们?
– 怎样以有意义的方式组合它们?
• 从编译程序设计者角度看
– 哪些构造允许出现
• 即使一时不能看出某种构造的实际应用,或者判断实现该
结构会导致严重的困难,但仍必须严格根据语言的定义实
–在数学上成立的代数性质在计算机上未必 完全成立。
21
(2) 语句:分执行性和说明性两类
赋值语句:
A := B
– 名字左值:该名字代表的那个单元(地址)称 为该名字的左值。(所代表的存贮单元的地址)
– 右值:一个名字的值称为该名字的右值。(所代 表的存贮单元的内容)
变量(包括下标变量),既有右值又有左 值,但常数和带有算符的表达式只有右值, 出现在赋值号左边的表达式必须具有左值, 而右边的表达式只需有右值。
静 态 Fortran I, J, …,
N 为首的为整型
动态(编译时不能确定) APL, FoxPro
14
(2) 数据结构
1 数组
由同一类型数据所组成的某种n 维矩形结构。沿着每一维的距 离,称为下标。
数组可变与不可变:编译时能否确 定其存贮空间的大小

第2章高级语言与语法描述

第2章高级语言与语法描述

第二章高级语言及其语法描述知识结构:语法程序语言的定义语义高级语言语用程序语言的特征字母表和符号符号和符号串符号串的运算符号串集合的运算文法语法描述文法的形式定义产生式高级语言、上下文无关文法语法描述推导语言的形式定义句型、句子和语言最左、最右推导语法树的构造语法树和二义性二义性文法文法的限制形式语言第一节程序语言的定义一、高级程序语言的定义高级程序语言是用来描述算法和计算机实现这双重目的。

它是一定字符集(字母表)上的字符串(有限序列)。

其中包括:语法,语义,语用。

语法: 描述的语言的结构语义:描述语言的含义(意义)语用:有关程序设计技术和语言成分的使用方法。

二、语法语言的语法是指这样的一组规则,用它可以形成和产生一个合式的程序。

其中包括:词法规则,语法规则。

1、词法规则是指单词符号形成的形式规则,即由基本符号构成符号串(单词)的书写规则。

程序语言的单词符号类型:关键字、标识符、常数、运算符、界符。

⑴标识符书写规则标识符是由字母或数字组成的以字母为开头的一个字符串。

标识符结构图:描述标识符的文法:单词符号可采用正规文法描述这一结构的合法性。

①左线性文法(从右向左)I → a ∣ Ia ∣ Id (I文法开始符号)②右线性文法(从左向右)I → aB ∣ a (B变量)B → aB ∣ dB ∣ a ∣ d (a字母,d数字)上述文法均可生成任意的合法标识符。

例:标识符 a9c2I ⇒ aB ⇒ a9B ⇒ a9cB ⇒ a9c2 (右线性文法)I ⇒ I2 ⇒ Ic2 ⇒ I9c2 ⇒ a9c2 (左线性文法)⑵实常数书写规则实常数组成:整数部分,小数部分,指数符号部分,指数部分。

整数部分小数部分指数符号部分指数部分实常数类型:①整数部分 + 小数部分 + 指数符号部分 + 指数部分②整数部分 + 小数部分③整数部分 + 指数符号部分 + 指数部分④整数部分产生实常数的文法:右线性文法R →dA∣ d (R定义实常数,A剩余部分变量)A → dA ∣ d ∣.B (d数字,B小数变量)A → eC`∣ eD (e指数标记,C` 指数符号变量)B → dB ∣ d (D 指数变量)B → dCC → eD ∣ eC`C` → +D ∣ -DD → dD ∣ d2、语法规则语法规则是语法单位的形成规则,采用上下文无关文法作为程序设计语言语法的描述工具。

第二章高级语言及其语法描述

第二章高级语言及其语法描述

中=γ1Aγ2, = γ1δγ2; A VN, δ
VT)+ , γ1, γ2 (VN VT)* .
规则形式 γ1A γ2 γ1δγ2 ;
2020/11/15
中南大学软件学院 陈志刚
13
文法的分类
第二章 高级语言及其语法描述
对产生式施加不同的限制得到不同类型的文法
0型(无限制文法): G=(VN, VT, S, P) 规则形式: ; (VN VT) +, (VN VT)*且中至少含有一个非终结符
1型(上下文有关): 规则 有 1, 其
2020/11/15
中南大学软件学院 陈志刚
10
第二章 高级语言及其语法描述
文法形式化定义
文法定义成一个四元组G=(VN, VT, S, P)
VN : 非空有限的非终结符集; VT : 非空有限的终结符集; S: 开始符号;
P: 产生式集合。 其中, VN ∩ VT =Φ,S∈ VN P中产生式一般形式为: Aα|β,其中
2020/11/15
中南大学软件学院 陈志刚
12
第二章 高级语言及其语法描述
一个文法的几种写法 ① G=({S,A},{a,b},P,S) 其中P:S→aAb A→ab A→aAb A→ε ② G:S→aAb A→ab A→aAb A→ε ③ G[S]: A→ab A→aAb A→ε S →aAb ④ G[S]: A→ab |aAb |ε S→aAb
符号串集合A,定义A0 ={ε}, A1=A, A2=AA, A3=A2A, …, An=An-1A=AAn-1,n>0
符号串集合的正闭包
A+=A1 ∪A2 ∪… ∪ An …
符号串集合的自反闭包

第2章 高级语言及其语法描述

第2章 高级语言及其语法描述

25
关于推导的两点说明: (1)若1可直接推出2, 2可直接推出3,…,
即存在一个自1至n的推导序列: 12 3 …n (n>0) + 则称1可推导出n,记为1 n, 表示从1出发经1步或若干步可推导出n 0 * (2)若记1 1, 则1 n表示从1出发,经 过0步或若干步可推导出n, * + 即1 n意味着:1=n, 或1 n。
8
2.1.3 程序 P14
一个程序语言的基 本功能是描述数据 和对数据的运算。 所谓程序,从本质 上来说是描述一定 数据的处理过程。 在现今的程序语言 中,一个程序大体 可以视为右边所示 的层次结构。
程序 子程序 或 分程序 语句
表达式
数据引用
算符
函数调用
9
2.1.4 有关定义和记号及运算 P25
2
2.0 语言概述
语言是某一字母表上符号串 (句子)的集合。
每个句子构成的规律
研究语言 每个句子的含义 语义
语法
汉语--所有符合汉语语法具有一定意义的句子的全体 英语--所有符合英语语法具有一定意义的句子的全体
3
2.0 语言概述
如何来描述一种语言? • 如果语言是有穷的(只含有有穷多个句子), 可以将句子逐一列出来表示。 • 如果语言是无穷的,找出语言的有穷表示。 • 语言的有穷表示有两个途径:
•元语言符号: 用来说明文法符号之间关系的符 号,如 “”和“|”称为元语言符 号。
27
句子既要符合语法,又要符合语义
•其语法规则如下: 有了一组规则以后,按照如 –<句子><主语><谓语> 下方式通过规则推导出句子: –<主语> <形容词><名词> <句子> <主语><谓语> –<谓语> <动词> <宾语> <句子> Young music like pop man <形容词><名词><谓语> –<宾语> <形容词><名词 Young <名词><谓语> Pop men like young music > Young men <谓语> –<形容词> Young | pop Pop music like young men –<名词> men | music Young men <动词> <宾语> young men like like men –<动词> like Young men young <宾语>

第二章高级语言及其语法描述

第二章高级语言及其语法描述

闭包运算:
* { } * 2 3 ......
{ } ......
* 2
例:Σ ={a,b} Σ *={ε ,a,b,aa,ab,ba,bb,aaa,aab,…} Σ +={a,b,aa,ab,ba,bb,aaa,aab,…}
一般包括:表达式、语句、分程序、函数、过程
和程序等。
例:
程序设计语言中字符串0.5*X1+C 其中单词符号有:常数0.5,标识符 X1和C, 算符*和+。 0.5*X1+C是一个称为表达式的语法单位。

语义
一个语言,不仅要求有词法、语法,而且要 定义它的单词符号和语法单位的意义,也就 是语义。
2.高级语言的一般特性
高级语言分类:
1.强制式语言 FORTRAN、C、Pascal 2.应用式语言 函数式语言 LISP 3.基于规则的语言 ProLog 4.面向对象语言 C++、Java

数据类型与操作

初等数据类型:
数值数据、 逻辑数据、
字符数据、
指针类型

数据结构:
描述条件语句:
其产生式为:
〈条件语句〉→if〈条件〉then〈语句〉| if〈条件〉then〈语句〉else〈语句〉
文法的等价

定义
若L(G1)=L(G2),则称文法G1和G2是等价的。

从计算机角度来看,注重的是它在机内的表示和实现 的可能性与效率。
例:赋值语句中的变量名

变量名:
逻辑上:代表是一个存放某个值的场所 计算机实现中:变量名有三方面特征, 1.存储单元, 2.值, 3.属性(包括类型和作用域等)

第二章 高级语言及其语法描述110906

第二章 高级语言及其语法描述110906
32
若产生式的左部相同,则可以合并。 例如: P→ α1 P→ α2 … P→ αn 可合并为:
P→α1|α2| … |αn
其中:每个αi 称为P的一个侯选式 “ →” 读为 “定义为” “|” 读为 “或”
33
约定
1. 大写字母A、B、C……或汉语词组通常代 表非终结符; 2. 小写字母a、b、c……代表终结符; * 3. α、β、γ……代表(VT U VN)
29
利用文法描述程序设计语言
文法为程序设计语言提供了精确、易懂的语法 规则; 从文法出发,可以自动构造一个有效的语法分 析器; 设计合理的文法使程序设计语言具有良好的结 构; 基于文法描述的程序设计语言便于实现扩展。
30
上下文无关文法
归纳起来,一个上下文无关文法包括四个组成 部分: 一组终结符号 一组非终结符号 一个开始符号 一组产生式 如:me ,book,gave 等 如:<主语>,<谓语> 等 如: <句子> 如:<间接宾语> → <代词>
15
程序结构
一个高级语言程序通常由若干子程序段(过程、函数) 构造。许多语言还引入了类、程序包等更高级的结构。
一、FORTRAN
一个Fortran程序由一个主程序和若干个辅程序段组成。
PROGRAM MAIN …… END SUBROUTINE SUB1 …… END SUBROUTINE SUB1 …… END
单词符号: 0.5
x
c
*
+
语法单位: 0.5*x+c
9
单词符号
单词符号是语言中具有独立意义的最基本结 构。 词法规则定义了程序中单词符号的形成规则。 即字母表中的哪些字符可以构成一个合法的 单词。 单词符号包括:常量、标识符、基本字、 界符、运算符 描述词法规则的有效工具:正规式、正规文 法、有限自动机

第二章高级语言及其语法描述

第二章高级语言及其语法描述

–连接:符号串x、y的连接,是把y的符号写在x的符
号之后得到的符号串xy
如 x=ab,y=cd 则 xy=abcd
有εa = aε
–方幂:符号串自身连接n次得到的符号串 an 定义为 aa…aa n个a a1=a, a2=aa则a0=ε
• 符号串集合:若集合A中所有元素都是某字 母表上的符号串,则称A为字母表上的符 号串集合。
*的子集U和V的(连接)积定义为 UV={ | U & V}
注意: UV≠VU 但 (UV)W=U(VW)
V自身的n次积记为:Vn=VV…V(n次重复)
规定 V0={} V0
令 V*=V0 V1 V2 ……
称V*为V的闭包。
记V+=V V*,称V+为V的正则闭包。
预备知识 -----语言概述
预备知识 -----有关定义和记号
• 符号串s的前缀:移走符号串s尾部的零个或多
于零个符号得到的符号串.
如:
b是符号串banana的一个前缀.
• 符号串s的后缀:删去符号串s头部的零个或多
于零个符号得到的符号串.
如:nana是
符号串banana的一个后缀.
• 符号串s的子串:从s中删去一个前缀和一个后
• 两个符号串集合A和B的乘积定义为 AB =xy|xA且yB 若 集合A=ab,cde B = 0,1 则 AB =ab1,ab0,cde0,cde1
• 使用 * 表示上的一切符号串(包括ε) 组成的集合。Σ*称为Σ的闭包。
• 上的除ε外的所有符号串组成的集合记为 + 。 Σ+称为Σ的正闭包。
*{}2......
* {} * 2 3 ......
• 例:Σ={a,b} Σ*={ε,a,b,aa,ab,ba,bb,aaa,aab,…} Σ+={a,b,aa,ab,ba,bb,aaa,aab,…}

第二章 高级语言及其语法描述

第二章 高级语言及其语法描述
Z=X+Y 可以表示整数相加和实数相加等不同的语义。
– 编译程序就是要从基
• 高级语言的分类 • 程序结构
• 数据类型与操作
– 初等数据类型
– 数据结构 – 抽象数据类型
• 语句与控制结构
2.2 高级语言的一般特性
• 高级语言分类:
2.3 程序语言的语法描述
• 基本概念:
– Σ :是一个有穷字母表,它的每个元素称为一个 符号。 – Σ 上的字 (也叫符号串 ) :是指由 Σ 中的符号所构 成的一个有穷序列。 – ε:不包含任何符号的序列称为空符号串。 – Σ*:表示Σ上所有字的集合,其中包括空符号串ε。 – φ: 不包含任何元素的集合,φ={ }
序。(词法规则、语法规则)
语义是语言成分的含义,由程序执行的效果来说明。 语用是语言的实际应用。
如: x=a+b*c
一、语法
• 程序本质上是一定字符集上的字符串。 • 语法:一组规则,用它可以形成和产生一个 合式(well-formed)的程序。
一、语法
• 词法规则:单词符号的形成规则。
– 单词符号是语言中具有独立意义的最基本 结构。一般包括:常数、标识符、基本字、 算符、界符等。 – 描述工具:有限自动机
例如: 设 ∑={a, b},则 ∑*={ε,a,b,aa,ab,ba,bb,aaa,...}
2.3 程序语言的语法描述
• ∑*的子集U和V的连接(积)定义为 UV={ | U & V } • 设: U={ a, aa } V= { b, bb }
• 那么: UV= { ab, abb, aab, aabb}
• A:是非终结符号 • α:是由终结符号或与非终结符号组成的一个符 号串。

02 高级语言及其语法描述

02 高级语言及其语法描述

例子:29(2.1)
由文法定义语言
文法的作用是描述某种语言的句子的构成 方式。使用文法我们可以产生对应语言的句子。 所有句子就构成了文法所定义的语言。
基本思想:
从识别符号开始,不断利用产生式,将 当前符号串中的非终结符号替换为该符 号的某个规则的右部。直到当前的符号 串中所有的符号都是终结符号为止。
从推导构造语法树
步骤1:根结点为识别符号。
步骤2:对于每一次推导使用的规则 A → α ,找出A对应的结点(此时 应该是末端结点),从该结点向下 画分支,子结点从左到右分别是α 中从左到右的符号。 重复步骤2直到推导的最后一步。
语法树的例子
P.31.图2.2
语法树的例子
语法G[S]:
S →AB A →aAb | ab B →cBd | cd
程序 | 子程序或分程序、过程、函数 | 语句 | 表达式 | 数据引用 算符 函数调用
高级语言的一般特性
标识符与名字


标识符:以字母开头的,由字母数字 组成的字符串。 标识符与名字两者有本质区别:

标识符是语法概念 名字有确切的意义和属性
标识符与名字

名字:

值:左值指存储单元,右值指单元中的内容 属性:类型和作用域 由说明语句来明确规定的 隐含说明:FORTRAN 以I,J,K,…N为首的名 字代表整型,否则为实型。 动态确定:走到哪里,是什么,算什么
如果一个文法存在某个句子对应两棵不同 的语法树,则该文法是二义性的。 这里的二义性是指语法结构上的。
如果一个句子具有二义性,那么对这个句子的结 构可能有多种‘正确’的解释。通常情况下,句 子的语义要通过其语法结构来定义,所以,二义 性一般是有害的。

第二章高级语言及其语法描述

第二章高级语言及其语法描述
例:
设U = { a, b } V = { c, d } W= {df, ghi} 求UV=? UW=? UV={ ac, ad, bc, bd } UW={ adf, aghi, bdf, bghi }
基本概念和术语
V自身的n次(连接)积记为:
Vn = V V…V (n个V) 规定V0= {ε}. 例:设A = { a, b }, 求A0 , A1, A2 A0 = {ε} A1 = { a, b} A2 = {aa, ab, ba, bb }
程序语言的语法描述与分析
目的:
语言的语法结构的形式描述
从形式描述中,研究语法分析器的构造 (算符优先分析法和递归子程序分析法)
语法规则如何描述?
上下文无关文法
(context-free grammar)
引言
-文法
文法与语言
-上下文无关文法 -推导与语言
语法树与二义性
一、引言
文法(grammar)
基本概念和术语
符号串的运算:
符号串的连接:设x和y是两个符号串,将
符号串y直接拼接在x之后,此种操作为符 号串x和y的连接,记为xy。 例:若x=NPU,y=1108, 则xy=NPU1108。而yx=1108NPU εx=xε=x 符号串的方幂:符号串x与其自身的n-1次 连接称为此符号串的n次方幂,记作xn。
二、文法与语言
1、 一个上下文无关文法G是一个四元式(VT,VN,S, P ),
其中: VT:是非空有限集,它的每个元素是终结符号; VN:是非空有限集,它的每个元素是非终结符号; VT∩VN=Φ; VT∪VN=V;
S:S∈VN,称为开始符号;
P :产生式集合(有限),每个产生式形式是

第二章高级语言及其语法描述课件

第二章高级语言及其语法描述课件
n 语言的词法规则——单词符号的形成规则
单词符号是语言中具有独立意义的最基本单位,包括各类型的常数、
标识符、基本字、算符和界符等。
n 语言的语法规则——语法单位的形成规则
规定如何从单词符号形成语法单位 (包括:表达式、语句、 分程序、函数、过程和程序等) 的规则。
n 语法规则的描述——上下文无关文法
则UV = { aaa, abb ,baa ,bbb }
• Vn = V V V ……V 规定V0 = { c }
v 闭包: V* = V0 U V1 U V2 U V3 U…… v正则闭包: V+= V V* 例如: 已知字母表X ={ 0,1,2,3,4,5,6,7 },求X*和 X +
解答: X0 = { c } ,X1 = X= { 0,1,2,3,4,5,6,7 }, X2 = { 00,01,02,03,04,05,06,07 ,…… ,77 }
<字母> ->A |B | … |Z |a|b| … |z
<数字> ->0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |
该子语言文法的开始符号为( ),终结 符号为( )非终结符号为( )。
例子: he gave me a book. VT={he, gave, me, a,book } VN = { <句子> ,<主语> ,<谓语>, <直接宾语>, <间接宾语 >, <代词>,<冠词> , <动词> , <名词> } S =<句子>
• 空字:不包含任何符号的序列,记为 c。
•注意区分: c,{},{c}

2-第二章_高级语言及其语法描述

2-第二章_高级语言及其语法描述
例: E → E + T → T * F → i | V ={ E , + , T, *, }, VN ={ E, T, F }, G[E]: T | T F | F (E) F, i, ( , ) } VT ={ + , *, i, ( , ) }
5. 上下文无关文法的形式定义: 上下文无关文法的形式定义: 上下文无关文法是一个四元组
={aa,ab,ac,ba,bb,bc,ca,cb,cc}长度 长度=2 V2 ={aa,ab,ac,ba,bb,bc,ca,cb,cc}长度=2 的符号串的集合 V3 ={aaa,aab,aac,aba,abb,abc…}长度=3 的符号串的集合 ={aaa,aab,aac,aba,abb,abc…}长度=3 长度 V100 Vn 长度=100 长度=100 的符号串的集合 长度=n 长度=n 的符号串的集合
推导、 若存在一个直接推导序列 7. 推导、归约:若存在一个直接推导序列
α1 ==〉α2 ==〉α3 ==〉… ==〉αn ==〉 ==〉 ==〉 ==〉 称:α1 可以出推导αn ,或αn可归约为α1 记为: 记为: α1 αn (推导步骤>0步,读作:+号推导出) 推导步骤> 读作: 号推导出) α 即: β,表示推导步骤≥0步, 表示推导步骤≥ (读作:*号推导出) 读作: 号推导出) α = β 或 α β
—— 两个集合的乘积
§2.3 上下文无关文法 1.产生式(产生规则,简称规则): 1.产生式(产生规则,简称规则): 产生式 一个有序对( 一个有序对(A,α),通常写作: ),通常写作: 通常写作 A∷=α A∷=α 或 A→α A→α
A:符号,称为产生式左部; 符号,称为产生式左部; 左部 α:符号串,称为:产生式右部, 符号串,称为:产生式右部, 右部 或:产生式的候选式 产生式的候选式

第二章高级语言及其语法描述

第二章高级语言及其语法描述

(右线性) A, B VN, (VT)*.
2019/11/23
中南大学软件学院 陈志刚
14
– 左线性文法
第二章 高级语言及其语法描述
规则形式: AB或A (左线性) A, B VN, (VT)*.
– 正规文法
规则形式: AB或A 其中A, B VN, VT,如果 SP,则S不能出现在任何产生式右边
2019/11/23
中南大学软件学院 陈志刚
12
第二章 高级语言及其语法描述
一个文法的几种写法 ① G=({S,A},{a,b},P,S) 其中P:S→aAb A→ab A→aAb A→ε ② G:S→aAb A→ab A→aAb A→ε ③ G[S]: A→ab A→aAb A→ε S →aAb ④ G[S]: A→ab |aAb |ε S→aAb
– G’=({S, A, B, A’, B’, C’, D’}, {a, b, c, d, e}, S, P’),
– P’={S aA’|eB’, A’ bC’, C’ cA, B’ dB, A bD’, D’ eB, B d}
2019/11/23
中南大学软件学院 陈志刚
17
第二章 高级语言及其语法描述
=γ1Aγ2, = γ1δγ2; A VN, δ (VN VT)+ , γ1, γ2
(VN VT)* .
规则形式 γ1A γ2
γ1δγ2 ;
– 2型(上下文无关):
规则形式: Aδ , A VN ,δ (VN VT) +
– 3型(右线性和正规文法): 规则形式: AB或A
PASCAL语言中:A:=B+C合乎语法规则,A:=B+不合乎 语法规则
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个在子程序B1中说明的名字X只在B1中有效(局 部于B1);
如果B2是B1的一个内层子程序且B2中对标识符X没 有新的说明,则原来的名字X在B2中仍然有效。如 果B2对X重新作了说明,那么,B2对X的任何引用 都是指重新说明过的这个X。
语义是指这样的一组规则,使用它可以定义一个程序的意 义。
我们采用的方法为:基于属性文法的语法制导翻译方法。
精品课件
程序语言的功能
一个程序语言的基本功能 是描述数据和对数据的运 算。
所谓程序,从本质上来说 是描述一定数据的处理过 程。
在现今的程序语言中,一 个程序大体可以视为如图 所示的层次结构
procedure R(u:integer;Var v:integer);
var c,d:integer;
begin

end
begin

end
begin
….
end
精品课件
作用域:一个名字能被使用的区域范围称作这个名字 的作用域。
允许同一个标识符在不同的过程中代表不同的名字。
名字作用域规则--"最近嵌套原则"
第二章 高级语言及其 语法描述
授课人: 卫志华 Zhihua_wei@
精品课件
概述
要学习和构造编译程序,理解和定义高级语言是 必不可少的
本章概述高级语言的结构和主要共同特征,重点 介绍程序设计语言的语法描述方法
精品课件
内容线索
程序设计语言的定义 高级语言的一般特性 程序语言的语法描述
subroutine max(x,y,z)
integer x,y,z if x>y then z=x else z =y end
精品课件
程序结构——多层结构
Pascal程序结构 程序允许嵌套定义
Program P;
var a,x:integer;
procedure Q(b:integer);
var i:integer;
<简单表达式>∷=<简单表达式>+<简单表达式>
<简单表达式>∷=<简单表达式>*<简单表达式>
<简单表达式>∷=(<简单表达式>)
<简单表达式>∷=i
或者
<简单表达式>∷=<简单表达式> + <简单表达式>
单表达式>
| <简单表达式> * <简
精品课件
| (<简单表达式>) | i
附:BNF表示
语义 语用
表示按照各种表示方法所表示的各个 记号的特定含义(各个记号和记号所 表示的对象之间的关系)。
表示各个记号或语言词句与其使用之 间的关系。
精品课件
举例:C语言的赋值语句
赋值语句
语法
语义
语用
赋值表 达式所构成。
先对该语句的右部 表达式求值,然后 赋值语句可用 把所得结果与语句 来计算和保存 左部的变量相结合, 表达式的值。 并取代该变量原有 的值。
形式:func1(…func(n)) 举例:Lisp
(3) 基于规则:Rule-Based Language
形式:bird(x) :- fly(x) & feather(x) 举例:Prolog
(4) 面向对象:Object-Oriented Language
形式:class, 举例:Smalltalk、C++、Java
程序
子程序/分程序
语句
表达式
数据引用
算符
函数调用
精品课件
内容线索
✓ 程序设计语言的定义 高级语言的一般特性 程序语言的语法描述
精品课件
高级语言的分类
(1) 强制式:Imperative Language
形式:语句序列 举例:Fortran、C、Pascal
(2) 应用式:Applicative Language
精品课件
高级语言的一般特性
程序结构 数据类型与操作 语句与控制结构
精品课件
程序结构——单层结构
Fortran程序结构 主程序+若干个辅程序段(子程序、函数)
Program Main Read(I,J) Call max(I,J,K) Write(100, K)
100 Format(…) end
精品课件
语法描述方式(1)
(1)自然语言
例1. 标识符是由字母后跟若干个(包括0个)字母或数字的符号串 组成的。
例2. 赋值语句由一个变量,后随一个符号“=”,再在后面跟一个 表达式所构成。
(2)语法图
是用图解形式描述程序设计语言语法规则的工具。 例1. 标识符的构成规则用语法图描述为:
标识符 字母
字母
精品课件
数字
语法描述方式(2)
(3)BNF范式
巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。
现在,新的编程语言几乎都使用巴科斯范式来定义编程语言的语 法规则。
精品课件
简单算术表达式的BNF范式
α→β表示为α∷=β
非终结符用“<”和“>”括起来
终结符:基本符号集
其他
β(α1|α2…|αn)≡βα1|βα2…|βαn
{α1|α2…|αn}
n m
[α] ≡ α| ε
……
精品课件
语义
对于一个语言来说,不仅要给出它的词法、语法规则,而 且要定义它的单词符号和语法单位的意义。这就是语义问 题。
精品课件
程序设计语言的定义
程序设计语言是为书写计算机程序而人为设计的 符号语言。
机器语言
汇编语言
高级语言
精品课件
各级语言的比较
比较
机器语言
汇编语言
高级语言
硬件识别
是唯一可以识别 不可识别 的语言
不可识别
是否可直接 可直接执行 执行
不可,需汇编、 不可,需编译/解释、
连接
连接
特点
✓面向机器 ✓占用内存少 ✓执行速度快 ✓使用不方便
精品课件
语法
语言的语法是指可以形成和产生合式程序的一组规则。它 包括词法规则和语法规则。
词法规则是指程序中单词符号的形成规则。单词符号一般包括: 标识符、基本字、常量、算符和界符。
语法规则是指程序中语法单位的形成规则。程序语言的语法单位 有:表达式、语句、分程序、过程、函数、程序。
描述方式:词法规则和语法规则都可以用自然语言、语法 图、BNF范式、或文法等描述。
➢面向机器 ➢占用内存少 ➢执行速度快 ➢较为直观 ➢与机器语言一 一对应
面向问题/对象 占用内存大 执行速度相对慢 标准化程度高 便于程序交换,使 用方便
定位
低级语言,极少 低级语言,很 高级语言,种类多,
使用
少使用
常用
精品课件
程序语言的内涵
语法
表示构成语言句子的各个记号之间的 组合规律(构成规则)。
相关文档
最新文档