LR
LR
h>
#include <string.h>
#include <stdlib.h>
char stack[30];
void push(char c) {
top++;
stack[top] = c;
char pop() {
char c;
if (top != -1) {
c = stack[top];
top--;
return c;
void printstat() {
int i;
printf("\n\t\t\t $");
for (i = 0; i <= top; i++)
printf("%c", stack[i]);
void main() {
int i, j, l;
printf("\n\n\t\t LR PARSING");
scanf("%s", s1);
l = strlen(s1);
printf("\n\t\t $");
printstat();
printf(" id");
printstat();
printstat();
ch1 = pop();
printf("\n\t\t\t $");
break;
ch3 = pop();
printf("error");
exit(1);
} else {
printstat();
}
ch2 = ch1; // Assign for future operations
}
Output:
LR PARSING
$ id
$E
$E*
$E* id
$E*E
$E*E+
$E*E+ id
$E*E+E
$E*E+E
$E*E
$E