السلام عليكم جميعا
طلب منا الاستاذ تصميم Lexical Analyzer بسيط يقوم بقراة جملة مدخلة ويترجم اجزائها
عمل البرنامج على هذا الشكل
input string : nab39+uy=45;
والــ output سوف يكون على هذا الشكل
nab : Identifier
39 : Number
+ : Plus
uy : Identifier
= : Ass
45 : Number
; : SimiColon
التطوير االمطلوب هو ان ندخل جملة معينه مثل هذه
x2=56a+85;
x2 : identifier
= : ass
56a : Not Number
+ : Plus
; : simi
التغيير باللون الاحمر اعلاه
حاولت ان اغير الكود لكي يقوم بهذه العملية ولم اوفق
فهل من افكار
هذا الكود اللذي كتبته انا
#include<iostream.h>
void main()
{
int i,k,s;
char c;
char str[20];
cout<<"ENTER THE ASSIGN STATMENT \n";
cin>>str;
i=0;
s=i;
c=str;
while(c!=';')
{
c=str;
if((c>='a')&&(c<='z')||(c>='A')&&(c<='Z'))
{
s=i;
while((c>='a')&&(c<='z')||(c>='A')&&(c<='Z'))
{
i++;
c=str;
}
for(k=s;k<i;k++)
cout<<str[k];
cout<<" : Idrntifier\n";
}
if((c>='0')&&(c<='9'))
{
s=i;
while((c>='0')&&(c<='9'))
{
i++;
c=str;
}
for(k=s;k<i;k++)
cout<<str[k];
cout<<" : Number\n";
}
if(c=='=')
cout<<c<<" : Assigment\n";
if(c=='+')
cout<<c<<" : Plus\n";
if(c=='-')
cout<<c<<" : Subtraction\n";
if(c=='*')
cout<<c<<" : Multi\n";
if(c=='/')
cout<<c<<" : Division\n";
if(c==';')
cout<<c<<" : SimiColon\n";
i++;
}
}