编译原理实验一
一, 实验目的:
设计一个词法分析程序。
二, 实验要求:
分辨出程序中的注释信息,并将注释信息的小写字母改成大写字母。
三,源代码:
#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp1,*fp2;
int state=1,i=0,line=1;//初始化状态 state=1
char w[81],c,ch[4],temp[80];
int j;
fp1=fopen("ceshi.c","r+");//以读写的方式打开待分析文件
fp2=fopen("ceshi.txt","w");//以写的方式新建另一文件,将分析结果存入此文件中
if(fp1==NULL||fp2==NULL)//如果某文件打开失败,就返回错误并退出程序
exit(0);
while(fgets(temp,80,fp1)!=NULL)//从 fp1 所指的文件中读取字符,放到 w 数组中
{ //如果文件结束,返回 NULL 退出循环
j=0;
// itoa(line,ch,10);//把整型行数 line 换成字符型存入数组 ch
while(temp[i]!=' '&&temp[i]!=''&&temp[i]!=EOF)//如果遇到回车符或文件
{ //结束符或空符表示该行结束退出
c=temp[i];//取一个字符
switch(state)
{
case 1:if(c=='/')
state=2;//遇到“/”进入状态 2
break;
case 2:if(c=='*')
state=3;//遇到“*”进入状态 3
else
state=1;//遇到其他字符进入状态 1
break;
case 3:if(c=='*')
state=4;//遇到“*”进入状态 4
else if(islower(c))
w[j++]=toupper(c);//把小写转换成大写
else