Академический Документы
Профессиональный Документы
Культура Документы
#include<bits/stdc++.h>
if(state==0)
if(c=='i')
state++;
return 1;
else{
state=0;
return 0;
if(state==1)
if(c=='f')
state++;
return 1;
else{
state=0;
return 0;
if(state==2)
{
if(c==' ')
return 1;
else{
state=0;
return 0;
c=tolower(c);
if(state==0)
state++;
return 1;
else {
state=0;
return 0;
if(state==1)
{
return 1;
else {
state=0;
return 0;
if(state==0)
//state++;
return 1;
else {
return 0;
if(state==0)
state++;
return 1;
}
else
state=0;
return 0;
if(state==1)
if(c=='=')
return 1;
else
state=0;
return 0;
int main()
freopen("input.txt","r",stdin);
string s;
getline(cin,s);
int vstate=0,ostate=0,nstate=0,kstate=0;
string temp;
int vflag=1,oflag=1,nflag=1,kflag=1;
vector<pair<string,string>> tokens;
vector<pair<string,string>> symbols;
int add=1;
for(int i=0;i<s.size();i++)
char c=s[i];
temp+=s[i];
if(s[i]==' ')
if(temp.size()==0)
continue;
tokens.push_back({"keyword",temp});
else if(vflag)
string name="id"+to_string(add);
symbols.push_back({name,temp});
add++;
tokens.push_back({name,to_string(add-1)});
else if(oflag)
if(temp=="> ")
temp="GT";
temp="LT";
tokens.push_back({"relop",temp});
else if(nflag)
{
tokens.push_back({"number",temp});
temp="";
vstate=0,ostate=0,nstate=0,kstate=0;
vflag=1,oflag=1,nflag=1,kflag=1;
else
if(vflag)
vflag=variable(c,vstate);
if(oflag)
oflag=op(c,ostate);
if(nflag)
nflag=number(c,nstate);
if(kflag)
kflag=keyword(c,kstate);
cout<<"Tokens:-\n\n";
for(auto v:tokens)
cout<<v.first<<" "<<v.second<<"\n";
cout<<"\n";
cout<<"Symbol Table:-\n\n";
for(auto v:symbols)
cout<<v.first<<" "<<v.second<<"\n";
}
return 0;
}I/O: