tab[69].terms[0]=1; tab[69].terms[1]=0; tab[69].terms[2]=0;
tab[69].n=1; tab[69].jump=0; tab[69].accept=1; tab[69].stack=0; tab[69].ret=1; tab[69].err=1;
tab[70].terms[0]=1; tab[70].terms[1]=0; tab[70].terms[2]=1;
tab[70].n=1; tab[70].jump=0; tab[70].accept=1; tab[70].stack=0; tab[70].ret=1; tab[70].err=1;
tab[71].terms[0]=1; tab[71].terms[1]=0; tab[71].terms[2]=3;
tab[71].n=1; tab[71].jump=0; tab[71].accept=1; tab[71].stack=0; tab[71].ret=1; tab[71].err=1;
tab[72].terms[0]=1; tab[72].terms[1]=0; tab[72].terms[2]=4;
tab[72].n=1; tab[72].jump=0; tab[72].accept=1; tab[72].stack=0; tab[72].ret=1; tab[72].err=1;
tab[73].terms[0]=1; tab[73].terms[1]=0; tab[73].terms[2]=5;
tab[73].n=1; tab[73].jump=0; tab[73].accept=1; tab[73].stack=0; tab[73].ret=1; tab[73].err=1;
tab[74].terms[0]=1; tab[74].terms[1]=0; tab[74].terms[2]=6;
tab[74].n=1; tab[74].jump=0; tab[74].accept=1; tab[74].stack=0; tab[74].ret=1; tab[74].err=1;
}
4.4
#include <stdio.h>
#include <vector>
#include "laba3.cpp"
using namespace std;
struct four
{
int first[3];
int second[3];
int result[3];
int op;
} Four;
struct oper
{
int a,b,c;
} Oper;
vector<oper> operand;
vector<int> labels;
FILE *postfix1, *out;
void printdata(int *a)
{
if (a[0]==2) fprintf(out,"%s", Var.end[a[1]][a[2]].data);
else if (a[0]==3) fprintf(out,"%d", Con.end[a[1]][a[2]].data);
else fprintf(out,"res%d", a[2]);
}
void printd(int *a)
{
if (a[0]==2) fprintf(out,"%s", Var.end[a[1]][a[2]].data);
else if (a[0]==3) fprintf(out,"%d", Con.end[a[1]][a[2]].data);
}
void main()
{
main2();
int a,b,c, i,j,k, n=6, lab=0, stat=0;
char str[200];
// char temp;
postfix1=fopen("postfix.txt","r");
out=fopen("proga1.txt","w");
fprintf(out,"MODEL SMALL\n");
fprintf(out,"DATASEG\n\n");
for (i=0; i<52; i++)
for (j=0; j<Var.end[i].size(); j++)
fprintf(out,"%s\tDW\t0\n", Var.end[i][j].data); // печатаем инициализации переменных из таблицы
for (i=0; i<3; i++) fprintf(out,"res%d\tDW\t0\n", i); // промежуточные переменные
fprintf(out,"\nCODESEG\n");
fprintf(out,"START:\n");
fprintf(out,"MOV ax,@data\n");
fprintf(out,"MOV ds,ax\n");
fprintf(out,"MOV es,ax\n\n");
i=0;
do{
fgets(str,200,postfix1);
k=sscanf(str, "%d%d%d", &a, &b, &c); // считывание терма
}while (k<=0 && !feof(postfix1));
while(!feof(postfix1)) // Главный цикл
{
if (a==0 && b==0 && c==1) // начало цикла(while)
{
lab+=2; // две метки на цикл
labels.push_back(lab-1); // добавляем в стек
labels.push_back(lab); // номера меток для цикла
fprintf(out,"label%d:\n", lab-1);
}
if (a==1 && b==0 && c==10) // конец цикла(})
{
fprintf(out,"jmp label%d\n", labels[labels.size()-2]);
fprintf(out,"label%d:\n", labels[labels.size()-1]);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.