logo资料库

华中科技大学编译原理实验报告.doc

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
实验一 词法分析
一、实验目的
二、实验要求
三、程序流程图
四、实验过程
五、测试与分析
实验二 语法分析
一、实验目的
二、实验要求
三、程序流程图
四、实验过程
五、测试与分析
实验总结
课 程 实 验 报 告 课程名称: 编译原理 专业班级: 信息安全 XXXX 班 学 号: XXXXXXXX 姓 名: XXXXXXXX 指导教师: XXXXXXXX 报告日期: 2012 年 11 月 计算机科学与技术学院
目录 实验一 词法分析 ...................................................................................................................... 3 一、 实验目的 .................................................................................................................. 3 二、 实验要求 .................................................................................................................. 3 三、 程序流程图.............................................................................................................. 4 四、 实验过程 .................................................................................................................. 5 五、 测试与分析.............................................................................................................. 5 实验二 语法分析 ...................................................................................................................... 6 一、 实验目的 .................................................................................................................. 6 二、 实验要求 .................................................................................................................. 6 三、 程序流程图.............................................................................................................. 6 四、 实验过程 .................................................................................................................. 9 五、 测试与分析.............................................................................................................. 9 实验总结 ...................................................................................................................................11
实验一 词法分析 一、实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 二、实验要求 (1)关键字: begin if then (2)运算符和定界符: while do end := + - * / < <= <> > >= = ; ( ) # (3)其他单词是标示符(ID)和整形常数(NUM),通过以下正规式定义: ID = letter(letter|digit)* NUM = dight dight* (4)空格由空白、制表符和换行符组成,空格一般用来分隔 ID、NUM、运算 符、界符和关键字,词法分析阶段通常被忽略。 种别码 (5)各种单词符号对应的种别码: 单词符号 begin if then while do end 1 2 3 4 5 6 10 11 13 14 15 16 (6)词法分析程序的功能 Letter(letter|digit)* dight dight* + - * / 单词符号 种别码 : := < <> <= > >= = ; ( ) # 17 18 20 21 22 23 24 25 26 27 28 0 输入:所给文法的源程序字符串 输出:二元组(syn,token 或 sum)构成的序列 其中:syn 为单词种别码 token 为存放的单词自身字符串 sum 为整形常数
三、程序流程图 (1)主算法流程图 置初值 调用扫描子程序 输出单词二元组 否 输入串结束? 是 结束 (2)扫描子程序主要部分流程图 变量初始化 忽略空格 是否文件结束? 否 拼数 syn=11 syn=10 返回 拼字符串 是否为关键字? 是 syn 为对应关 键字单词的 种别码 是 返回 对不同符 号给出相 应的 syn 报错
四、实验过程 (1)仔细阅读书上给出的程序框架。 (2)填充程序框架,使之成为一个完整且符合要求的程序。 (3)编译程序并修改错误。 (4)运行程序并与预想结果比对,若与预想结果相符则程序正确,否则修 改程序至运行结果与预想结果相符。 五、测试与分析 程序运行结果:
实验二 语法分析 一、实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法 检查和结构分析。 二、实验要求 (1)利用 C 语言编制递归下降分析程序,并对简单语言进行语法分析。 (2)用扩充的 BNF 表示如下: (3)输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息, 打印“success”,否则输出“error”。 <程序> ::= begin<语句串>end <语句串>::=<语句>{;<语句>} <语句>::=<赋值语句> <赋值语句>::=ID:=<表达式> <表达式>::=<项>{+<项>|-<项>} <项>::=<因子>{*<因子>|/<因子>} <因子>::=ID|NUM|(<表达式>) 三、程序流程图 (1)主算法流程图 置初值 调用 scaner 读下一个单词符号 调用 lrparser 结束
(2)递归下降分析程序示意图 是否 begin? 是 调用 scaner 调用语句分析函数 是否 end? 调用 scaner Syn0&&kk=0? 是 是 否 否 否 打印分析成功 出错处理 (3)语句串分析示意图 否 调用 statement 函数 是否;? 是 调用 scaner 调用 statement 函数 出错处理
(4)Statement 语句分析函数示意图 否 否 是否标示符? 调用 scaner 是否:=? 调用 scaner 是 是 调用 expression 函数 出错处理 (5)Expression 表达式分析函数示意图 调用 term 函数 是否+,-? 调用 scaner 是 否 调用 term 函数 出错处理 (6)Term 分析函数示意图 调用 factor 函数 是否*,/? 调用 scaner 是 否 调用 factor 函数 出错处理
分享到:
收藏