编译原理报告 (4)

上传人:新** 文档编号:488038593 上传时间:2023-04-25 格式:DOC 页数:19 大小:359KB
返回 下载 相关 举报
编译原理报告 (4)_第1页
第1页 / 共19页
编译原理报告 (4)_第2页
第2页 / 共19页
编译原理报告 (4)_第3页
第3页 / 共19页
编译原理报告 (4)_第4页
第4页 / 共19页
编译原理报告 (4)_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《编译原理报告 (4)》由会员分享,可在线阅读,更多相关《编译原理报告 (4)(19页珍藏版)》请在金锄头文库上搜索。

1、课 程 实 验 报 告课程名称: 编译原理 专业班级: 信息平安1302班 学 号: 姓 名: 报告日期: 2021年 11 月 11日 计算机科学与技术学院目录1 实验一21.1 实验目的21.2 实验要求21.3 词法分析的算法思想31.4 词法分析代码41.5 结果验证81.6 实验小结92 实验二102.1 实验目的102.2 实验要求102.3 语法分析的算法思想102.4 语法分析代码122.5 结果验证182.6 实验小结18 实验一 词法分析1.1 实验目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。1.2 实验要求1.2.1 待分析的简单语言的词法(1) 关键

2、字: begin if then while do end所有的关键字都是小写。(2) 运算符和界符: = + - * / = = = ; ( ) #(3) 其他单词是标识符ID和整型常数NUM,通过以下正规式定义:ID=letter(letter|digit)*NUM=digit digit*(4) 空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM、运算符、界符和关键字,词法分析阶段通常被忽略。1.2.2 各种单词符合对应的种别码 表1.各种单词符号对应的种别码单词符号 种别码单词符号种别码 begin1:17if2:=18then320while421do523lettetle

3、tter|digit*10=24dight dight* 11=25+13;26-14(27*15)28/16#01.2.3 词法分析程序的功能输入:所给文法的源程序字符串。输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码; token为存放的单词自身字符串; sum为整形常数。1.3 词法分析程序的算法思想算法的根本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其根本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。1. 主程序示意图(1) 关键字表的初值。关键字作为特殊标识符处理,把它们预先安排在一张表格中称为关键字表,当扫描程序识别

4、出标识符时,查关键字表。如能查到匹配的单词,那么该单词为关键字,否那么为一般标识符。关键字表为一个字符串数组,其描述如下。char *rwtab6=begin,if,then,while,do,end;置初值调用扫描子程序输出单词二元组输入串结束?结束YN(2) 程序中需要用到的主要变量为syn,token,sum。2. 扫描子程序的算法思想首先设置3个变量:token用来存放构成单词符号的字符串;sum用来存放整型单词;syn用来存放单词符号的种别码。扫描子程序的流程图如下列图所示。1.4 词法分析代码#include#includechar prog80,token8,ch;int syn

5、,p,m,n,sum;char *rwtab6=begin,if,then,while,do,end;scaner();main()FILE *fp;fp=fopen(1.txt,r);doch=fgetc(fp);progp+=ch;while(ch!=#);p=0;doscaner();switch(syn)case 11:printf(%-10d%5d)n,sum,syn);break;case -1:printf(you have input a wrong stringn);break;default:printf(%-10s%5d)n,token,syn);break;while(

6、syn!=0);scaner();词法分析程序scaner()sum=0;for(m=0;m8;m+)tokenm+=NULL;ch=progp+;m=0;while(ch= )|(ch=n)ch=progp+;if(ch=a)|(ch=A)while(ch=a)|(ch=A)|(ch=0)tokenm+=ch;ch=progp+;p-;syn=10;for(n=0;n6;n+)if(strcmp(token,rwtabn)=0)syn=n+1;break;else if(ch=0)while(ch=0)sum=sum*10+ch-0;ch=progp+;p-;syn=11;else swit

7、ch(ch)case :tokenm+=ch; ch=progp+; if(ch=) syn=24; tokenm+=ch; else syn=23; p-; break; case +:tokenm+=ch; ch=progp+;if(ch=+)syn=17;tokenm+=ch;elsesyn=13;p-;break;case -:tokenm+=ch; ch=progp+;if(ch=-)syn=29;tokenm+=ch;elsesyn=14;p-;break;case !:ch=progp+;if(ch=)syn=21;tokenm+=ch;elsesyn=31;p-;break;c

8、ase =:tokenm+=ch; ch=progp+;if(ch=)syn=25;tokenm+=ch;elsesyn=18;p-;break;case *:syn=15; tokenm+=ch; break;case /:syn=16; tokenm+=ch; break;case (:syn=27; tokenm+=ch; break;case ):syn=28; tokenm+=ch; break;case :syn=5; tokenm+=ch; break;case :syn=6; tokenm+=ch; break;case ;:syn=26; tokenm+=ch; break;case #:syn=0; tokenm+=ch; break;case :syn=17; tokenm+=ch; break;default:syn=-1; break;tokenm+=0;1.5 结果验证对源程序begin x:=9; if x 0 then x:= 2* x + 1/3;end#的源文件,经词法分析后的结果为:1.6 实验小结词法分析的任务是对字符串表示的源程序从左到右地进行扫描和分解,根据语言的词法规那么识别出一个一个具有独立意义的单词符号

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号