- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(编译原理实验
编 译 实 验 一. 概述 1. 源语言:求n!的极小语言 (文法见后) 程序→分程序 分程序→begin 说明语句表;执行语句表 end 说明语句表→说明语句│说明语句表 ;说明语句 说明语句→变量说明│函数说明 变量说明→integer 变量 变量→标识符 标识符→字母│标识符字母│ 标识符数字 字母→a│b│c│d│e│f│g│h│i│j│k│l│m│n│o │p│q │r│s│t│u│v│w│x│y│z 数字→0│1│2│3│4│5│6│7│8│9 函数说明→integer function 标识符(参数);函数体 参数→变量 函数体→begin 说明语句表;执行语句表 end 执行语句表→执行语句│执行语句表;执行语句 执行语句→读语句│写语句│赋值语句│条件语句 读语句→read(变量) 写语句→write(变量) 赋值语句→变量:=算术表达式 算术表达式→算术表达式-项│项 项→项*因子│因子 因子→变量│常数│函数调用 常数→无符号整数 无符号整数→数字│无符号整数数字 条件语句→if条件表达式then执行语句else 执行语句 条件表达式→算术表达式关系运算符算术表达式 关系运算符 →│=││=│=│ 2. 工具语言: Pascal、C或其它 3. 语法分析采用递归下降分析法 4. 目标代码: P码 5. 编译程序的结构 二. 各阶段的输入输出 1. 词法分析 2. 语法分析 3. 语义分析 4. 优化 5. 目标代码生成 三. 数据结构 1. 二元式文件?.dyd (1)二元式形式: 单词符号?种别 (2)每行后加一 “???...?EOLN?24” (3)文件结尾加 “???...?EOF?25” 2. 错误信息文件?.err (1)错误信息格式 ***LINE:行号??错误性质 (2)注意: 进入每一阶段, 首先打开?.err, 如果无错误, 则?.err为空。 3. ?.dys 同?.dyd 4. 变量名表 变量名vname: char(16) 所属过程vproc:char(16) 分类vkind: 0..1(0—变量、1—形参) 变量类型vtype: types 变量层次vlev: int 变量在变量表中的位置vadr: int(相对第一个变量而言) types=(ints) 5. 过程名表 过程名pname: char(16) 过程类型ptype: types 过程层次plev: int 第一个变量在变量表中的位置fadr: int 最后一个变量在变量表中的位置ladr: int 6. 四元式表 (oprd, op1, op2, result) oprd——整数码 op1——第一操作数 op2——第二操作数 result——结果 op1、op2、result可用“值/地址”表示 7. 目标代码——P码 参见目标代码(P码)指令表 四. 实现提示 1. 多数文件均和源文件同名, 仅扩展名不同。 2. 词法分析时, 注意行尾和文件尾。 3. 词法分析的实现方法——利用状态转换图 4. (有过程说明时)设一个总的变量名表,查、填表时注意嵌套。 5. 语法错分类: (1)缺少符号错; (2)符号匹配错; (3)符号无定义或重复定义。 6. 递归下降分析时, 必须先消除左递归。 7. 递归下降分析时, 跟踪符号的位置 当进入某过程时, 其第一个符号必须已经读出; 退出该过程时, 必须读出该语法成分的右界符。 例: G(E) E→E+T│T T→T*F│F F→(E) │i 消除左递归: E→T│E’ E’→+TE’│ε T→FT’ T’→*FT’│ε F→(E)│i 过程match:匹配单词符号,并读入下
文档评论(0)