#include <stdio.h>
#include <conio.h>
#include <ctype.h>
char buffer[30];//For storing the input string
int i=0;//index into the array of input string
void S();
void E();
void T();
void T1();
void F();
void A();
void E1();
void S()
{
printf("\nThe Production S => A=E is used"); A();
if(buffer[i]=='=')
{
printf("\n......Match the terminal ="); i++;
E();
}
else
{
}
}
void A()
{
{
printf("\n......Match the terminal %c",buffer
[i
]); i++;
}
else
{
}
}
void E()
{
printf("\nThe Production E => T E1 is used"); T();
E1();
}
void E1()
{
if(buffer[i]=='+')
{
printf("\nThe production E1 => +T E1 is used"); printf("\n......Match the terminal +"); i++;
T();
E1();
}
else
printf("\nThe production E1 => <Epsilon> is used"); }
void T()
{
printf("\nThe Production T => F T1 is used"); F();
T1();
}
void T1()
{
if(buffer[i]=='*')
{
printf("\nThe production T1 => *F T1 is used"); printf("\n......Match the terminal *"); i++;
F();
T1();
}
else
printf("\nThe production T1 => <Epsilon> is used"); }
void F()
{
if(buffer[i]=='(')
{
printf("\nThe production F => (E) is used"); printf("\n......Match the terminal ("); i++;
E();
if(buffer[i]==')')
{
printf("\n.....Match the terminal )"); i++;
}
else
{
}
return;
}
if(buffer[i]=='a')
{
printf("\nThe production F => a is used"); printf("\n......Match the terminal a"); i++;
return;
}
if(buffer[i]=='b')
{
printf("\nThe production F => b is used"); printf("\n......Match the terminal b"); i++;
return;
}
}
void main()
{
clrscr();
printf("\nEnter input string:"); S();
printf("\nIt is a valid string"); }
I2luY2x1ZGUgPHN0ZGlvLmg+IAojaW5jbHVkZSA8Y29uaW8uaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgpjaGFyIGJ1ZmZlclszMF07Ly9Gb3Igc3RvcmluZyB0aGUgaW5wdXQgc3RyaW5nCmludCBpPTA7Ly9pbmRleCBpbnRvIHRoZSBhcnJheSBvZiBpbnB1dCBzdHJpbmcKdm9pZCBTKCk7CnZvaWQgRSgpOwp2b2lkIFQoKTsKdm9pZCBUMSgpOwp2b2lkIEYoKTsKdm9pZCBBKCk7CnZvaWQgRTEoKTsKIHZvaWQgUygpCiAgIHsKICAgICAgcHJpbnRmKCJcblRoZSBQcm9kdWN0aW9uIFMgPT4gQT1FICBpcyB1c2VkIik7CiAgICAgIEEoKTsKICAgICAgaWYoYnVmZmVyW2ldPT0nPScpCiAgICB7CiAgICAgICBwcmludGYoIlxuLi4uLi4uTWF0Y2ggdGhlIHRlcm1pbmFsID0iKTsKICAgICAgIGkrKzsKICAgICAgIEUoKTsKICAgIH0KICAgICAgZWxzZQogICAgewogICAgICAgcHJpbnRmKCJcbkVycm9yIENvbmRpdGlvbiAiKTsKICAgICAgIGV4aXQoKTsKICAgIH0KICAgIH0KICB2b2lkIEEoKQogICAgewogICAgICAgaWYoaXNhbHBoYShidWZmZXJbaV0pKQogICAgICB7CiAgICAgICAgIHByaW50ZigiXG4uLi4uLi5NYXRjaCB0aGUgdGVybWluYWwgJWMiLGJ1ZmZlcltpXSk7CiAgICAgICAgIGkrKzsKICAgICAgfQogICAgICAgZWxzZQogICAgICB7CiAgICAgICAgIHByaW50ZigiXG5FcnJvciBjb25kaXRpb24iKTsKICAgICAgICAgZXhpdCgpOwogICAgICB9CiAgICB9CiB2b2lkIEUoKQogICB7CiAgICAgcHJpbnRmKCJcblRoZSBQcm9kdWN0aW9uIEUgPT4gVCBFMSBpcyB1c2VkIik7CiAgICAgVCgpOwogICAgIEUxKCk7CiAgIH0KIHZvaWQgIEUxKCkKICAgewogICAgICBpZihidWZmZXJbaV09PScrJykKICAgICB7CiAgICAgICAgcHJpbnRmKCJcblRoZSBwcm9kdWN0aW9uICBFMSA9PiArVCBFMSBpcyB1c2VkIik7CiAgICAgICAgcHJpbnRmKCJcbi4uLi4uLk1hdGNoIHRoZSB0ZXJtaW5hbCArIik7CiAgICAgICAgaSsrOwogICAgICAgIFQoKTsKICAgICAgICBFMSgpOwogICAgIH0KICAgICAgZWxzZQogICAgIHByaW50ZigiXG5UaGUgcHJvZHVjdGlvbiBFMSA9PiA8RXBzaWxvbj4gaXMgdXNlZCIpOwogICB9CnZvaWQgVCgpCiAgIHsKICAgICBwcmludGYoIlxuVGhlIFByb2R1Y3Rpb24gVCA9PiBGIFQxIGlzIHVzZWQiKTsKICAgICBGKCk7CiAgICAgVDEoKTsKICAgfQogdm9pZCAgVDEoKQogICB7CiAgICAgIGlmKGJ1ZmZlcltpXT09JyonKQogICAgIHsKICAgICAgICBwcmludGYoIlxuVGhlIHByb2R1Y3Rpb24gIFQxID0+ICpGIFQxIGlzIHVzZWQiKTsKICAgICAgICBwcmludGYoIlxuLi4uLi4uTWF0Y2ggdGhlIHRlcm1pbmFsICoiKTsKICAgICAgICBpKys7CiAgICAgICAgRigpOwogICAgICAgIFQxKCk7CiAgICAgfQogICAgICBlbHNlCiAgICAgcHJpbnRmKCJcblRoZSBwcm9kdWN0aW9uIFQxID0+IDxFcHNpbG9uPiBpcyB1c2VkIik7CiAgIH0KICB2b2lkIEYoKQogICAgewogICAgICAgaWYoYnVmZmVyW2ldPT0nKCcpCiAgICAgewogICAgICAgIHByaW50ZigiXG5UaGUgcHJvZHVjdGlvbiAgRiA9PiAoRSkgaXMgdXNlZCIpOwogICAgICAgIHByaW50ZigiXG4uLi4uLi5NYXRjaCB0aGUgdGVybWluYWwgKCIpOwogICAgICAgIGkrKzsKICAgICAgICBFKCk7CiAgICAgICAgaWYoYnVmZmVyW2ldPT0nKScpCiAgICAgICAgewogICAgICAgICAgIHByaW50ZigiXG4uLi4uLk1hdGNoIHRoZSB0ZXJtaW5hbCApIik7CiAgICAgICAgICAgaSsrOwogICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJcbkVycm9yIGNvbmRpdGlvbiIpOwogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgIGlmKGJ1ZmZlcltpXT09J2EnKQogICAgIHsKICAgICAgICAgIHByaW50ZigiXG5UaGUgcHJvZHVjdGlvbiAgRiA9PiBhIGlzIHVzZWQiKTsKICAgICAgICAgIHByaW50ZigiXG4uLi4uLi5NYXRjaCB0aGUgdGVybWluYWwgYSIpOwogICAgICAgICAgaSsrOwogICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgIGlmKGJ1ZmZlcltpXT09J2InKQogICAgIHsKICAgICAgICAgIHByaW50ZigiXG5UaGUgcHJvZHVjdGlvbiAgRiA9PiBiIGlzIHVzZWQiKTsKICAgICAgICAgIHByaW50ZigiXG4uLi4uLi5NYXRjaCB0aGUgdGVybWluYWwgYiIpOwogICAgICAgICAgaSsrOwogICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgIHByaW50ZigiXG5FcnJvciBjb25kaXRpb24iKTsKICAgICAgIGV4aXQoKTsKICAgfQp2b2lkIG1haW4oKQogewogICBjbHJzY3IoKTsKICAgcHJpbnRmKCJcbkVudGVyIGlucHV0IHN0cmluZzoiKTsKICAgZ2V0cyhidWZmZXIpOwogICBTKCk7CiAgIHByaW50ZigiXG5JdCBpcyBhIHZhbGlkIHN0cmluZyIpOwogICBnZXRjaCgpOwogfQog