




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理实验报告院(系): 信息技术学院 专业: 学生姓名:班级:学号: 题目: 词法分析器 起迄日期: 2012-11-21 设计地点: 指 导 教 师: 完成日期: 2012 年 11 月21 日C1词法分析器C1.1 实验目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。C1.2实验要求C1.2.1待分析的简单语言的词法(1)关键字: bengin if then while do end start for所有的关键字都是小写。(2)运算符和界符: := + - * / = = = ; ( ) # ! &(3)其他单词是标志符(ID)和整形常数(NUM),通过以下正规式定义: ID=letter(letter|digit)* NUM=digit digit*(4)空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM、运算符、界符和关键字,词法分析阶段通常被忽略。C1.2.2各种单词符号对应的种别码单词符号种别码单词符号 种别码 begin1:17 if2:=18 then320 while421 do523 Letter(letter|digit) 10=24 digit digit *11=25 +13;26 -14(27 * 15)28 /16#0 !2930 30&30C1.2.3词法分析程序的功能输入:所给文法的源程序字符串。输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码; token为存放的单词自身字符串; sum为整形常数。功能测试:(1) 程序调试界面如下:(2) 输入字符串begin x:=9; for x0 then x:= 2*x1/3; end #其结果如下图所示:(3) 输入字符串:!& #其结果如下图所示:(4) 输入字符串where#其输出结果如下图所示:(5) 输入字符串1234# 其结果显示如下:(6) 输入字符串 # 其结果显示如下:(7) 输入字符串 # 其结果显示如下:C1.3 词法分析程序的基本思想算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想示根据扫描到单词符号的第一字符的种类,拼出相应的单词符号。1. 主程序示意图主程序示意图如图C。1所示。其中初值包括如下两个方面:(1) 关键字表的初值。 关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下: char * rwtab6“begin ”,”if”,”then”,”while”,”do”,”end” ,“start”, “for” ; 图C.1 词法分析主程序示意图(2) 程序中需要用到的主要变量为syn,token和sum。2. 扫描子程序的算法思想首先设置3个变量:a.token用来存放构成单词符号的字符串;b.sum用来存放整形单词;c.syn用来存放单词符号的种别码。扫描子程序主要部分流程如图C.2所示。 图C.2 词法分析程序流程C.1.4 词法分析程序源代码#include#includechar prog80,token6;char ch;int syn,p,m,n,sum;char * rwtab8=begin,if,then,while,do,end,start,for;main() p=0; printf(n你好,请输入:);do ch=getchar(); progp+=ch;while(ch!=#);p=0;do scaner(); switch(syn) case 11:printf(%d,%d),syn,sum);break; case -1:printf(input errorn); break; default:printf(%d,%s),syn,token); while(syn!=0);getch();/*词法扫描程序:*/scaner() for(n=0;n8;n+) tokenn=NULL; m=0; ch=progp+; while(ch= )ch=progp+; if(ch=a)|(ch=A) while(ch=a)|(ch=A)|(ch=0) tokenm+=ch; ch=progp+; tokenm+=0; ch=prog-p; syn=10; for(n=0;n8;n+) if(strcmp(token,rwtabn)=0) syn=n+1; break; else if(ch=0) sum=0; while(ch=0) sum=sum*10+ch-0; ch=progp+; ch=prog-p; syn=11; else switch(ch) case ) syn=21; tokenm+=ch; else if(ch=) syn=22; tokenm+=ch; else syn=20; ch=prog-p; break; case :tokenm+=ch; ch=progp+; if(ch=) syn=24; tokenm+=ch; else syn=23; ch=prog-p; break; case :tokenm+=ch; ch=progp+; if(ch=) syn=18; tokenm+=ch; else syn=17; ch=prog-p; break; case +:syn=13;token0=ch;break; case -:syn=14;token0=ch;break; case *:syn=15;token0=ch;break; case /:syn=16;token0=ch;break; case :=:syn=18;token0=ch;break; case :syn=21;token0=ch;break; case =:syn=24;token0=ch;break; case =:syn=25;token0=ch;break; case ;:syn=26;token0=ch;break; case (:syn=27;token0=ch;break; case ):syn=28;token0=ch;break; case #:syn=0;token0=ch;break; c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全球2025年医疗器械产业园区发展报告
- 2025年教师招聘之《幼儿教师招聘》试题及参考答案详解【a卷】
- 净化工程方案说明(3篇)
- 2025年营销礼仪试卷及答案
- 2025年教师招聘之《幼儿教师招聘》考试题库附参考答案详解【预热题】
- 农村一二三产业融合2025年农村电商物流配送体系优化与农村电商物流成本控制报告
- 2025年清水县文书考试试题及答案
- 2025家具板材采购合同
- 中医药师考试试题及答案
- 2025内蒙古呼伦贝尔农垦谢尔塔拉农牧场有限公司调整部分岗位报考专业要求笔试备考及答案详解(全优)
- 重庆市南开中学高2026届高三第一次质量检测+化学答案
- 教育培训课程开发与实施指南模板
- 2025保密协议范本:物流行业货物信息保密
- 2025卫星互联网承载网技术白皮书-未来网络发展大会
- 半导体行业面试问题及答案解析
- 《研学旅行课程设计与实施》全套教学课件
- 2024年中国人寿集团公司招聘笔试参考题库含答案解析
- 压 实 度 试 验 记 录 表
- GA/T 1069-2013法庭科学电子物证手机检验技术规范
- 新版药品管理法培训培训课件
- 单位线法推求流域出口洪水过程工程水文学课件
评论
0/150
提交评论