《《编译原理及实践教程》第2章高级语言设计基础课件》由会员分享,可在线阅读,更多相关《《编译原理及实践教程》第2章高级语言设计基础课件(62页珍藏版)》请在金锄头文库上搜索。
1、高级语言设计基础,第2章,本章要求,主要内容:符号串,文法和语言的概念及分类,高级语言的定义过程 重点掌握:符号串及其运算,上下文无关文法、推导、句型、句子、语言,语法树、二义文法、文法的语言生成过程,高级语言的设计过程,以C和PASCAL为例复习高级语言 1 语言的基本字符集的定义(字母, 数字, 符号) 2 单词的定义 3 数据类型的定义 4 各种表达式的定义 5 各种语句的定义 6 程序定义 PASCAL和C的主要区别,2.1 符号和符号串,1. 字母表:高级语言程序能够使用的全体字符构成的集合,用表示,是一个有穷非空集合。 2. 符号:字母表中的每个元素。因此字母表也称为符号集。 不同
2、的语言可以有不同的字母表,例如英文的字母表中26个字母、数字及标点符号等。 C语言的字母表是由字母、数字、若干专用符号组成。 符号是某语言能识别的字符,字母表是该语言能识别的所有符号的全体(字符集)。,基本概念(续),3. 符号串: 由字母表中的符号组成的任何有穷序列称为符号串,例如00 11 10 是字母表 =0,1上的符号串 字母表A=a,b,c上的一些符号串有:a,b,c,ab,aaca等。 在符号串中,符号的顺序是很重要的,符号串ab就不同于ba,abca和aabc也不同。 符号串STR表示“由符号S、T和R,并按此顺序组成,基本概念(续),4. 符号串的运算 符号串s的长度 :出现在
3、s中符号的个数,记|s| 如:如001110的长度是6。 空符号串: 即不包含任何符号的符号串,用表示,其长度为0, 即|=0。 符号串的连接:字符串称为字符串和的连接(即把放在的后面) 如:=01,=110,则=01110,=11001,集合U与V的乘积 : UV = | U .,语言设计的步骤,(1)设计该语言的字符集。哪些字符是可用的 (2)设计单词集。程序语言的单词是定义在字符集上的字符的有穷序列。字符集上的单个字母和数字都是用来组成单词的,其本身不具有独立的意义。单词是程序设计语言中具有独立意义的最小单位。 (3)设计数据类型。每一个数据对象都有一个数据类型,数据类型定义了数据对象的
4、取值范围、能进行的运算和它占用的存储空间。 (4)设计表达式。表达式是构成程序设计语言中语句的最基本的成分。 (5)设计语句。程序由各种语句构成。考虑需要定义哪些语句。如定义了if语句是否需要定义switch语句,定义了while语句,是否需要定义dowhile语句等。 (6)程序的设计。程序是语言中最大的语法单位。设计时应考虑程序的总体结构,各子程序之间的关系,如何构成一个程序等。,符合SAMPLE语言规范的源程序,/*this is a sample program writing in Sample language*/ program example1; /*used for illu
5、strating compiling process*/ var a,b,c:integer; x:char; begin a=2; read(b); read(c); x=stu; if a0 and (x) then b=a+b*c; else for b= 1 to 100 do c=c+b; while c=1 do begin b=b*c; c=c-1; end; do a=10; while ab; end.,思考题,符号如何定义语言,掌握基本概念:符号、符号串、文法、推导、最左推导、最右推导、归约、句型、句子、语言、语言的等价、二义性、语法树 写出PASCAL语言中IF语句的上下文无关文法的完整定义 熟悉高级语言的设计过程,