Синтаксический анализатор. Написание синтаксического анализатора для языка ADA на любом доступном языке программирования., страница 5

j=0;

ident_cif_oper(temp);                                     //

}

*(temp)=zxz[i];

*(temp+1)=zxz[i+1];

*(temp+2)='\0';

skip=1;

que[ique].i=20;

que[ique].j=18;

ique++;

Form1->ListBox1->Items->Add("(20,18)");

goto met1;

}

if (zxz[i]==zna[5]&&zxz[i+1]==zna[9])              //   <=

{

if (exist)

{

*(temp+j)='\0';                //

j=0;

ident_cif_oper(temp);          //

}

*(temp)=zxz[i];

*(temp+1)=zxz[i+1];

*(temp+2)='\0';

skip=1;

que[ique].i=20;

que[ique].j=19;

ique++;

Form1->ListBox1->Items->Add("(20,19)");

goto met1;

}

if (zxz[i]==zna[6]&&zxz[i+1]==zna[9])              // >=

{

if (exist)

{

*(temp+j)='\0';                                //

j=0;

ident_cif_oper(temp);                                     //

}

*(temp)=zxz[i];

*(temp+1)=zxz[i+1];

*(temp+2)='\0';

skip=1;

que[ique].i=20;

que[ique].j=20;

ique++;

Form1->ListBox1->Items->Add("(20,20)");

goto met1;

}

if (zxz[i]==zna[10]&&zxz[i+1]==zna[9])     //   :=

{

if (exist)

{

*(temp+j)='\0';                                //

j=0;

ident_cif_oper(temp);                                     //

}

*(temp)=zxz[i];

*(temp+1)=zxz[i+1];

*(temp+2)='\0';

skip=1;

que[ique].i=20;

que[ique].j=21;

ique++;

Form1->ListBox1->Items->Add("(20,21)");

goto met1;

}

if (zxz[i]==zna[9]&&zxz[i+1]==zna[6])           //  =>

{

if (exist)

{

*(temp+j)='\0';

j=0;

ident_cif_oper(temp);

}

*(temp)=zxz[i];

*(temp+1)=zxz[i+1];

*(temp+2)='\0';

skip=1;

que[ique].i=20;

que[ique].j=22;

ique++;

Form1->ListBox1->Items->Add("(20,22)");

goto met1;

}

n=typ(zxz[i]);

/*((zxz[i+1]!=zna[13])&&(zxz[i+2]!=zna[13]))||*/

if(n==bukva||n==cifra||(j!=0&&n==tck)||(j!=0&&n==pod)) //первый символ идентификатора, цифры или оператора

{

*(temp+j)=zxz[i];

j++;

exist=1;   //если есть что надо попознать

continue;

}

if(j!=0&&zxz[i]==' ')

{

*(temp+j)='\0';

j=0;

//MessageBox(NULL,temp, "Help",MB_OK);

ident_cif_oper(temp);

exist=0;

continue;

}

if(n==znak)

{

if (j==0)

{

*(temp)=zxz[i];

*(temp+1)='\0'; //j++;        ///!!!!!!!!!!!!!!!!delete

printznak(zxz[i]);

goto met1;

}

*(temp+j)='\0';

j=0;

//MessageBox(NULL,temp, "Help",MB_OK);

ident_cif_oper(temp);

exist=0;

//char buf[2];

//sprintf(buf,"%c",zxz[i]);

//MessageBox(NULL,buf, "Help",MB_OK);

printznak(zxz[i]);

continue;

}

met1:

//skip=0;

}

if(j!=0)

{

*(temp+j)='\0';

//MessageBox(NULL,temp, "Help",MB_OK);

ident_cif_oper(temp);

exist=0;

}                   

delete []temp;

}

//--------------------------------------------------------------------------//--------------------------------------------------------------------------//Открытие файла

void __fastcall TForm1::N3Click(TObject *Sender)

{

ique=0;

id=0;

co=0;

char *temp;

int i=0;

if (OpenDialog1->Execute())

{

int Length = 4;

while(Length < OpenDialog1->FileName.Length())

{

if(MidStr(OpenDialog1->FileName, OpenDialog1->FileName.Length() - Length, 1) == "\\")

break;

else

Length++;

}

Edit1->Text = LeftStr(OpenDialog1->FileName,OpenDialog1->FileName.Length() - Length) + RightStr(OpenDialog1->FileName, Length);

Form1->Memo1->Lines->LoadFromFile(Edit1->Text.c_str());

}

}

//--------------------------------------------------------------------------void __fastcall TForm1::N4Click(TObject *Sender)

{

Form1->Close();

}

//--------------------------------------------------------------------------void __fastcall TForm1::N6Click(TObject *Sender)

{

// MessageBox(NULL, "ЛЕКСИЧЕСКИЙ АНАЛИЗ", "Help",MB_OK);

//Form2->ShowModal();

}

void __fastcall TForm1::N7Click(TObject *Sender)

{

clear();

int exist=0;

FILE *file,*file1;

file=fopen("Const.txt","w");