#include "stdio.h"
#include "string.h"
char prog[100],token[8],ch;
char *rwtab[6]={"begin","if","then","while","do","end"};
int syn,p,m,n,sum;
int kk;
void factor(void);
void expression(void);
void yucu(void);
void term(void);
void statement(void);
void lrparser(void);
void scaner(void);
void ifblock(void);
void whileblock(void);
void judge(void);
void main(void)
{
p=kk=0;
printf("\nplease input a string (end with '#'): \n");
do
{
scanf("%c",&ch);
prog[p++]=ch;
}while(ch!='#');
p=0;
scaner();
lrparser();
//getch();
}
void lrparser(void)
{
if(syn==1) //begin
{
scaner(); /*读下一个单词符号*/
yucu(); /*调用yucu()函数;*/
if(syn==6) /*读到end,如果跟在后面的是#则结束*/
{
scaner();
if((syn==0)&&(kk==0))
printf("success!\n");
}
else
{
if(kk!=1) printf("the string haven't got a 'end'!\n");
kk=1;
}
}
else
{
printf("haven't got a 'begin'!\n");
kk=1;
}
return;
}
void yucu(void)
{
if(syn == 2) //判断if
{
ifblock();
}
if(syn == 4) //判断while
{
whileblock();
#include "string.h"
char prog[100],token[8],ch;
char *rwtab[6]={"begin","if","then","while","do","end"};
int syn,p,m,n,sum;
int kk;
void factor(void);
void expression(void);
void yucu(void);
void term(void);
void statement(void);
void lrparser(void);
void scaner(void);
void ifblock(void);
void whileblock(void);
void judge(void);
void main(void)
{
p=kk=0;
printf("\nplease input a string (end with '#'): \n");
do
{
scanf("%c",&ch);
prog[p++]=ch;
}while(ch!='#');
p=0;
scaner();
lrparser();
//getch();
}
void lrparser(void)
{
if(syn==1) //begin
{
scaner(); /*读下一个单词符号*/
yucu(); /*调用yucu()函数;*/
if(syn==6) /*读到end,如果跟在后面的是#则结束*/
{
scaner();
if((syn==0)&&(kk==0))
printf("success!\n");
}
else
{
if(kk!=1) printf("the string haven't got a 'end'!\n");
kk=1;
}
}
else
{
printf("haven't got a 'begin'!\n");
kk=1;
}
return;
}
void yucu(void)
{
if(syn == 2) //判断if
{
ifblock();
}
if(syn == 4) //判断while
{
whileblock();