⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zz.txt

📁 IF-ELSE条件语句的语法分析及语义分析程序设计
💻 TXT
📖 第 1 页 / 共 2 页
字号:
#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 + -