资源描述:
《广工编译原理实验课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.PL/0编译程序PL/0编译程序PL/0语言程序类pcode代码源语言(PL/0)目标语言(类pcode)实现语言(C/pascal)PL/0编译程序类pcode解释程序类pcode代码PL/0源程序输入输出PL/0编译系统的结构框架2.PL/0语言PL/0语言特征PL/0的语法描述图PL/0语言文法的EBNF表示PL/0程序示例PL/0语言是PASCAL语言的子集数据类型,只有整型数据结构,只有简变和常量整数最多为14位标识符的有效长度是10位过程最多可嵌套三层作用域规则(内层可引用包围它的外层定义的标识符),过程可嵌套定义,可递归调用内的文字或符号表示
2、非终结符或内的文字或符号表示终结符2.2语法描述图constidentnumber=,;varidentprocedureident分程序语句,;;;分程序例:用语法描述图描述分程序的定义EBNF引入的符号(元符号):<>:用左右尖括号括起来的语法成分为非终结符∷=:‘定义为’∷=的左部由右部定义
3、:‘或’{}:表示花括号内的语法成分可重复任意次或限定次数[]:表示方括号内的语法成分为任选项():表示圆括号内的成分优先2.3EBNF范式例:用EBNF描述分程序的定义<分程序>∷=[<常量说明部分>][<变量说明部分>][<过程说明部分>]<语句><常量说明部分
4、>∷=CONST<常量定义>{,<常量定义>};<常量定义>∷=<标识符>=<无符号整数><变量说明部分>∷=VAR<标识符>{,<标识符>};PL/0程序示例CONSTA=10;(*常量说明部分*)VARB,C;(*变量说明部分*)PROCEDUREP;(*过程说明部分*)VARD;PROCEDUREQ;VARX;BEGINREAD(X);D:=X;WHILEX#0DOCALLP;END;BEGINWRITE(D);CALLQ;END;BEGINCALLP;END.Q的过程体P的过程体主程序体3.PL/0编译程序的总体设计词法分析程序语法语义分析程序代
5、码生成程序表格管理程序出错处理程序PL/0源程序目标程序其编译过程采用一趟扫描方式以语法、语义分析程序为核心词法分析程序和代码生成程序都作为一个过程,当语法分析需要读单词时就调用词法分析程序,而当语法、语义分析正确,需要生成相应的目标代码时,则调用代码生成程序。表格管理程序实现变量,常量和过程标识符的信息的登录与查找。出错处理程序,对词法和语法、语义分析遇到的错误给出在源程序中出错的位置和与错误性质有关的编号,并进行错误恢复。4.词法分析分析过程所要完成的任务:读源程序(getch)滤空格识别保留字识别标识符拼数拼双字符单词识别单字符单词符号表typesymb
6、ol=(nul,ident,number,plus,…,varsym,procsym);保留字表:word[1]:=‘BEGIN‘;word[2]:=‘CALL‘;...word[13]:=‘WRITE‘;单字符表:ssym[‘+’]:=plus;ssym[‘-’]:=minus;…ssym[‘;’]:=semicolon;重要变量及过程注意:按ASCII顺序存储保留字。查到时找到相应的内部表示wsym[1]:=beginsym;wsym[2]:=callsym;…wsym[13]:=writesym;全局变量1)SYM:存放单词的类别如:有程序段落为:beg
7、ininitial:=60;end对应单词翻译后变为:beginbeginsym,initialident,‘:=‘becomes,60number,‘;’semicolon,endendsym。2)ID:存放用户所定义的标识符的值如:initial(在SYM中放ident,在ID中放initial)3)NUM:存放用户定义的数如:60(在SYM中放在number在NUM中放60)GETSYM框图(见教材P19图2.5)重要变量及过程任务一:读程序内容读程序GetSym()识别保留字识别标识符拼数拼双字符单词识别单字符单词要求每班前十名同学给予检查任务二:扩充
8、单词内容增加保留字:FOR、DOWNTO和TO增加双字符单词:*=和/=要求设计测试方式,测试单词是否能被识别每班前十名同学给予检查5.语法分析—递归子程序法对应每个非终结符语法单元,编一个独立的处理过程(或子程序)。沿语法描述图箭头所指出的方向进行分析:1)遇到分支点时,将当前的单词与分支点上多个终结符逐个相比较,若都不匹配时可能是进入下一个非终结符语法单位或是出错。2)当遇到非终结符时,则调用相应的处理过程;3)当遇到描述图中是终结符时,则判断当前读入的单词是否与图中的终结符相匹配,若匹配,再读取下一个单词继续分析。程序pl0分程序block语句state
9、ment条件condition表达式e