实验一、词法分析实验
专业 商业软件工程 姓名 陈子翔 学号 201506110223
一、 实验目的
编制一个词法分析程序。
二、 实验内容和要求
输入:源程序字符串;输出:二元组(种别,单词本身)。
三、 实验方法、步骤及结果测试
源程序名:词法分析.c,词法分析.exe
原理分析及流程图
原理主要根据老师给的表格
主要程序段及其解释:
- 1. int i;
- 2. char s[100];/*定义一个数组用来存放输入的字符*/
- 3. printf("请输入字符串:");
- 4. scanf("%s",&s);
- 5. for(i=0;i<100;i++)
- 6. {
- 7. if(s[i]==‘b‘&&s[i+1]==‘e‘&&s[i+2]==‘g‘&&s[i+3]==‘i‘&&s[i+4]==‘n‘)/*通过一个个字符来识别是否为我们需要的单词字符*/
- 8. printf("1 , begin\n");/*输出格式主要为种别码,单词字符*/
- 9. else if(s[i]==‘i‘&&s[i+1]==‘f‘)
- 10. printf("2 , if\n");
- 11. else if(s[i]==‘t‘&&s[i+1]==‘h‘&&s[i+2]==‘e‘&&s[i+3]==‘n‘)
- 12. printf("3 , then\n");
- 13. else if(s[i]==‘w‘&&s[i+1]==‘h‘&&s[i+2]==‘i‘&&s[i+3]==‘l‘&&s[i+4]==‘e‘)
- 14. printf("4 , while\n");
- 15. else if(s[i]==‘d‘&&s[i+1]==‘o‘)
- 16. printf("5 , do\n");
- 17. else if(s[i]==‘e‘&&s[i+1]==‘n‘&&s[i+2]==‘d‘)
- 18. printf("6 , end\n");
- 19. else if(s[i]==‘l‘&&s[i+1]==‘(‘&&s[i+2]==‘l‘&&s[i+3]==‘|‘&&s[i+3]==‘d‘&&s[i+3]==‘)‘&&s[i+4]==‘*‘)
- 20. printf("10 , l(l|d)*\n");
- 21. else if(s[i]==‘d‘&&s[i+1]==‘d‘&&s[i+2]==‘*‘)
- 22. printf("11 , dd*\n");
- 23. else if(s[i]==‘-‘)
- 24. printf("14 , -\n");
- 25. else if(s[i]==‘*‘)
- 26. printf("15 , *\n");
- 27. else if(s[i]==‘/‘)
- 28. printf("16 , /\n");
- 29. else if(s[i]==‘:‘&&s[i+1]!=‘=‘)
- 30. printf("17 , :\n");
- 31. else if(s[i]==‘:‘&&s[i+1]==‘=‘)
- 32. printf("18 , :=\n");
- 33. else if(s[i]==‘<‘&&s[i+1]!=‘=‘&&s[i+1]!=‘>‘)
- 34. printf("20 , <\n");
- 35. else if(s[i]==‘<‘&&s[i+1]==‘=‘)
- 36. printf("21 , <=\n");
- 37. else if(s[i]==‘<‘&&s[i+1]==‘>‘)
- 38. printf("22 , <>\n");
- 39. else if(s[i]==‘>‘&&s[i+1]!=‘=‘)
- 40. printf("23 , >\n");
- 41. else if(s[i]==‘>‘&&s[i+1]==‘=‘)
- 42. printf("24 , >=\n");
- 43. else if(s[i]==‘=‘)
- 44. printf("25 , =\n");
- 45. else if(s[i]==‘;‘)
- 46. printf("26 , ;\n");
- 47. else if(s[i]==‘(‘)
- 48. printf("27 , (\n");
- 49. else if(s[i]==‘)‘)
- 50. printf("28 , )\n");
- 51. else if(s[i]==‘#‘)
- 52. printf("0 , #\n");
运行结果及分析
四、 实验总结
这一次的实验依然是没有很好的做完整,其中一个很大的问题是,我输入了字符串能够正常识别但总会多出(((;这四个字符,目前问题尚未得到很好的解决。这是我第一次接触词法分析,虽然不是很理解词法分析的作用,但希望日后能够用好它。
时间: 2024-11-09 17:52:32