44 小組詞法分析

2022-05-26 04:24:08 字數 1611 閱讀 5558

#include

#include

char input[200];//存放輸入字串

char token[5];//存放構成單詞符號的字串

char ch; //存放當前讀入字元

int p; //input下標

int fg; //switch標記

int num; //存放整形值

//二維字元陣列,存放關鍵字

char index[6][6]=;

main()

while(ch!='#');

p=0;

do

}while(fg!=0);

getch(); //用於讓程式停留在顯示頁面

} /*詞法掃瞄程式:*/

int scaner()

token[m++]='\0';

ch=input[--p];

fg=10;

for(n=0;n<6;n++)

if(strcmp(token,index[n])==0)//strcmp()函式可比較兩個字串,相等時返回0 }

//數字處理流程 (這裡不懂)

else if((ch<='9'&&ch>='0'))

ch=input[--p];

fg=11;

} //運算子界符處理流程

else

switch(ch)

else if(ch=='=') //產生<=

else

break;

case '>':

token[m++]=ch;

ch=input[p++];

if(ch=='=') //產生》=

else //產生》

break;

case ':':

token[m++]=ch;

ch=input[p++];

if(ch=='=') //產生:=

else //產生:

break;

case '+':fg=13;token[0]=ch;break;

case '-':fg=14;token[0]=ch;break;

case '*':fg=15;token[0]=ch;break;

case '/':fg=16;token[0]=ch;break;

case ':=':fg=18;token[0]=ch;break;

case '<>':fg=21;token[0]=ch;break;

case '<=':fg=22;token[0]=ch;break;

case '>=':fg=24;token[0]=ch;break;

case '=':fg=25;token[0]=ch;break;

case ';':fg=26;token[0]=ch;break;

case '(':fg=27;token[0]=ch;break;

case ')':fg=28;token[0]=ch;break;

case '#':fg=0;token[0]=ch;break;

default:fg=-1; } }