📄 syn_sem.cpp
字号:
exit(-1);
}
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un 'Sinon' dans d''une instruction conditionnelle."<<endl;
exit(-1);
}
break;
default:
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un 'Finsi' a la fin d''une instruction conditionnelle."<<endl;
exit(-1);
}
}
void ea()
{
ea1();
suite_ea();
}
void suite_ea()
{
if(Type_no!=42 && Type_no!=14 && Type_no!=9 && Type_no!=40 && Type_no!=35
&& Type_no!=26 && Type_no!=27 && Type_no!=28 && Type_no!=29 && Type_no!=30
&& Type_no!=31 && Type_no!=37)
{
switch(Type_no)
{
case 22:
if(Type_no==22)
{
Type_no=LireUs();
ea1();
suite_ea();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '+' dans une EA."<<endl;
exit(-1);
}
break;
case 23:
if(Type_no==23)
{
Type_no=LireUs();
ea1();
suite_ea();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '-' dans une EA."<<endl;
exit(-1);
}
break;
default:
Erreur=true;
//cout<<no_ligne<<": ";
//cout<<"On ne reconnait pas une EA."<<endl;
//exit(-1);
}
}
}
void ea1()
{
ea2();
suite_ea1();
}
void suite_ea1()
{
if(Type_no!=42 && Type_no!=14 && Type_no!=9 && Type_no!=40 && Type_no!=35
&& Type_no!=26 && Type_no!=27 && Type_no!=28 && Type_no!=29 && Type_no!=30
&& Type_no!=31 && Type_no!=22 && Type_no!=23 && Type_no!=37)
{
switch(Type_no)
{
case 24:
if(Type_no==24)
{
Type_no=LireUs();
ea2();
suite_ea1();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '*' dans une EA."<<endl;
exit(-1);
}
break;
case 25:
if(Type_no==25)
{
Type_no=LireUs();
ea2();
suite_ea1();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '/' dans une EA."<<endl;
exit(-1);
}
break;
case 32:
Type_no=LireUs();
break;
case 33:
Type_no=LireUs();
break;
default:
Erreur=true;
//cout<<no_ligne<<": ";
//cout<<"On ne reconnait pas une EA."<<endl;
//exit(-1);
}
}
}
void ea2()
{
switch(Type_no)
{
case 34:
if(Type_no==34)
{
Type_no=LireUs();
ea();
if(Type_no==35)
{
Type_no=LireUs();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un ')' dans une EA."<<endl;
exit(-1);
}
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '(' dans une EA."<<endl;
exit(-1);
}
break;
case 22:
negatif=false;
signe(negatif);
operande();
break;
case 23:
negatif=false;
signe(negatif);
operande();
break;
case 43:
negatif=false;
signe(negatif);
operande();
break;
case 46:
negatif=false;
signe(negatif);
operande();
break;
case 45:
negatif=false;
signe(negatif);
operande();
break;
case 32:
Type_no=LireUs();
if(Type_no==43)
{
Type_no=LireUs();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un identificateur."<<endl;
exit(-1);
}
break;
case 33:
Type_no=LireUs();
if(Type_no==43)
{
Type_no=LireUs();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un identificateur."<<endl;
exit(-1);
}
break;
default:
Erreur=true;
cout<<no_ligne<<": ";
cout<<"On ne reconnait pas une EA."<<endl;
exit(-1);
}
}
void operande()
{
switch(Type_no)
{
case 43:
if(Type_no==43)
{
Type_no=LireUs();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"On ne reconnait pas un identificateur."<<endl;
exit(-1);
}
break;
case 46:
if(Type_no==46)
{
Type_no=LireUs();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"On ne reconnait pas un entier."<<endl;
exit(-1);
}
break;
default:
Erreur=true;
cout<<no_ligne<<": ";
cout<<"On ne reconnait pas une operande."<<endl;
exit(-1);
}
}
void signe(bool negatif)
{
if(Type_no!=43 && Type_no!=46)
{
switch(Type_no)
{
case 22:
if(Type_no==22)
{
Type_no=LireUs();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '+' devant une operande."<<endl;
exit(-1);
}
break;
case 23:
if(Type_no==23)
{
negatif=true;
Type_no=LireUs();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '-' devant une operande."<<endl;
exit(-1);
}
break;
default:
Erreur=true;
cout<<no_ligne<<": ";
cout<<"On ne reconnait pas une signe."<<endl;
exit(-1);
}
}
}
void condition()
{
condition1();
suite_condition();
}
void condition1()
{
condition2();
suite_condition1();
}
void suite_condition()
{
if(Type_no!=37 && Type_no!=42 && Type_no!=4 && Type_no!=9)
{
switch(Type_no)
{
case 20:
if(Type_no==20)
{
Type_no=LireUs();
condition1();
suite_condition();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un 'Ou' dans une condition."<<endl;
exit(-1);
}
break;
default:
Erreur=true;
//cout<<no_ligne<<": ";
//cout<<"On ne reconnait pas une condition."<<endl;
//exit(-1);
}
}
}
void condition2()
{
switch(Type_no)
{
case 18:
if(Type_no==18)
{
Type_no=LireUs();
condition3();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un 'Non' dans une condition."<<endl;
exit(-1);
}
break;
case 36:
condition3();
break;
case 34:
condition3();
break;
case 22:
condition3();
break;
case 23:
condition3();
break;
case 43:
condition3();
break;
case 46:
condition3();
break;
default:
Erreur=true;
cout<<no_ligne<<": ";
cout<<"On ne reconnait pas une condition."<<endl;
exit(-1);
}
}
void suite_condition1()
{
if(Type_no!=20 && Type_no!=37 && Type_no!=42 && Type_no!=4 && Type_no!=9)
{
switch(Type_no)
{
case 19:
if(Type_no==19)
{
Type_no=LireUs();
condition2();
suite_condition1();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un 'Et' dans une condition."<<endl;
exit(-1);
}
break;
default:
Erreur=true;
//cout<<no_ligne<<": ";
//cout<<"On ne reconnait pas une condition."<<endl;
//exit(-1);
}
}
}
void condition3()
{
switch(Type_no)
{
case 36:
if(Type_no==36)
{
Type_no=LireUs();
condition();
if(Type_no==37)
{
Type_no=LireUs();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un ']' a la fin d''une condition."<<endl;
exit(-1);
}
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '[' a la fin d''une condition."<<endl;
exit(-1);
}
break;
case 34:
relation();
break;
case 22:
relation();
break;
case 23:
relation();
break;
case 43:
relation();
break;
case 46:
relation();
break;
default:
Erreur=true;
cout<<no_ligne<<": ";
cout<<"On ne reconnait pas une condition."<<endl;
exit(-1);
}
}
void relation()
{
ea();
suite_relation();
}
void suite_relation()
{
switch(Type_no)
{
case 30:
if(Type_no==30)
{
Type_no=LireUs();
ea();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '==' dans une relation."<<endl;
exit(-1);
}
break;
case 31:
if(Type_no==31)
{
Type_no=LireUs();
ea();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '!=' dans une relation."<<endl;
exit(-1);
}
break;
case 27:
if(Type_no==27)
{
Type_no=LireUs();
ea();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '<' dans une relation."<<endl;
exit(-1);
}
break;
case 26:
if(Type_no==26)
{
Type_no=LireUs();
ea();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '>' dans une relation."<<endl;
exit(-1);
}
break;
case 28:
if(Type_no==28)
{
Type_no=LireUs();
ea();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '>=' dans une relation."<<endl;
exit(-1);
}
break;
case 29:
if(Type_no==29)
{
Type_no=LireUs();
ea();
}
else
{
Erreur=true;
cout<<no_ligne<<": ";
cout<<"Il manque un '<=' dans une relation."<<endl;
exit(-1);
}
break;
default:
Erreur=true;
cout<<no_ligne<<": ";
cout<<"On ne reconnait pas une relation."<<endl;
exit(-1);
}
}
/*************************************************************/
int main()
{
int n=100;
cout<<"Entrez le nom du fichier,S'il vous plait: "<<endl;
cin.getline(FichierNom,n);
fp=fopen(FichierNom,"r");
while (fp==NULL)
{
cout<<"Pardon,Le fichier n'est existe!"<<endl;
cout<<"Entrez un autre nom du fichier: "<<endl;
cin.getline(FichierNom,n);
fp=fopen(FichierNom,"r");
}
if((fp1=fopen("sortie.txt","w"))==NULL)
{
printf("can not open outfile\n");
return -1;
}
Ensource();
fclose(fp);
cout<<endl;
Debut_chercher();
Fbuffer=1;
programme();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -