#include <stdio.h>
Char Curr;
Char ll1[1000];
int n=0;
void Scaner ();
int digital () {//panduanshifouweishuzi
if (Curr >= ' 0 ' && curr <= ' 9 ')
{
return 1;
}
else {
return 0;
}
}
int 中文版 () {
if (Curr >= ' a ' && curr<= ' z ' | | curr >= ' a ' && curr <= ' z ')
{
return 1;
}
Else
return 0;
}
int yuansuanf () {
if (curr== ' + ' | | curr== '-' | | curr== ' * ' | | curr== '/')
{
return 1;
}
else{
return 0;
}
}
int End () {
if (curr!= ' # ') {
return 1;
}
Else
return 0;
}
int check () {
if (digital () ==1) {
Scaner ();
if (end () ==1) {
if (yuansuanf () ==1) {
return 1;
}
else if (yuansuanf () ==0) {
return 0;
}
}
else if (end () ==0) {
return 1;
}
}
return 0;
}
void checking () {
int number;
Qq:scaner ();
if (digital () ==1) {
while (curr!= ' # ') {
Number=check ();
if (number==1) {
Goto QQ;
}
else if (number==0) {
Break
}
}
}
if (number==1) {
printf ("Error free");
}
Else
printf ("%c error", Curr);
}
void Main ()
{char ch;
int i=0;
printf ("Please enter the syntax to parse: (#结束) \ n");
do{
scanf ("%c", &ch);
Ll1[i] = ch;
i++;
}while (ch! = ' # ');
Scaner ();
Checking ();
}
void Scaner () {///for reading the next character of the source function
n++;
if (ll1[n] = = ") {
n++;
}else
{
Curr = Ll1[n];
}
}
1431 Recursive descent grammar analysis program design