Left
unknown
c_cpp
2 years ago
1.8 kB
2
Indexable
#include<bits/stdc++.h> using namespace std; int main(){ int n; cout<<"Enter the number of productions: "; cin>>n; string s[n]; cout<<"Enter the productions: "; for(int i=0;i<n;i++){ cin>>s[i]; } for(int i=0;i<n;i++){ int flag=0; for(int j=0;j<s[i].length();j++){ if(s[i][j]==s[i][0] && s[i][j+1]=='-'){ flag=1; break; } } if(flag==1){ cout<<"Left recursion found in production "<<i+1<<endl; string temp=""; for(int j=0;j<s[i].length();j++){ if(s[i][j]=='-'){ temp=s[i].substr(j+1,s[i].length()-j-1); break; } } string temp1=""; for(int j=0;j<s[i].length();j++){ if(s[i][j]=='-'){ temp1=s[i].substr(0,j); break; } } string temp2=""; for(int j=0;j<s[i].length();j++){ if(s[i][j]=='-'){ temp2=s[i].substr(j+1,s[i].length()-j-1); break; } } string temp3=""; for(int j=0;j<s[i].length();j++){ if(s[i][j]=='-'){ temp3=s[i].substr(0,j); break; } } cout<<"The new productions are: "<<endl; cout<<temp1<<"->"<<temp<<temp1<<"'"<<endl; cout<<temp1<<"'->"<<temp2<<temp1<<"'|"<<'e'<<endl; } else{ cout<<"No left recursion found in production "<<i+1<<endl; } } return 0; }
Editor is loading...