实验一词法分析程序实验
专业 商软2班 姓名 邝启彬 学号 201506110165
一、 实验目的
编制一个词法分析程序。
二、 实验内容和要求
输入:源程序字符串
输出:二元组(种别,单词符号本身)。
三、 实验方法、步骤及结果测试
- 1. 源程序名:词法分析.c
可执行程序名:词法分析.exe
- 2. 原理分析及流程图
- 3. 主要程序段及其解释:
#include<stdio.h> #include<stdlib.h> #include<string.h> char *word[6]={"begin","if","then","while","do","end"}; char *word2[18]={"|","dd*","+","-","*","/",":",":=","<","<=","<>",">",">=","=",";","(",")","#"}; void words(char ch[]); void signs(char ch[]); main() { char ch[10]; do { printf(" 请输入保留字(输入##时结束):"); scanf("%s",ch); if(ch==" "||ch==" ") getchar(); words(ch); signs(ch); }while(ch!="##"); } void words(char ch[]) //输入的保留字是关键字 { if(strcmp(ch,word[0])==0) printf("%s,1",ch); else if(strcmp(ch,word[1])==0) printf("%s,2",ch); else if(strcmp(ch,word[2])==0) printf("%s,3",ch); else if(strcmp(ch,word[3])==0) printf("%s,4",ch); else if(strcmp(ch,word[4])==0) printf("%s,5",ch); else if(strcmp(ch,word[5])==0) printf("%s,6",ch); } void signs(char ch[]) //输入的保留字是标识符 { int sum; if(strcmp(ch,word2[0])==0) printf("%s,10",ch); if(strcmp(ch,word2[1])==0) printf("%s,11",ch); if(strcmp(ch,word2[2])==0) printf("%s,13",ch); if(strcmp(ch,word2[3])==0) printf("%s,14",ch); if(strcmp(ch,word2[4])==0) printf("%s,15",ch); if(strcmp(ch,word2[5])==0) printf("%s,16",ch); if(strcmp(ch,word2[6])==0) printf("%s,17",ch); if(strcmp(ch,word2[7])==0) printf("%s,18",ch); if(strcmp(ch,word2[8])==0) printf("%s,20",ch); if(strcmp(ch,word2[9])==0) printf("%s,21",ch); if(strcmp(ch,word2[10])==0) printf("%s,22",ch); if(strcmp(ch,word2[11])==0) printf("%s,23",ch); if(strcmp(ch,word2[12])==0) printf("%s,24",ch); if(strcmp(ch,word2[13])==0) printf("%s,25",ch); if(strcmp(ch,word2[14])==0) printf("%s,26",ch); if(strcmp(ch,word2[15])==0) printf("%s,27",ch); if(strcmp(ch,word2[16])==0) printf("%s,28",ch); if(strcmp(ch,word2[17])==0) printf("%s,0",ch); }
- 4. 运行结果及分析
四、 实验总结
通过这个实验,使我了解了编译器词法分析的过程。虽然在做这个程序的时候曾经没有思路,在编写的时候出现很多错误,但是我耐心的一一解决,终于完成这个程序,感觉比较满意。