首页 > 代码库 > 词法分析器实验报告

词法分析器实验报告

实验一、词法分析实验

专业 商业软件工程

姓名 孙创锋

 学号 201506110221

一、        实验目的

 

编制一个词法分析程序。

 

二、        实验内容和要求

 

输入:源程序字符串;输出:二元组(种别,单词本身)。

 

三、        实验方法、步骤及结果测试

 

源程序名:词法分析.c,词法分析.exe

原理分析及流程图

原理主要根据老师给的表格

技术分享

主要程序段及其解释:

#include<stdio.h>

#include<stdlib.h>

void main()

{

int i;

char s[10];

printf("词法分析器输出类型说明:");

printf("1.保留字\n");

printf("2.运算符\n");

printf("3.分界符\n");

printf("4.常数\n");

printf("5.标识符\n\n\n\n");

printf("请输入字符串:");

scanf("%s",&s);

for(i=0;i<10;i++)

{

if(s[i]==‘a‘&&s[i+1]==‘u‘&&s[i+2]==‘t‘&&s[i+3]==‘o‘)

printf("1,  auto\n");

else if(s[i]==‘i‘&&s[i+1]==‘n‘&&s[i+2]==‘t‘)

printf("1,  int\n");

else if(s[i]==‘c‘&&s[i+1]==‘h‘&&s[i+2]==‘a‘&&s[i+3]==‘r‘)

printf("1,  char\n");

else if(s[i]==‘w‘&&s[i+1]==‘h‘&&s[i+2]==‘i‘&&s[i+3]==‘l‘&&s[i+4]==‘e‘)

printf("1,  while\n");

else if(s[i]==‘d‘&&s[i+1]==‘o‘)

printf("1,  do\n");

else if(s[i]==‘f‘&&s[i+1]==‘o‘&&s[i+2]==‘r‘)

printf("1,  for\n");

else if(s[i]==‘g‘&&s[i+1]==‘o‘&&s[i+2]==‘t‘&&s[i+3]==‘o‘)

printf("1,  goto*\n");

else if(s[i]==‘-‘)

printf("2,  -\n");

else if(s[i]==‘*‘)

printf("2,  *\n");

else if(s[i]==‘/‘)

printf("2,  /\n");

else if(s[i]==‘+‘)

printf("2,  +\n");

else if(s[i]==‘<‘)

printf("2,  <\n");

else if(s[i]==‘>‘)

printf("2,  >\n");

else if(s[i]==‘;‘)

printf("3,  ;\n");

else if(s[i]==‘=‘)

printf("3,  =\n");

else if(s[i]==‘,‘)

printf("3,  ,\n");

else if(s[i]==‘0‘)

printf("4,  0\n");

else if(s[i]==‘1‘)

printf("4,  1\n");

else if(s[i]==‘2‘)

printf("4,  2\n");

else if(s[i]==‘3‘)

printf("4,  3\n");

else if(s[i]==‘4‘)

printf("4,  4\n");

else if(s[i]==‘5‘)

printf("4,  5\n");

else if(s[i]==‘6‘)

printf("4,  6\n");

else if(s[i]==‘7‘)

printf("4,  7\n");

else if(s[i]==‘8‘)

printf("4,  8\n");

else if(s[i]==‘9‘)

printf("4,  9\n");

else if(s[i]==‘10‘)

printf("4,  10\n");

else if(s[i]==‘a‘)

printf("5,  a\n");

else if(s[i]==‘b‘)

printf("5,  b\n");

}

}

运行结果及分析

 技术分享

 

 

四、        实验总结

刚认识词法分析,对词法分析不是很了解,写出来的代码我也觉得怪怪的,不知道其中的意思。

词法分析器实验报告