📄 diguifenxi.c
字号:
#include "stdio.h"
#include "string.h"
char sym;
char str[50];
int count = 0;
void procpart(void);
void vdeclar(void);
void vlist(void);
void varitab(void);
void statelist(void);
void state(void);
void variable(void);
void identifier(void);
void alpha(void);
void assigns(void);
void whiles(void);
void type(void);
void error(void);
void Scaner(void);
void expression(void);
void Scaner(){
sym = str[count++];
}
void procedure(){
if(sym=="main")
Scaner();
if(sym=='(')
identifier ();
else error();
Scaner();
if(sym==')')
Scaner();
else error();
if(sym=='{')
procpart();
else error;
if(sym=='}')
printf("right!");
}
void procpart(){
vdeclar();
statelist();
}
void vdeclar(){
vlist();
if(sym==';')
Scaner();
else error();
}
void vlist(){
/*变量说明表::==变量表:类型 |变量表:类型 ;变量说明表 */
varitab();
Scaner();
if(sym==':')
{ Scaner();
type(); }
else error();
if(sym==';')
Scaner();
vlist();
}
void type(){
if(sym=="int")
Scaner();
else if(sym=="real")
Scaner();
else if(sym=="char")
Scaner();
}
void varitab(){
variable();
Scaner();
if(sym==',')
Scaner();
varitab();
}
void statelist(){
state();
if(sym==';')
Scaner();
statelist();
}
void state(){ /*语句*/
assigns(); /*赋值语句*/
whiles();
}
void assigns(){
variable();
Scaner();
if(sym==":=")
Scaner();
expression();
}
void whiles(){
if(sym=="while")
Scaner();
if(sym=='(')
{Scaner();
rela_exp() ;}
else error();
if(sym==')')
Scaner();
else error();
}
void expression(){
if(isnum||isalpha) /*判断是数字或字母*/
Scaner();
else error();
}
void variable(){
identifier();
}
void identifier(){
/*标识符->标识符字母|标识符数字|字母*/
alpha();
}
void alpha(){
if(isalpha)
Scaner();
else if(isnum)
Scaner();
else error();
}
void error(){
printf("Error!\n");
}
void main(){
char ch; char str[20];
int i = 0; FILE *fin,*Scanin;
printf("input file name! ");
scanf("%s",Scanin);
if ((fin=fopen(Scanin,"r"))==NULL)
printf("cannt open file\n");
else
{ ch =fgetc(fin);
while(ch != '$'){
str[i++] = ch;
ch =fgetc(fin);
}
str[i++] = '$';
str[i] = '\0';
Scaner();
S();
if (sym == '$')
printf("success!\n");
else
printf("Fail!\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -