Use the logic in that program to design your own Recursive Descent parser in Cfor the following grammar:S →aABA →Abc | bB →d Make sure that you choose at least two strings that pass the grammar and onestring that does not pass the grammar just like I did in the model program.   /* Recursive Descent Parser for the Expression Grammar:S → (L) |aL' →,SL'|εL → SL'Valid inputs: (a,(a,a)) and (a,(a,(a,a),(a,a)))Invalid inputs:(aa,a)*/ #include <stdio.h>#include <string.h>int S(), Ldash(), L();char *ip;char string[50]; int main() {  printf("Enter the string\n");  scanf("%s",string);  ip = string;  printf("\n\nInput\t\tAction\n ------------------------------\n");  if (S())  {    printf("\n------------------------------\n");     printf("\n String is successfully parsed\n");  }  else  {    printf("\n------------------------------\n");     printf("Error in parsing string\n");  }} int L(){  printf("%s\t\tL -> SL'\n", ip);  if (S())  {    if (Ldash())    {      return 1;    }    else    return 0;  }  else   return 0;} int Ldash(){  if (*ip == ',')  {    printf("%s\t\tL' -> ,SL'\n", ip);  ip++;  if (S())  {    if (Ldash())    {      return 1;    }    else    return 0;  }    else    return 0;  }  else  {    printf("%s\t\tL' -> ε\n", ip);    return 1;  }} int S(){  if (*ip == '(') {  printf("%s\t\tS →(L) \n", ip); ip++;  if (L())  {   if (*ip == ')')  {  ip++;  return 1;  }  else   return 0; }  else return 0; }  else if (*ip == 'a') {  ip++;  printf("%s\t\tS →a \n", ip);  return 1; }else return 0;}

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Use the logic in that program to design your own Recursive Descent parser in C
for the following grammar:
S →aAB
A →Abc | b
B →d


Make sure that you choose at least two strings that pass the grammar and one
string that does not pass the grammar just like I did in the model program.

 

/* Recursive Descent Parser for the Expression Grammar:
S → (L) |a
L' →,SL'|ε
L → SL'
Valid inputs: (a,(a,a)) and (a,(a,(a,a),(a,a)))
Invalid inputs:(aa,a)
*/

#include <stdio.h>
#include <string.h>
int S(), Ldash(), L();
char *ip;
char string[50];

int main() 
{
  printf("Enter the string\n");
  scanf("%s",string);
  ip = string;
  printf("\n\nInput\t\tAction\n ------------------------------\n");
  if (S())
  {
    printf("\n------------------------------\n");
     printf("\n String is successfully parsed\n");
  }
  else
  {
    printf("\n------------------------------\n");
     printf("Error in parsing string\n");
  }
}

int L()
{
  printf("%s\t\tL -> SL'\n", ip);
  if (S())
  {
    if (Ldash())
    {
      return 1;
    }
    else
    return 0;
  }
  else 
  return 0;
}

int Ldash()
{
  if (*ip == ',')
  {
    printf("%s\t\tL' -> ,SL'\n", ip);
  ip++;
  if (S())
  {
    if (Ldash())
    {
      return 1;
    }
    else
    return 0;
  }
    else
    return 0;
  }
  else
  {
    printf("%s\t\tL' -> ε\n", ip);
    return 1;
  }
}

int S()
{
  if (*ip == '(')
 {
  printf("%s\t\tS →(L) \n", ip);
 ip++;
  if (L())
  {
   if (*ip == ')')
  {
  ip++;
  return 1;
  }
  else
   return 0;
 }
  else
 return 0;
 }
  else if (*ip == 'a')
 {
  ip++;
  printf("%s\t\tS →a \n", ip);
  return 1;
 }
else
 return 0;
}

 

Expert Solution
steps

Step by step

Solved in 2 steps with 1 images

Blurred answer
Knowledge Booster
Sorting
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education