본문내용
suffix(q);
if (!exist_u_prefix_p (u, p) ) dead_end = 1;
else if (-1 == (j = find_r_num (nonterminal, i)))//다른규칙이 있는지를 찾는다.
dead_end = 1;
else if (dead_end == 0) {
qi.s_form = q;
qi.r_num = j;
push (qi, stack);
q = strncat(u, ruletable[j].RHS, strlen(ruletable[j].RHS));//compose_new_sentential_form (u, ruletable[j].RHS, v);
q =strncat(q, v, strlen(v));//compose_new_sentential_form (u, ruletable[j].RHS, v);
i = -1;
}
}
while (!(dead_end || all_terminal(q)));
}
while (!(strcmp(q, p) == 0 || (stack_top == -1)));
if (strcmp(q,p) == 0) {
for ( i=stack_top ; i>0 ; i-- ) {
qi = pop(stack);//stack에서 initial을 빼 qi에 넣는다.
q = qi.s_form;//qi의 sentential form부분은 q에
i = qi.r_num;
printf("\nSeintential form : %s, Rule Number : %d \n", q, i);
}
}
else {
printf("Sorry...Retry input other string");
}
}
if (!exist_u_prefix_p (u, p) ) dead_end = 1;
else if (-1 == (j = find_r_num (nonterminal, i)))//다른규칙이 있는지를 찾는다.
dead_end = 1;
else if (dead_end == 0) {
qi.s_form = q;
qi.r_num = j;
push (qi, stack);
q = strncat(u, ruletable[j].RHS, strlen(ruletable[j].RHS));//compose_new_sentential_form (u, ruletable[j].RHS, v);
q =strncat(q, v, strlen(v));//compose_new_sentential_form (u, ruletable[j].RHS, v);
i = -1;
}
}
while (!(dead_end || all_terminal(q)));
}
while (!(strcmp(q, p) == 0 || (stack_top == -1)));
if (strcmp(q,p) == 0) {
for ( i=stack_top ; i>0 ; i-- ) {
qi = pop(stack);//stack에서 initial을 빼 qi에 넣는다.
q = qi.s_form;//qi의 sentential form부분은 q에
i = qi.r_num;
printf("\nSeintential form : %s, Rule Number : %d \n", q, i);
}
}
else {
printf("Sorry...Retry input other string");
}
}
소개글