📄 main.c
字号:
link[number].data[0]=s;
//strcpy(link[number].type,"fuhao");
link[number].type[0]=s;
link[number].Isfirst=1;
number++;
}
inToken[tokennumber][0]=s;
tokennumber++;
}
void maketree(int i)
{
int n,m;
switch(i)
{
case 1:
struct tree *root1=(struct tree*)malloc(sizeof(struct tree));
struct tree *a=(struct tree*)malloc(sizeof(struct tree));
strcpy(root1.name,expression1[0]);
root1->son=a;
for(n=2;n<8;n++)
{
//struct tree *a=(struct tree*)malloc(sizeof(struct tree));
for(;root1->;m++)
{
root1=root1->next;
}
}
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
case 9:
break;
case 10:
break;
case 11:
break;
case 12:
break;
case 13:
break;
case 14:
break;
case 15:
break;
case 16:
break;
case 17:
break;
case 18:
break;
case 19:
break;
case 20:
break;
case 21:
break;
case 22:
break;
case 23:
break;
case 24:
break;
case 25:
break;
case 26:
break;
case 27:
break;
case 28:
break;
case 29:
break;
case 30:
break;
}
}
// empty stack
void makeNull(struct STACK * s)
{
s->top = MAXLENGTH;
}
// get stack top
int top(struct STACK * s)
{
return s->top;
}
// pop stack
void pop(struct STACK * s)
{
s->top = s->top + 1;
}
// push stack
void push(char * x,struct STACK * s)
{
s->top = s->top - 1;
strcpy(s->elements[s->top],x);
}
//identify terminal
int indenT(char * t)
{
if(!strcmp(t,"id"))
{
return 1;
}
else if(!strcmp(t,"num"))
{
return 2;
}
else if(!strcmp(t,"relop"))
{
return 3;
}
else if(!strcmp(t,"addop"))
{
return 4;
}
else if(!strcmp(t,"mulop"))
{
return 5;
}
else if(!strcmp(t,"("))
{
return 6;
}
else if(!strcmp(t,")"))
{
return 7;
}
else if(!strcmp(t,"{"))
{
return 8;
}
else if(!strcmp(t,"}"))
{
return 9;
}
else if(!strcmp(t,";"))
{
return 10;
}
else if(!strcmp(t,"if"))
{
return 11;
}
else if(!strcmp(t,"else"))
{
return 12;
}
else if(!strcmp(t,"while"))
{
return 13;
}
else if(!strcmp(t,"!"))
{
return 14;
}
else if(!strcmp(t,"="))
{
return 15;
}
else if(!strcmp(t,"int"))
{
return 16;
}
else if(!strcmp(t,"$"))
{
return 17;
}
else
{
return 0;
}
}
// identify UnTerminal
int indenX(char * t)
{
if(!strcmp(t,"Program"))
{
return 1;
}
else if(!strcmp(t,"Slist"))
{
return 2;
}
else if(!strcmp(t,"Dlist"))
{
return 3;
}
else if(!strcmp(t,"A'"))
{
return 4;
}
else if(!strcmp(t,"D"))
{
return 5;
}
else if(!strcmp(t,"Olist"))
{
return 6;
}
else if(!strcmp(t,"O"))
{
return 7;
}
else if(!strcmp(t,"B'"))
{
return 8;
}
else if(!strcmp(t,"Type"))
{
return 9;
}
else if(!strcmp(t,"Expression"))
{
return 10;
}
else if(!strcmp(t,"Simple_expression"))
{
return 11;
}
else if(!strcmp(t,"F'"))
{
return 12;
}
else if(!strcmp(t,"Term"))
{
return 13;
}
else if(!strcmp(t,"C'"))
{
return 14;
}
else if(!strcmp(t,"Factor"))
{
return 15;
}
else if(!strcmp(t,"D'"))
{
return 16;
}
else if(!strcmp(t,"E'"))
{
return 17;
}
else
{
return 0;
}
}
void showExp(int i)
{
int j;
switch(i)
{
case 1:
{
for(j = 7;j > 1;j--)
{
push(expression1[j],&st) ;
}
for(j =0;j < 8;j++)
{
printf("%s ",expression1[j]);
fprintf(out,"%s ",expression1[j]);
}
printf("\n");
fprintf(out,"\n");
break;
}
case 2:
for(j = 3;j > 1;j--)
{
push(expression2[j],&st) ;
}
for(j =0;j < 4;j++)
{
printf("%s ",expression2[j]);
fprintf(out,"%s ",expression2[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 3:
for(j = 2;j > 1;j--)
{
push(expression3[j],&st) ;
}
for(j =0;j < 3;j++)
{
printf("%s ",expression3[j]);
fprintf(out,"%s ",expression3[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 4:
/*for(j = 2;j > 1;j--)
{
push(expression4[j],&st) ;
}*/
for(j =0;j < 3;j++)
{
printf("%s ",expression4[j]);
fprintf(out,"%s ",expression4[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 5:
for(j = 3;j > 1;j--)
{
push(expression5[j],&st) ;
}
for(j =0;j < 4;j++)
{
printf("%s ",expression5[j]);
fprintf(out,"%s ",expression5[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 6:
for(j = 3;j > 1;j--)
{
push(expression6[j],&st) ;
}
for(j =0;j < 4;j++)
{
printf("%s ",expression6[j]);
fprintf(out,"%s ",expression6[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 7:
/*for(j = 2;j > 1;j--)
{
push(expression7[j],&st) ;
}*/
for(j =0;j < 3;j++)
{
printf("%s ",expression7[j]);
fprintf(out,"%s ",expression7[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 8:
for(j = 4;j > 1;j--)
{
push(expression8[j],&st) ;
}
for(j =0;j < 5;j++)
{
printf("%s ",expression8[j]);
fprintf(out,"%s ",expression8[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 9:
for(j = 3;j > 1;j--)
{
push(expression9[j],&st) ;
}
for(j =0;j < 4;j++)
{
printf("%s ",expression9[j]);
fprintf(out,"%s ",expression9[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 10:
for(j = 3;j > 1;j--)
{
push(expression10[j],&st) ;
}
for(j =0;j < 4;j++)
{
printf("%s ",expression10[j]);
fprintf(out,"%s ",expression10[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 11:
/*for(j = 2;j > 1;j--)
{
push(expression11[j],&st) ;
}*/
for(j =0;j < 3;j++)
{
printf("%s ",expression11[j]);
fprintf(out,"%s ",expression11[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 12:
for(j = 5;j > 1;j--)
{
push(expression12[j],&st) ;
}
for(j =0;j < 6;j++)
{
printf("%s ",expression12[j]);
fprintf(out,"%s ",expression12[j]);
}
printf("\n");
fprintf(out,"\n");
break;
case 13:
for(j = 8;j > 1;j--)
{
push(expression13[j],&st) ;
}
for(j =0;j < 9;j++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -