📄 4-28(2).txt
字号:
continue;
}
if( swap[p]>=48&&swap[p]<=57 ) //数字
{
//j = 0;
// while(swap[p]>=48&&swap[p]<=57)
// {
// a[k][j++] = swap[p++];
//}
//a[k][j] = '\0';
for(p=0;swap[p]!=';'&&swap[p]!=')'&&swap[p]!=']'&&swap[p]!='\0';p++)
for(j = 0;j < 39;j++)
{
if( fu[j][0]!=swap[p] ) a[k][p] = swap[p];
else goto r;
}
r: a[k][p]='\0';
j=0;
while(swap[p]!='\0') swap[j++] = swap[p++];
swap[j] = '\0';
for(p=0;a[k][p]!='\0';p++)
{
if(a[k][p]=='.'||a[k][p]=='e'||a[k][p]=='E') //实型
{
strcpy(b[k],"0x108");
break;
}
else
{
strcpy(b[k],"0x107"); //整型
continue;
}
}
k++;
rot++;
p = 0;
if( swap[0]=='\0' ) goto yes;
continue;
}
if( swap[p]==';'||swap[p]==',' )
{
a[k][0] = swap[p]; a[k][1] = '\0';
if(swap[p]==';') strcpy(b[k],"0x122");
else if(swap[p]==',') strcpy(b[k],"0x120");
j=0;
p++;
while(swap[p]!='\0') swap[j++] = swap[p++];
swap[j] = '\0';
p = 0;
k++;
rot++;
if( swap[0]=='\0' ) goto yes;
continue;
}
if((swap[p] >=97&&swap[p]<=122)||(swap[p]>=65&&swap[p]<=90)||swap[p]=='$'||swap[p]=='_')
{
while((swap[p] >=97&&swap[p]<=122)||(swap[p]>=65&&swap[p]<=90)||swap[p]=='$'||swap[p]=='_')
{
a[k][p] = swap[p]; //标志符
p++;
}
a[k][p] = '\0';
if( strcmp(a[k],"true")==0||strcmp(a[k],"false")==0 )
strcpy(b[k],"0x105"); //布尔型
else strcpy( b[k],"0x104");
k++;
rot++;
j=0;
while(swap[p]!='\0') swap[j++] = swap[p++];
swap[j] = '\0';
p = 0;
if( swap[0]=='\0' ) goto yes;
continue;
}
if( swap[p]=='{'||swap[p]=='}' )
{
a[k][0] = swap[p]; a[k][1] = '\0';
strcpy(b[k],"0x121");
j=0;
p++;
while(swap[p]!='\0') swap[j++] = swap[p++];
swap[j] = '\0';
p = 0;
k++;
rot++;
p++;
}
for(m = 0;m < 50;m++)
{
if( strcmp(swap,imp[m])==0 ) //找到关键字
{
strcpy( b[k],"0x103" );
strcpy( a[k],swap );
flag = 0;
k++;
rot++;
i++;
goto yes;
}
}
}
//}
if( (swap[p]<=48 || swap[p]>=57)&&(swap[p] <=97||swap[p]>=122)&&(swap[p]<=65||swap[p]>=90)&&swap[p]!=' '&&swap[p]!='\0') //不是数字,字母和空格
{
for( n = 0; n < 39;n++ ) //找单独的运算符
{
if( strcmp(swap,fu[n])==0 ) { flag =3; break; }
else n++;
}
if( flag==3 )
{
strcpy(a[k],swap);
if (strcmp(a[k],"=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if ( strcmp(a[k],"+=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"-=")==0) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"*=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"/=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"%=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"&=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"^=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"|=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],">>=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"<<=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],">>>=")==0) {strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"?:")==0 ) {strcpy(b[k],"0x111"); k++; rot++;}
else if (strcmp(a[k],"||")==0 ) {strcpy(b[k],"0x112"); k++; rot++;}
else if (strcmp(a[k],"|")==0 ) {strcpy(b[k],"0x114"); k++; rot++;}
else if (strcmp(a[k],"^")==0 ) {strcpy(b[k],"0x115"); k++; rot++;}
else if (strcmp(a[k],"&")==0 ) {strcpy(b[k],"0x116"); k++; rot++;}
else if (strcmp(a[k],"==")==0||strcmp(a[k],"!=")==0 ) { strcpy(b[k],"0x117"); k++; rot++;}
else if (strcmp(a[k],"<")==0||strcmp(a[k],">")==0||strcmp(a[k],"<=")==0||strcmp(a[k],">=")==0 ) {strcpy(b[k],"0x118"); k++; rot++;}
else if (strcmp(a[k],"<<")==0||strcmp(a[k],">>")==0||strcmp(a[k],">>>")==0 ) { strcpy(b[k],"0x119"); k++; rot++;}
else if (strcmp(a[k],"+")==0||strcmp(a[k],"-")==0 ) {strcpy(b[k],"0x11a"); k++; rot++;}
else if (strcmp(a[k],"*")==0||strcmp(a[k],"/")==0||strcmp(a[k],"%")==0 ) {strcpy(b[k],"0x11b"); k++; rot++;}
else if (strcmp(a[k],"++")==0||strcmp(a[k],"--")==0||strcmp(a[k],"!")==0||strcmp(a[k],"~")==0 ) {strcpy(b[k],"0x11c"); k++; rot++;}
}
if( swap[p]==';'||swap[p]==',' )
{
a[k][0] = swap[p]; a[k][1] = '\0';
if(swap[p]==';') strcpy(b[k],"0x122");
else if(swap[p]==',') strcpy(b[k],"0x120");
j=0;
p++;
while(swap[p]!='\0') swap[j++] = swap[p++];
swap[j] = '\0';
p = 0;
k++;
rot++;
if( swap[0]=='\0' ) goto yes;
continue;
}
}
}
}
for(i=0;i<k;i++)
{
printf("-----(");
m=strlen(b[i]);
for(j=0;j<m;j++)
printf("%c",b[i][j]);
printf(") [");
n=strlen(a[i]);
for(j=0;j<n;j++)
printf("%c",a[i][j]);
printf("]\n");
}
fclose(fp);
if( (fp=fopen("by.txt","w"))==NULL )
{
printf("Cannot open file.\n");
exit(0);
}
p = 0;
sum = 1;
for(i = 0;i < k; i++)
{
if( d[p]==0 ) { p++; sum = 1; i--; continue; } //如果有空行,则跳过继续输出
fprintf(fp,"%d.%d",p,sum);
sum++;
if( (sum == d[p]+1)&&d[p]!=0 ) { p++; sum = 1; }
fputs("-----(",fp);
m=strlen(b[i]);
for(j=0;j<m;j++)
fputc(b[i][j],fp);
fputs(") ",fp);
if( strcmp(b[i],"0x103")==0 ) fputs("关键字 -----[",fp);
else if( strcmp(b[i],"0x104")==0 ) fputs("标识符 -----[",fp);
else if( strcmp(b[i],"0x105")==0 ) fputs("布尔型 -----[",fp);
else if( strcmp(b[i],"0x106")==0 ) fputs("字符型 -----[",fp);
else if( strcmp(b[i],"0x107")==0 ) fputs("整型 -----[",fp);
else if( strcmp(b[i],"0x108")==0 ) fputs("浮点型 -----[",fp);
else if( strcmp(b[i],"0x109")==0 ) fputs("字符串 -----[",fp);
else if( strcmp(b[i],"0x110")==0||strcmp(b[i],"0x111")==0 ) fputs("特殊符 -----[",fp);
else if( strcmp(b[i],"0x112")==0||strcmp(b[i],"0x113")==0 ) fputs("特殊符 -----[",fp);
else if( strcmp(b[i],"0x114")==0||strcmp(b[i],"0x115")==0 ) fputs("特殊符 -----[",fp);
else if( strcmp(b[i],"0x116")==0||strcmp(b[i],"0x117")==0 ) fputs("特殊符 -----[",fp);
else if( strcmp(b[i],"0x118")==0||strcmp(b[i],"0x119")==0 ) fputs("特殊符 -----[",fp);
else if( strcmp(b[i],"0x11a")==0||strcmp(b[i],"0x11b")==0||strcmp(b[i],"0x11c")==0 ) fputs("特殊符 -----[",fp);
else if( strcmp(b[i],"0x11d")==0 ) fputs("[](). -----[",fp);
else if( strcmp(b[i],"0x120")==0 ) fputs(", -----[",fp);
else if( strcmp(b[i],"0x121")==0 ) fputs("{} -----[",fp);
else if( strcmp(b[i],"0x122")==0 ) fputs("; -----[",fp);
n = strlen(a[i]);
for(j = 0;j<n;j++)
fputc(a[i][j],fp);
fputs("]\n",fp);
}
fclose( fp );
printf(" 词法分析已写入by.txt,请查看!\n ");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -