📄 zz.txt
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
FILE *fp;
struct wenji
{
char biaosf;
char zifu[20];
};
struct wenji zong[50];
struct siyuanshi /*语义四元式的数据结构 */
{ int k;
char op[10];
char op1[10];
char op2[10];
char result[10];
};
struct siyuanshi sys_char[20];
struct Actions /*action表的建立*/
{
char sr;
int state;
}action[38][14];
int go_to[38][6]; /*goto表的建立*/
struct expression /*产生式*/
{
char left;
char *right;
int len;
};
struct expression ge[16];
struct Stack /*语法栈 */
{
int num;
char word[20];
int lenth;
};
struct Stack stack[20];
static int stack_count;
static int stack_count_word;
/****************************以下是给action表和go_to表赋初值************************/
void creatTable()
{ int i,j;
ge[1].left='P';
ge[1].right="SM";
ge[2].left='S';
ge[2].right="if(B)MSNeMS";
ge[3].left='S';
ge[3].right="if(B)MS";
ge[4].left='S';
ge[4].right="i=E";
ge[5].left='B';
ge[5].right="B&MB";
ge[6].left='B';
ge[6].right="B|MB";
ge[7].left='B';
ge[7].right="!B";
ge[8].left='B';
ge[8].right="ErE";
ge[9].left='E';
ge[9].right="E+E";
ge[10].left='E';
ge[10].right="E*E";
ge[11].left='E';
ge[11].right="-E";
ge[12].left='E';
ge[12].right="(E)";
ge[13].left='E';
ge[13].right="i";
ge[14].left='M';
ge[14].right="$";
ge[15].left='N';
ge[15].right="$";
for( i=1;i<=15;i++)
{
ge[i].len=strlen(ge[i].right);
//printf("%d,",ge[i].len);
}
for(i=0;i<38;i++)
{
for( j=0;j<14;j++)
action[i][j].sr='$';
}
for(i=0;i<38;i++)
{
for( j=0;j<6;j++)
go_to[i][j]=-1;
}
/****************************以下是给action表赋初值************************/
action[0][0].sr='s';action[0][0].state=3;
action[0][12].sr='s';action[0][12].state=4;
action[1][13].sr='#';
action[2][0].sr='r';action[2][0].state=14;
action[2][12].sr='r';action[2][12].state=14;
action[2][13].sr='r';action[2][13].state=14;
action[3][1].sr='s';action[3][1].state=6;
action[4][4].sr='s';action[4][4].state=7;
action[5][13].sr='r';action[5][13].state=1;
action[6][1].sr='s';action[6][1].state=12;
action[6][7].sr='s';action[6][7].state=9;
action[6][11].sr='s';action[6][11].state=11;
action[6][12].sr='s';action[6][12].state=13;
action[7][1].sr='s';action[7][1].state=12;
action[7][11].sr='s';action[7][11].state=11;
action[7][12].sr='s';action[7][12].state=13;
action[8][2].sr='s';action[8][2].state=15;
action[8][5].sr='s';action[8][5].state=16;
action[8][6].sr='s';action[8][6].state=17;
action[9][1].sr='s';action[9][1].state=12;
action[9][7].sr='s';action[9][7].state=9;
action[9][11].sr='s';action[9][11].state=11;
action[9][12].sr='s';action[9][12].state=13;
action[10][8].sr='s';action[10][8].state=19;
action[10][9].sr='s';action[10][9].state=20;
action[10][10].sr='s';action[10][10].state=21;
action[11][1].sr='s';action[11][1].state=12;
action[11][11].sr='s';action[11][11].state=11;
action[11][12].sr='s';action[11][12].state=13;
action[12][1].sr='s';action[12][1].state=12;
action[12][11].sr='s';action[12][11].state=11;
action[12][12].sr='s';action[12][12].state=13;
action[13][2].sr='r';action[13][2].state=13;
action[13][3].sr='r';action[13][3].state=13;
action[13][5].sr='r';action[13][5].state=13;
action[13][6].sr='r';action[13][6].state=13;
action[13][8].sr='r';action[13][8].state=13;
action[13][9].sr='r';action[13][9].state=13;
action[13][10].sr='r';action[13][10].state=13;
action[13][13].sr='r';action[13][13].state=13;
action[14][3].sr='r';action[14][3].state=4;
action[14][9].sr='s';action[14][9].state=20;
action[14][10].sr='s';action[14][10].state=21;
action[14][13].sr='r';action[14][13].state=4;
action[15][0].sr='r';action[15][0].state=14;
action[15][12].sr='r';action[15][12].state=14;
action[15][13].sr='r';action[15][13].state=14;
action[16][0].sr='r';action[16][0].state=14;
action[16][12].sr='r';action[16][12].state=14;
action[16][13].sr='r';action[16][13].state=14;
action[17][0].sr='r';action[17][0].state=14;
action[17][12].sr='r';action[17][12].state=14;
action[17][13].sr='r';action[17][13].state=14;
action[18][2].sr='r';action[18][2].state=7;
action[18][5].sr='r';action[18][5].state=7;
action[18][6].sr='r';action[18][6].state=7;
action[19][1].sr='s';action[19][1].state=12;
action[19][11].sr='s';action[19][11].state=11;
action[19][12].sr='s';action[19][12].state=13;
action[20][1].sr='s';action[20][1].state=12;
action[20][11].sr='s';action[20][11].state=11;
action[20][12].sr='s';action[20][12].state=13;
action[21][1].sr='s';action[21][1].state=12;
action[21][11].sr='s';action[21][11].state=11;
action[21][12].sr='s';action[21][12].state=13;
action[22][2].sr='r';action[22][2].state=11;
action[22][3].sr='r';action[22][3].state=11;
action[22][5].sr='r';action[22][5].state=11;
action[22][6].sr='r';action[22][6].state=11;
action[22][8].sr='r';action[22][8].state=11;
action[22][9].sr='r';action[22][9].state=11;
action[22][10].sr='r';action[22][10].state=11;
action[22][13].sr='r';action[22][13].state=11;
action[23][2].sr='s';action[23][2].state=30;
action[23][9].sr='s';action[23][9].state=20;
action[23][10].sr='s';action[23][10].state=21;
action[24][0].sr='s';action[24][0].state=3;
action[24][12].sr='s';action[24][12].state=4;
action[25][1].sr='s';action[25][1].state=12;
action[25][7].sr='s';action[25][7].state=9;
action[25][11].sr='s';action[25][11].state=11;
action[25][12].sr='s';action[25][12].state=13;
action[26][1].sr='s';action[26][1].state=12;
action[26][7].sr='s';action[26][7].state=9;
action[26][11].sr='s';action[26][11].state=11;
action[26][12].sr='s';action[26][12].state=13;
action[27][2].sr='r';action[27][2].state=8;
action[27][5].sr='r';action[27][5].state=8;
action[27][6].sr='r';action[27][6].state=8;
action[27][9].sr='s';action[27][9].state=20;
action[27][10].sr='s';action[27][10].state=21;
action[28][2].sr='r';action[28][2].state=9;
action[28][3].sr='r';action[28][3].state=9;
action[28][5].sr='r';action[28][5].state=9;
action[28][6].sr='r';action[28][6].state=9;
action[28][8].sr='r';action[28][8].state=9;
action[28][9].sr='r';action[28][9].state=9;
action[28][10].sr='s';action[28][10].state=21;
action[28][13].sr='r';action[28][13].state=9;
action[29][2].sr='r';action[29][2].state=10;
action[29][3].sr='r';action[29][3].state=10;
action[29][5].sr='r';action[29][5].state=10;
action[29][6].sr='r';action[29][6].state=10;
action[29][8].sr='r';action[29][8].state=10;
action[29][9].sr='r';action[29][9].state=10;
action[29][10].sr='r';action[29][10].state=10;
action[29][13].sr='r';action[29][13].state=10;
action[30][2].sr='r';action[30][2].state=12;
action[30][3].sr='r';action[30][3].state=12;
action[30][5].sr='r';action[30][5].state=12;
action[30][6].sr='r';action[30][6].state=12;
action[30][8].sr='r';action[30][8].state=12;
action[30][9].sr='r';action[30][9].state=12;
action[30][10].sr='r';action[30][10].state=12;
action[30][13].sr='r';action[30][13].state=12;
action[31][3].sr='r';action[31][3].state=15;
action[31][13].sr='r';action[31][13].state=3;
action[32][2].sr='r';action[32][2].state=5;
action[32][5].sr='r';action[32][5].state=5;
action[32][6].sr='r';action[32][6].state=5;
action[33][2].sr='r';action[33][2].state=6;
action[33][5].sr='s';action[33][5].state=16;
action[33][6].sr='r';action[33][6].state=6;
action[34][3].sr='s';action[34][3].state=35;
action[35][0].sr='r';action[35][0].state=14;
action[35][12].sr='r';action[35][12].state=14;
action[35][13].sr='r';action[35][13].state=14;
action[36][0].sr='s';action[36][0].state=3;
action[36][12].sr='s';action[36][12].state=4;
action[37][3].sr='r';action[37][3].state=2;
action[37][13].sr='r';action[37][13].state=2;
/****************************以下是给go_to表赋初值************************/
go_to[0][0]=1;
go_to[0][1]=2;
go_to[2][4]=5;
go_to[6][2]=8;
go_to[6][3]=10;
go_to[7][3]=14;
go_to[9][2]=18;
go_to[9][3]=10;
go_to[11][3]=22;
go_to[12][3]=23;
go_to[15][4]=24;
go_to[16][5]=25;
go_to[17][5]=26;
go_to[19][3]=27;
go_to[20][3]=28;
go_to[21][3]=29;
go_to[24][1]=31;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -