📄 1.txt
字号:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define DEP 6
char stack[DEP];
int top=-1;
char a,c,p;
int n,x,length;
char token[8]/*={'i','*','i','+','i','#'}*/;
int xuhao[6][7]={{0,0,0,0,0,0,0},
{0,1,0,0,1,0,0},
{0,0,2,0,0,7,7},
{0,3,0,0,3,0,0},
{0,0,6,4,0,6,6},
{0,5,0,0,8,0,0}
};
char *key[]={"error","E->Te","e->+Te","T->Ft",
"t->*Ft","F->i","t->$","e->$","F->(E)"
} ;
char cols[]={'0','i','+','*','(',')','#'};
char row[]={'0','E','e','T','t','F'};
/*c a*/
int compare(char c,char a)
{ int j,k;
j=checkrow(c);
k=checkcols(a);
return xuhao[j][k];
}
int checkrow (char c)
{int i;
for(i=0;i<=6;i++)
if(strcmp(c,row[i])==0)
return (i);
}
int checkcols (char a)
{ int i;
for(i=0;i<=7;i++)
if(strcmp(a,cols[i])==0)
return (i);
}
int check (char c)
{int i;
for (i=0;i<7;i++)
if(strcmp(c,cols[i])==0)
return (1);
return (0);
}
void push (char c)
{if(top<DEP-1)
stack[++top]=c;
else { printf("stack is full\n");
}
}
char pop()
{ char temp;
if(top>=0){
temp=stack[top];
top--;
return temp;
}
else { printf("stack is empty\n");}
}
void stack_print()
{ int temp=top;
int l;
for(l=0;l<=temp;l++)
printf("%c",stack[l]);
}
void print()
{ int m;
stack_print();
printf("\t");
for(m=n;m<=7;m++)
printf("%c",token[m]);
printf("\t%c",a);
}
void main()
{ int h=0;
printf("please input your code,and end with '#':");
while(1)
{
p=getchar();
token[h++]=p;
if (p=='#') break;
}
push('#');
push('E');
a=token[0];
print();
printf("\n");
do
{
c=pop();
if(check(c))
{
if (c==a)
{ a=token[++n];print();printf("\n");}
else
{printf("error\n");break;}
}
if(!check(c))
{
x=compare (c,a);
switch(x)
{ case 1:
push('e');push('T');print();printf("\t%s\n",key[x]);break;
case 2:
push('e');push('T');push('+');print();printf("\t%s\n",key[x]);
break;
case 3:
push('t');push('F');print();printf("\t%s\n",key[x]);break;
case 4:
push('t');push('F');push('*');print();printf("\t%s\n",key[x]);break;
case 5:
push('i');print();printf("\t%s\n",key[x]);break;
case 6:
print(); printf("\t%s\n",key[x]); break;
case 7:
print(); printf("\t%s\n",key[x]); break;
case 8:
push('(');push('E');push(')');print();printf("\t%s\n",key[x]);break;
}
}
}while(c!='#');
if (c=='#'&&a=='\0')
printf("success!!\n");
else printf("error!\n");
system("pause");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -