编译程序设计.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译器设计 课程名称及性质 名称:软件综合实验 性质:必修课 学分:1(24小时) 5月(15)日前由各班班长将上机报告收齐,统一交上来。 地点:电信学院新楼312-2房间。 实践课题 为自定义教学模型语言(类Pascal语言)SL设计编译程序 SL语言的单词分类 本编译系统的单词符号分类如下: 标识符 (ID) 保留字 (if, while,read,write,begin,end,…) 无符号整数 (INTC) 单字符分界符 (+,-,*,/,,=,(,),[,],.,;,EOF,空白字符) 双字符分界符(:=, =, =, , ..) 注释符号 ({,}) 字符起始和结束符 (′) SL语言的词法定义 (1)ID ?〈字母〉{〈字母〉|〈数字〉} (2)INTC ?〈数字〉{〈数字〉} (3)单字符分界符 ? + | - | * | / | | | = | ( | ) | [|] | , | . | ; | EOF |空白字符 (4)字母 ?a|b|…|x|y|z (5) 数字 ?0|1…|8|9 …… 词法分析 词法分析过程GETSYM所要完成的任务: 读源程序(getch) 滤空格 识别保留字 识别标识符 拼数 识别单字符单词 拼双字符单词 词法分析过程:GETSYM框图(见教材图2.5) 程序( procedure getsym) 当识别到标识符时先查保留字表 保留字表:( begin (* main * ) ) word[1]:=‘begin ‘;word[2]:=‘end ‘; ... word[13]:=‘write ‘; 查到时找到相应的内部表示 Wsym[1]:=beginsym; wsym[2]:=endsym; … wsym[13]:=writesym; 字符对应的单词表: ssym[‘+’]:=plus; ssym[‘-’]:=minus; … ssym[‘;’]:=semicolon; 词法分析如何把单词传递给语法分析 type symbol=(nul,ident,number,plus,…,varsym,procsym); 3个全程量 sym:symbol; id:alfa; num:integer; 通过三个全程量 SYM 、ID和NUM 将识别出的单词信息传递给语法分析程序。 SYM:存放单词的类别 如:有程序段落为: begin initial := 60;end 对应单词翻译后变为: begin beginsym, initial ident, ‘:= ‘ becomes, 60 number, ‘;’ semicolon, end endsym 。 ID: 存放用户所定义的标识符的值 如: initial (在SYM中放ident,在ID中放initial) NUM:存放用户定义的数 如:60 (在SYM中放number,在NUM中放60) SL语言的语法定义 (1)程序? Program ID ;声明部分程序体. (2) 声明部分 ?类型说明;变量说明; {过程说明;} (3) 类型说明 ?空〉|Type 类型列表 (4) 类型列表 ? ID =类型{;ID =类型} (5) 类型〉 ?基本类型|ARRAY[low..top] OF 基本类型 | ID (后面引用TypeDef,就是类型) (6) 基本类型 ? INTEGER |CHAR (7) low ? INTC (8) top ? INTC SL语言的语法定义 (9)变量说明 ? 空〉| VAR 类型变量表{; 类型变量表} (10) 变量表 ?标识符{,〈标识符〉} (11) 程序体 ?BEGIN 语句列表 END (12)语句列表 ? 语句{;〈语句〉} (13)〈语句〉 ?〈赋值语句〉|〈if语句〉 |〈当型循环语句〉| 〈读语句〉|〈写语句〉|〈复合语句〉 | 〈Return语句〉 |〈Call语句〉 SL语言的语法定义 (14)〈赋值语句〉?ID:= Exp (15)〈if语句?IF条件THEN语句[ELSE语句]FI (16)〈条件〉 ?〈表达式〉〈关系运算符〉 〈表达式〉| NOT〈表达式〉 (17)〈当型循环语句〉 ?WHILE条件DO语句列表 ENDWH (18)读语句〉 ?READ (ID) (19) 写语句〉 ?WRITE ( Exp) (20) 〈Return语句〉 ?RETURN (21) Call语句〉 ?CALL

文档评论(0)

精华文档888 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档