詞法分析程式

2022-06-02 06:06:08 字數 3447 閱讀 1624

一、詞法分析程式功能:

詞法分析器的功能為輸入源程式,按照構詞規則分解成一系列單詞符號。單詞是語言中具有獨立意義的最小單位,包括關鍵字、識別符號、運算子、界符和常量等

(1) 關鍵字 是由程式語言定義的具有固定意義的識別符號。例如,pascal 中的begin,end,if,while都是保留字。這些字通常不用作一般識別符號。

(2) 識別符號 用來表示各種名字,如變數名,陣列名,過程名等等。

(3) 常數 常數的型別一般有整型、實型、布林型、文字型等。

(4) 運算子 如+、-、*、/等等。

(5) 界符 如逗號、分號、括號、等等。

二、符號與種別碼對照表

三、**實現:

#include #include #include #define size 100

char prog[size],ch,token[8];

int p=0,syn,n,i;

char *keyword[6]=;//定義關鍵字陣列

void scaner();

void main()

while(ch!='#');

p=0;

do}while(syn!=0);

printf("詞法分析 成功\n");

getchar();

}void scaner()

n=0;

ch=prog[p++];

while(ch==' ')

if((ch>='a'&&ch<='z')||(ch>='a'&&ch<='z'))

while((ch>='a'&&ch<='z')||(ch>='a'&&ch<='z')||(ch>='0'&&ch<='9'));

syn=10;

for(n=0;n<6;n++)//在六個關鍵字中對比

p--;

}else if(ch>='0'&&ch<='9')//判斷輸入的是否為整數常數

while(ch>='0'&&ch<='9');

syn=11;

return;

}else

else p--;

break;

case '

ch=prog[p++];

if(ch=='>')

else if(ch=='=')

else p--;

break;

case '>':syn=23;token[0]=ch;

ch=prog[p++];

if(ch=='=')

else p--;

break;

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

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

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

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

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

default: printf("詞法分析出錯! 請檢查是否輸入非法字元\n");syn=-1;break; }}

}

四、程式執行結果截圖:

一、詞法分析程式功能:

詞法分析器的功能為輸入源程式,按照構詞規則分解成一系列單詞符號。單詞是語言中具有獨立意義的最小單位,包括關鍵字、識別符號、運算子、界符和常量等

(1) 關鍵字 是由程式語言定義的具有固定意義的識別符號。例如,pascal 中的begin,end,if,while都是保留字。這些字通常不用作一般識別符號。

(2) 識別符號 用來表示各種名字,如變數名,陣列名,過程名等等。

(3) 常數 常數的型別一般有整型、實型、布林型、文字型等。

(4) 運算子 如+、-、*、/等等。

(5) 界符 如逗號、分號、括號、等等。

二、符號與種別碼對照表

三、**實現:

#include #include #include #define size 100

char prog[size],ch,token[8];

int p=0,syn,n,i;

char *keyword[6]=;//定義關鍵字陣列

void scaner();

void main()

while(ch!='#');

p=0;

do}while(syn!=0);

printf("詞法分析 成功\n");

getchar();

}void scaner()

n=0;

ch=prog[p++];

while(ch==' ')

if((ch>='a'&&ch<='z')||(ch>='a'&&ch<='z'))

while((ch>='a'&&ch<='z')||(ch>='a'&&ch<='z')||(ch>='0'&&ch<='9'));

syn=10;

for(n=0;n<6;n++)//在六個關鍵字中對比

p--;

}else if(ch>='0'&&ch<='9')//判斷輸入的是否為整數常數

while(ch>='0'&&ch<='9');

syn=11;

return;

}else

else p--;

break;

case '

ch=prog[p++];

if(ch=='>')

else if(ch=='=')

else p--;

break;

case '>':syn=23;token[0]=ch;

ch=prog[p++];

if(ch=='=')

else p--;

break;

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

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

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

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

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

default: printf("詞法分析出錯! 請檢查是否輸入非法字元\n");syn=-1;break; }}

}

四、程式執行結果截圖:

詞法分析程式

上課沒聽啥,一邊看書,一邊做的。基本上,老師的要求是實現了,能把乙個句子 也可以是一整個程式,但還不完善,由於時間急,很多情況來不及考慮了 中的單詞項分析出它是保留字,還是識別符號,運算子等等。開始是在控制台下做得,也比較純正 lex.h ifndef lex h define lex h incl...

詞法分析程式

include include char scanin 300 scanout 300 extern int testscan char scanin 300 scanout 300 file fin,fout 指向輸入輸出檔案的指標 int main include include include...

詞法分析程式

include include void fenxi char c,char b void word char a void number char a int i 定義全域性變數i int s 1 用來記錄是否存在非法字元 main printf n void number char a 對數字字...