关键词:
实验一、词法分析实验
专业 商业软件3班 姓名 林鑫杰 学号201506110211
一、 实验目的
编制一个词法分析程序。
二、 实验内容和要求
输入:源程序字符串
输出:二元组(种别,单词符号本身)
三、 实验方法、步骤及结果测试
#include <stdio.h>
#include <string.h>
char prog[80],token[8],ch;
int syn,p,m,n,sum;
char *rwtab[6]={"begin","if","then","while","do","end"};
scaner();
main()
{p=0;
printf(" please input a string(end with ‘#‘): ");
do{
scanf("%c",&ch);
prog[p++]=ch;
}while(ch!=‘#‘);
p=0;
do{
scaner();
switch(syn)
{case 11:printf("( %-10d%5d ) ",sum,syn);
break;
case -1:printf("you have input a wrong string ");
getch();
exit(0);
default: printf("( %-10s%5d ) ",token,syn);
break;
}
}while(syn!=0);
getch();
}
scaner()
{ sum=0;
for(m=0;m<8;m++)token[m++]=NULL;
ch=prog[p++];
m=0;
while((ch==‘ ‘)||(ch==‘ ‘))ch=prog[p++];
if(((ch<=‘z‘)&&(ch>=‘a‘))||((ch<=‘Z‘)&&(ch>=‘A‘)))
{ while(((ch<=‘z‘)&&(ch>=‘a‘))||((ch<=‘Z‘)&&(ch>=‘A‘))||((ch>=‘0‘)&&(ch<=‘9‘)))
{token[m++]=ch;
ch=prog[p++];
}
p--;
syn=10;
for(n=0;n<6;n++)
if(strcmp(token,rwtab[n])==0)
{ syn=n+1;
break;
}
}
else if((ch>=‘0‘)&&(ch<=‘9‘))
{ while((ch>=‘0‘)&&(ch<=‘9‘))
{ sum=sum*10+ch-‘0‘;
ch=prog[p++];
}
p--;
syn=11;
}
else switch(ch)
{ case ‘<‘:token[m++]=ch;
ch=prog[p++];
if(ch==‘=‘)
{ syn=22;
token[m++]=ch;
}
else
{ syn=20;
p--;
}
break;
case ‘>‘:token[m++]=ch;
ch=prog[p++];
if(ch==‘=‘)
{ syn=24;
token[m++]=ch;
}
else
{ syn=23;
p--;
}
break;
case ‘+‘: token[m++]=ch;
ch=prog[p++];
if(ch==‘+‘)
{ syn=17;
token[m++]=ch;
}
else
{ syn=13;
p--;
}
break;
case ‘-‘:token[m++]=ch;
ch=prog[p++];
if(ch==‘-‘)
{ syn=29;
token[m++]=ch;
}
else
{ syn=14;
p--;
}
break;
case ‘!‘:ch=prog[p++];
if(ch==‘=‘)
{ syn=21;
token[m++]=ch;
}
else
{ syn=31;
p--;
}
break;
case ‘=‘:token[m++]=ch;
ch=prog[p++];
if(ch==‘=‘)
{ syn=25;
token[m++]=ch;
}
else
{ syn=18;
p--;
}
break;
case ‘*‘: syn=15;
token[m++]=ch;
break;
case ‘/‘: syn=16;
token[m++]=ch;
break;
case ‘(‘: syn=27;
token[m++]=ch;
break;
case ‘)‘: syn=28;
token[m++]=ch;
break;
case ‘{‘: syn=5;
token[m++]=ch;
break;
case ‘}‘: syn=6;
token[m++]=ch;
break;
case ‘;‘: syn=26;
token[m++]=ch;
break;
case ‘"‘: syn=30;
token[m++]=ch;
break;
case ‘#‘: syn=0;
token[m++]=ch;
break;
case ‘:‘:syn=17;
token[m++]=ch;
break;
default: syn=-1;
break;
}
token[m++]=‘ ‘;
}
四、 实验总结
通过这次实验让我更进一步的加强了对词法分析的理解,虽然做这个程序花了很多时间,但还是通过一步一步的查阅资料解决了这些问题。
实验报告-词法分析
---恢复内容开始---实验一、词法分析实验专业:商软二班 姓名:黄思慧 学号: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一、 实验目的 编制一个词法分析程序。 二、 实验内容和要求 对字符串表示的源程序... 查看详情