关键词:
实验一、词法分析实验
商业软件工程 符致伟 201506110157
一、 实验目的
编制一个词法分析程序
二、 实验内容和要求
输入:源程序字符串
输出:二元组(种别,单词本身)
待分析语言的词法规则
三、 实验方法、步骤及结果测试
原理分析及流程:
主要程序段及其解释:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 100 char sum[MAX],ch,token[MAX];//字符串储存,单个字符,字符提取 int a=0,zbm,n,i;//计数器,种别码 char *gjz[6]={"begin","if","then","while","do","end"}; void FX(); void main() { printf("请输入字符串,以#结束:"); do { ch=getchar(); sum[a++]=ch; }while(ch!=‘#‘); a=0; do { FX(); printf("%d\t%s\n",zbm,token); }while(zbm!=0);//直到最后一个为# getchar(); } void FX() { for(n=0;n<MAX;n++) {token[n]=‘\0‘;} n=0; ch=sum[a++]; while(ch==‘ ‘){ch=sum[a++];} if((ch>=‘a‘&&ch<=‘z‘)||(ch>=‘A‘&&ch<=‘Z‘))//字母或字母+数字 { do{ token[n++]=ch;//复制到提取中 ch=sum[a++]; }while((ch>=‘a‘&&ch<=‘z‘)||(ch>=‘a‘&&ch<=‘z‘)||(ch>=‘0‘&&ch<=‘9‘)); zbm=11; for(n=0;n<6;n++)//关键字 { if(strcmp(token,gjz[n])==0) { zbm=n+1; } } a--; } else if(ch>=‘0‘&&ch<=‘9‘)//纯数字 { a--; do { token[n++]=sum[a++]; ch=sum[a]; }while(ch>=‘0‘&&ch<=‘9‘); zbm=11; return; } else { switch(ch) { case ‘+‘:zbm=13;token[0]=ch;break; case ‘-‘:zbm=14;token[0]=ch;break; case ‘*‘:zbm=15;token[0]=ch;break; case ‘/‘:zbm=16;token[0]=ch;break; case ‘:‘:zbm=17;token[0]=ch;ch=sum[a++]; if(ch==‘=‘){ token[1]=ch; zbm++; } else a--; break; case ‘<‘:zbm=20;token[0]=ch;ch=sum[a++]; if(ch==‘=‘){ token[1]=ch; zbm++; } else if(ch==‘>‘){ token[1]=ch; zbm=zbm+2; } else a--; break; case ‘>‘:zbm=23;token[0]=ch;ch=sum[a++]; if(ch==‘=‘){ token[1]=ch; zbm++; } else a--; break; case ‘=‘:zbm=25;token[0]=ch;break; case ‘;‘:zbm=26;token[0]=ch;break; case ‘(‘:zbm=27;token[0]=ch;break; case ‘)‘:zbm=28;token[0]=ch;break; case ‘#‘:zbm=0;token[0]=ch;break; default:break; } } }
运行结果及分析:
四、 实验总结
关键字的对比用过数组,在strcmp的比较中出现了问题,参考网上其他人写的,改用指针类型,字符串的存储一开始用scanf一次性存到一个字符串里,但读出来分析麻烦,改用getchar一个个字符存,这样后面字符拼起来分析,存到token字符串数组中就能跟种别码一起输出了。
实验报告-词法分析
---恢复内容开始---实验一、词法分析实验专业:商软二班 姓名:黄思慧 学号:201506110189一、 实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握... 查看详情
词法分析实验报告
实验一、词法分析实验专业商业软件工程 姓名黄施策 学号201506110228一、 实验目的 编制一个词法分析程序。二、 实验内容和要求 &nb... 查看详情
词法分析实验报告
实验一、词法分析实验商务软件工程三班 吴文成 201506110217一、 实验目的调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能... 查看详情
词法分析实验报告1
实验一、词法分析实验商软二班张智恒201506110172一、 实验目的 编制一个词法分析程序 二、 实验内容和要求编写一个词法分析程序,使其能... 查看详情
词法分析实验报告
实验一、词法分析实验专业:商业软件工程 姓名:程嘉明 学号:201506110185一、 实验目的通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解后各类单词的词法分析方... 查看详情
词法分析实验报告
实验一:词法分析专业:商业软件工程 姓名:陈锐 学号:201506110103一、 实验目的 编制一个词法分析程序。二、 实验内容和要求1.... 查看详情
词法分析实验报告
实验一、词法分析实验专业:商业软件工程 姓名: 陈 瑾学号:201506110101一、 实验目的 编制一个词法分析程序 二、   查看详情
词法分析实验报告
...行距。报告提交和打印输出时请去掉此框。 实验一、词法分析实验专业:商业软件工程 姓名:陈蔓嘉 学号:201506110245一、 实验目的 编制一个词法分析程序。... 查看详情
词法分析实验报告
实验一、词法分析实验商业软件工程 符致伟 201506110157一、 实验目的 编制一个词法分析程序二、 实验内容和要求 输入:源程序字符串 输出:二元... 查看详情
词法分析实验报告
...行距。报告提交和打印输出时请去掉此框。 实验一、词法分析实验 商软二班张智恒201506110172一、 实验目的 编制一个词法分析程序 二、   查看详情
词法分析实验报告
实验一、词法分析器实验专业:商软工程3班 姓名:林美全 学号:201506110220一、 实验目的设计,编制一个简单词法分析程序对输入字符串进行识别并做简单有效输出从而加深对词... 查看详情
实验一词法分析实验报告
实验一、词法分析实验专业:商业软件工程2班 姓名别博文 学号201606110175一、 实验目的 编制一个词法分析程序。 二、 实验内容和要求 对字符串表示的源程序... 查看详情
词法分析实验报告
实验一、词法分析实验专业商业软件3班 姓名林鑫杰学号201506110211一、 实验目的 编制一个词法分析程序。 二、 实验内容和要求输入:源程序字符串输出... 查看详情
实验报告1—’词法分析
实验一、词法分析实验专业:商业软件工程 姓名:钟菲菲 学号:201506110191一、 实验目的 编制一个词法分析程序 二、 实验内容和要求&nb... 查看详情
词法分析实验报告
实验一、词法分析程序实验专业:商业软件 姓名:杨链新 学号:201506110113一、 实验目的 通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解... 查看详情
词法分析程序实验报告
实验一词法分析实验商业软件工程2班 黄铭坤 201506110147一、 实验目的 编制一个词法分析程序。二、 实验内容和 查看详情
词法分析-实验报告
... 实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。二、 实验内... 查看详情
词法分析程序实验报告
实验一、词法分析实验专业:商业软件工程 姓名王芷玲 学号201606110246一、 实验目的 编制一个词法分析程序。 二、 实验内容和要求 对字符串表示的源程序... 查看详情