- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学生实验报告 开课学院及实验室: 2015年4月30日 学院 年级/专业/班 姓名 学号 实验课程名称 编译原理实验 成绩 实验项目名称 词法分析 指导老师 评语: 一、实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 二、基本知识 1、正则表达式 2、正则表达式到有限自动机的转换 3、有限自动机的确定化与最小化 三、实验环境 1、Windows操作系统 2、C/C++/Java语言 四、实验要求 1、做好实验预习,掌握并熟悉本实验中所使用的编程、测试环境及相应的软件 2、写出实验报告 五、实验内容 1、待分析的C语言子集的词法 1) 关键字 main if else int return void while (都是小写) 2) 专用符号 = + — * / = = = = != ; : ,{ } [ ] ( ) 3) 其他标记 ID::=letter(letter|digit)* NUM::=digit digit* letter::= a|…|z|A|…|Z digit::= 0|…|9 4)空格由空白、制表符和换行符组成 空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段通常被忽略。 2、各种单词符号对应的种别码 单词符号 种别码 单词符号 种别码 Main 1 [ 28 Int 2 ] 29 Char 3 { 30 If 4 } 31 Else 5 , 32 For 6 : 33 While 7 ; 34 ID 10 35 NUM 20 36 = 21 = 37 + 22 = 38 - 23 = = 29 * 24 != 40 / 25 ‘\0’ 1000 ( 26 ERROR -1 ) 27 3、词法分析程序的功能 输入:所给文法的源程序字符串 输出:二元组(syn, token或sum)构成的序列。其中syn 为单词种别码;token 为存放的单词自身字符串;sum为整型常量(作为常量的值)。实现时,可将单词的二元组用结构进行处理 系统名称 词法分析器 系统定义 变量说明 char character 用于当前读到的字符 char token[8] 用于保存词语的字符串 int curSize 用于token的索引的计数器 char text[] 用于存放需要词法分析的程序代码 char *key[7] 保留字符 int pIndex; 用于text索引的计数器 int syn; 保存种别码 子函数说明 void getChar() 获得下一个字符 void getbe() 过滤掉空格 void concatenation() 拼接字符串 int reserve() 回退 void error() 报错 int digit() 是否为数字 int letter() 是否为字母 void returnTuples(int code, char* str) 打引二元组 void analysis() 词法分析 系统设计 程序流程 主程序示意图: 包含查询各类单词识别码的 信息依据 否 是 扫描子程序主要部分流程如图所示: 是 是 否 字母 数字 其他 运算符、 符号 界符等符号 否 是 程序代码 #include stdio.h #include stdlib.h #include string.h char character; char token[8]; int curSize = 0; char text[] = begin begin + begin a:=1 end;
文档评论(0)