天天看點

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' || curr >= 'A' && curr <= 'Z')

{

return 1;

}

else

return 0;

int yuansuanf(){

if(curr=='+'||curr=='-'||curr=='*'||curr=='/')

{

return 1;

}

else{

int end(){

if(curr!='#'){

return 1;

}

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("沒有錯誤\n");

else

printf("%c\n錯誤\n",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];

12.16_實驗四 遞歸下降文法分析程式設計
12.16_實驗四 遞歸下降文法分析程式設計