Конвертер программы с подмножества языка Си в Паскаль с использованием LL(1) метода синтаксического анализа (выражения)
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
.};
for(j=0;j<=m-1;j++)
{
if(s1[be]==b[j]) {d=1;break;}
}
if(d==1)
{
for(i=be+1;i<=l;i++)
{
d=0;
for(j=0;j<=m-1;j++)
{
if(s1[i]==b[j]) {d=1;break;}
}
if (d==0)
{
d1=0;
for(k=0;k<=g-1;k++)
{
if(s1[i]==c[k]) {d1=1;break;}
}
if(d1==0)break;
}
}
}
chiclo=0;
for(i=be;i<=l;i++)
for(j=0;j<=g-1;j++)
{
if(s1[i]==c[j]) {chiclo=chiclo++;break;}
}
if(d1==1||d==1||chiclo==l-be+1&&z==0) {z=1;/*printf("DA");*/} else {z=0;/*printf("NET");*/}
return z;
};
/*--------------------КОНЕЦ ИНДИФИКАТОРА---------------------------------*/
/*--------------------------LL(1) - АНАЛИЗАТОР-----------------------------*/
int analiz()
{
int z[6],v,z1,i(0),j,k;
int tab[12][29]={{55,0,54,0,57,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{11,0,1,0,21,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{9,37,0,0,8,7,22,23,24,25,26,28,27,30,29,32,31,34,33,35,0,0,2,3,4,5,6,52,37},
{14,0,12,18,17,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0},
{0,53,0,0,0,0,38,39,40,41,42,44,43,45,46,48,47,50,49,51,0,53,0,0,0,0,0,0,53},
{0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,59},
{0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60}};
printf("\n");
z1=0;
z[z1]=11;z1++;z[z1]=0;
v=0;j=0;
do
{
switch(tab[z[z1]][a[v]])
{
case 1: z[z1]=2;v++;
printf("\tЗаменить(В1)\tСдвиг\n");vl[j]=1;break;
case 2: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=2;break;
case 3: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=3;break;
case 4: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=4;break;
case 5: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=5;break;
case 6: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=8;break;
case 7: z[z1]=5;v++;
printf("\tЗаменить(В)\tСдвиг\n");vl[j]=7;break;
case 8: z[z1]=5;v++;
printf("\tЗаменить(В)\tСдвиг\n");vl[j]=8;break;
case 9: z[z1]=10;z1++;z[z1]=0;v++;
printf("\tЗаменить(S1,S)\tСдвиг\n");vl[j]=9;break;
case 10: z[z1]=5;v++;
printf("\tЗаменить(В)\tСдвиг\n");vl[j]=10;break;
case 11: z[z1]=3;v++;
printf("\tЗаменить(В2)\tСдвиг\n");vl[j]=11;break;
case 12: z[z1]=6;z1++;z[z1]=2;v++;
printf("\tЗаменить(C,В1)\tСдвиг\n");vl[j]=12;break;
case 13: z[z1]=5;v++;
printf("\tЗаменить(В)\tСдвиг\n");vl[j]=13;break;
case 14: z[z1]=6;z1++;z[z1]=3;v++;
printf("\tЗаменить(C,В2)\tСдвиг\n");vl[j]=14;break;
case 15: z[z1]=6;z1++;z[z1]=7;v++;
printf("\tЗаменить(C,C1)\tСдвиг\n");vl[j]=15;break;
case 16: z[z1]=5;v++;
printf("\tЗаменить(В)\tСдвиг\n");vl[j]=16;break;
case 17: z[z1]=6;z1++;z[z1]=7;v++;
printf("\tЗаменить(C,C1)\tСдвиг\n");vl[j]=17;break;
case 18: z[z1]=8;v++;
printf("\tЗаменить(C2)\tСдвиг\n");vl[j]=18;break;
case 19: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=19;break;
case 20: z[z1]=7;v++;
printf("\tЗаменить(C1)\tСдвиг\n");vl[j]=20;break;
case 21: z[z1]=7;v++;
printf("\tЗаменить(C1)\tСдвиг\n");vl[j]=21;break;
case 22: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=22;break;
case 23: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=23;break;
case 24: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=24;break;
case 25: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=25;break;
case 26: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=26;break;
case 27: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=27;break;
case 28: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=28;break;
case 29: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=29;break;
case 30: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=30;break;
case 31: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=31;break;
case 32: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=32;break;
case 33: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=33;break;
case 34: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=34;break;
case 35: z[z1]=4;z1++;z[z1]=1;v++;
printf("\tЗаменить(В3,В)\tСдвиг\n");vl[j]=35;break;
case 36: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=36;break;
case 37: z1--;
printf("\tВытолкнуть\tДержать\n");vl[j]=37;break;
case 38: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=38;break;
case 39: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=39;break;
case 40: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=40;break;
case 41: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=41;break;
case 42: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=42;break;
case 43: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=43;break;
case 44: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=44;break;
case 45: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=45;break;
case 46: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=46;break;
case 47: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=47;break;
case 48: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=48;break;
case 49: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=49;break;
case 50: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=50;break;
case 51: z[z1]=4;z1++;z[z1]=1;v++;
printf("\tЗаменить(В3,В)\tСдвиг\n");vl[j]=51;break;
case 52: z[z1]=5;z1++;z[z1]=1;v++;
printf("\tЗаменить(В,В)\tСдвиг\n");vl[j]=52;break;
case 53: z1--;
printf("\tВытолкнуть\tДержать\n");vl[j]=53;break;
case 54: z[z1]=9;z1++;z[z1]=2;v++;
printf("\tЗаменить(S,В1)\tСдвиг\n");vl[j]=54;break;
case 55: z[z1]=9;z1++;z[z1]=3;v++;
printf("\tЗаменить(S,В2)\tСдвиг\n");vl[j]=55;break;
case 56: z[z1]=9;z1++;z[z1]=7;v++;
printf("\tЗаменить(S,C1)\tСдвиг\n");vl[j]=56;break;
case 57: z[z1]=9;z1++;z[z1]=7;v++;
printf("\tЗаменить(S,C1)\tСдвиг\n");vl[j]=57;break;
case 58: z[z1]=0;v++;
printf("\tЗаменить(S)\tСдвиг\n");vl[j]=58;break;
case 59: z1--;
printf("\tВытолкнуть\tДержать\n");vl[j]=59;break;
case 60: printf("ДОПУСТИТЬ\n");i=1;vl[j]=60;break;
case 0: printf("Отвергнуть\n");i=2;vl[j]=0;break;
}
if(i==1|i==2)