1431递归下降语法分析程序设计

#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 english(){
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("无错误");
}
else
printf("%c错误",curr);

}

void main()
{ char ch;
int i=0;
printf("请输入需要分析的语法:(#结束)\n");

do{
scanf("%c",&ch);
LL1[i] = ch;
i++;
}while(ch != ‘#‘);
scaner();
checking();

}

void scaner(){ //用于读取源函数的下一个字符

N++;
if(LL1[N] == ‘ ‘){
N++;
}else
{
curr = LL1[N];
}
}

时间: 2024-12-05 16:08:26

1431递归下降语法分析程序设计的相关文章

1223 递归下降语法分析程序设计

#include<stdio.h> #include<string.h> char str[10]; int index=0; void E(); //E->TX; void X(); //X->+TX|-TX| e void T(); //T->FY void Y(); //Y->*FY |/fy| e void F(); //F->(E) | id int id(); //id int main() { int len; int m; printf

实验四递归下降语法分析程序设计

#include<stdio.h> #include<string> char str[10];   //记录要分析的字符串 int x=0;        //记录第一个字符 void E();           void X();           void T();           void Y(); void F(); int main() {     int len;     printf("请输入算数表达式:");     scanf(&qu

1231递归下降语法分析程序设计

#include<stdio.h> #include<string> char str[10]; //记录要分析的字符串 int x=0; //记录第一个字符 void E(); void X(); void T(); void Y(); void F(); int main() { int len; printf("请输入算数表达式:"); scanf("%s",str); len=strlen(str); str[len]='#'; st

1217 实验四 递归下降语法分析程序设计

#include<stdio.h> #include<string> char str[10]; int index=0; void E(); //E->TX; void X(); //X->+TX | e void T(); //T->FY void Y(); //Y->*FY | e void F(); //F->(E) | i int main() { int len; printf("请输入表达式:"); scanf(&qu

1217实验四 递归下降语法分析程序设计

#include <stdio.h>#include<dos.h>#include<stdlib.h>#include<string.h>char a[50] ,b[50],d[200],e[10];char ch;int n1,i1=0,flag=1,n=5;int total=0;int E();int E1();int T();int G();int S();int F();void input();void input1();void output(

递归下降语法分析程序设计

#include<stdio.h>#include<string.h>char prog[800],token[20];char ch;int sym,syn,p,m,n,sum;char *rwtab[6]={"begin","if","then","while","do","end"};void E();void Ee();void T();void Tt()

实验四 递归下降语法分析程序设计

#include<stdio.h> #include <ctype.h> #define ok 1 #define error 0 #define MAXREGLUARLONG 30 #define MAXSTATELONG 30 #define MAXCAHRSLONG 30 typedef int state; int iCurrentState=0; //初态以1开始 int iPreState=0; int iLastForkState=0; int iForkState=

12.16实验四 递归下降语法分析程序设计

#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 english(){ if(curr >= 'a' && curr<='z' || c

1217递归下降语法分析程序设计

#include<stdio.h> #include<string> char str[10]; //记录要分析的字符串 int x=0; //记录第一个字符 void E(); void X(); void T(); void Y(); void F(); int main() { int len; printf("请输入算数表达式:"); scanf("%s",str); len=strlen(str); str[len]='#'; st