Can someone help me here. The question is of RDP that will read string from file
ID: 663274 • Letter: C
Question
Can someone help me here. The question is of RDP that will read string from file and detect whether or string is in language. The code for parenthesis is missing. If someone could help implement code for parenthesis i would appreciate it. i.e. where it says P -> I | L | UI | UL | (E) there should be code for parenthesis and i tried all possible way but could not figure what is going wrong. I would appreciate any help. For e.g. if i have input.txt file that has (a+b) or (a) or ( or ) or (1+2) or (+-) then it should say string is in language.
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int A();
int E(); //changing
int P(int k); //changing
int L();
int I(); //not changing
int UI(); //not changing
int UL(); //not hanging
string data;
int i,j;
int main()
{
ifstream infile;
infile.open("input.txt");
while(!infile.eof())
{
i=0;
j=0;
infile >> data;
if(A()!=-1&&i==data.length())
cout<<"The string "<
int A()
{
//cout<<" A()";
if(I()!=-1)
{
i=j;
if(data[i++]=='=')
{
if(E()!=-1)
return 0;
}else
{
i=0;
if(E()!=-1)
return 0;
}
}else
{
i=0;
if(E()!=-1)
return 0;
}
return -1;
}
int E()
{
//cout<<" E()";
if(P(-1)!=-1)
{
if(i==data.length())
return 0;
else
{
if(data[i]=='+'||data[i]=='-'||data[i]=='*'||data[i]=='/')
{
i++;
if(P(1)!=-1)
return 0;
}
}
}
return -1;
}
int P(int k)
{
//cout<<" P()";
if(I()!=-1)
{
if(k==-1)
{
i=j;
return 0;
}
else
{
if(j==data.length())
{
i=j;
return 0;
}
else
return E();
}
}
else if(L()!=-1)
{
if(k==-1)
{
i=j;
return 0;
}
else
{
if(j==data.length())
{
i=j;
return 0;
}
else
return E();
}
}
else if(UI()!=-1)
{
if(k==-1)
{
i=j;
return 0;
}
else
{
if(j==data.length())
{
i=j;
return 0;
}
else
return E();
}
}
else if(UL()!=-1)
{
if(k==-1)
{
i=j;
return 0;
}
else
{
if(j==data.length())
{
i=j;
return 0;
}
else
return E();
}
}
/*else if(P(-1)!=-1)
{
if(data[i]=='+'||data[i]=='-'||data[i]=='*'||data[i]=='/')
{
i++;
if(P(1)!=-1)
return 0;
}
}*/
else if(k==1)
return E();
else
return -1;
return -1;
}
int L()
{
//cout<<" L()";
j=i;
while(j {
if(data[j]>='0'&&data[j]<='9')
j++;
else
break;
}
if(j==i)
return -1;
else
return 0;
}
int I()
{
//cout<<" I()";
j=i;
while(j {
if(data[j]>='a'&&data[j]<='z')
j++;
else
break;
}
if(j==i)
return -1;
else
return 0;
}
int UI()
{
//cout<<" UI()";
j=i;
int k=i;
if(j {
j++;
i=j;
if(I()!=-1)
{
i=j;
return 0;
}
}
i=k;
return -1;
}
int UL()
{
//cout<<" UL()";
j=i;
int k=i;
if(j {
j++;
i=j;
if(L()!=-1)
{
i=j;
return 0;
}
}
i=k;
return -1;
}
Explanation / Answer
The program is good for it.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.