#include <stdio.h> #define SUCCESS 1 #define FAILED 0 const char *cursor; char input[64]; int E(), Edash(), T(), Tdash(), F(); int main() { printf("Enter the string: "); scanf("%s", input); cursor = input; printf("\nInput Action\n"); printf("-------------------------------\n"); if (E() && *cursor == '\0') { printf("-------------------------------\n"); printf("String is successfully parsed\n"); } else { printf("-------------------------------\n"); printf("Error in parsing String\n"); } return 0; } int E() { printf("%-15s E -> T E'\n", cursor); return T() && Edash(); } int Edash() { if (*cursor == '+') { printf("%-15s E' -> + T E'\n", cursor); cursor++; return T() && Edash(); } printf("%-15s E' -> ε\n", cursor); return SUCCESS; } int T() { printf("%-15s T -> F T'\n", cursor); return F() && Tdash(); } int Tdash() { if (cursor == '') { printf("%-15s T' -> * F T'\n", cursor); cursor++; return F() && Tdash(); } printf("%-15s T' -> ε\n", cursor); return SUCCESS; } int F() { if (*cursor == '(') { printf("%-15s F -> ( E )\n", cursor); cursor++; if (E() && *cursor == ')') { cursor++; return SUCCESS; } return FAILED; } else if (*cursor == 'i') { printf("%-15s F -> i\n", cursor); cursor++; return SUCCESS; } return FAILED; }