一,詞法分析器
作用:讀取源程式的輸入字元、將他們組成詞素,生成並輸出乙個詞法單元序列
二,設計原理
1)c程式語言的符號分類:關鍵字、識別符號、常數、運算子、界符
2)詞法分析器的二元輸出:《單詞種別,單詞符號屬性值》
3)正規式和狀態轉換圖
4)程式說明:
1>main 中開啟原始碼檔案,從第乙個字元流讀取
2>如果第乙個是字元,則交給letterprocess(str); 處理
3>如果第乙個是數字,則交給numberprocess(str); 處理
4>如果第乙個是數字,則交給otherprocess(str);處理
5>注意上述過程中,file *fp每讀取乙個詞素,fp都會移動到下乙個詞素。對於空格的處理:isspace(ch)檢查引數c是否為空格字元,也就是判斷是否為空格('')、定位字元
('\t')、cr('\r')、換行('\n')、垂直定位字元('\v')或
翻頁('\f')的情況
這個程式輸出結果情況彙總:關鍵字、算術運算子、關係運算子、分割符號、特殊符號、注釋符號、邏輯運算子、非法符號
三,程式原始碼
#include #include #include #include #include #include #define null 0
file *fp;
char ch;
char *keyword[34]=;
char *operatornum[6]=;
char *comparison[8]=;
char *interpunction[8]="};
char *biaoshifu[6]=;//特殊識別符號
char *zhushifu[3]=;//注釋符
char *luoji[3]=;//邏輯運算子
bool search(char searchstr,int wordtype)//符號匹配
break;
case 2:
for(i=0;i<=5;i++)
break;
case 3:
for(i=0;i<=7;i++)
break;
case 4:
for(i=0;i<=7;i++)
break;
case 5:
for(i=0;i<=5;i++)
break;
case 6:
for(i=0;i<=2;i++)
break;
case 7:
for(i=0;i<=2;i++)
break;
}return false;
}char letterprocess (char ch)//字母處理函式
letter[i+1]='\0';
if (search(letter,1))
else
return(ch);
}char numberprocess(char ch)//數字處理程式
if(isalpha(ch)!=0)//數字後面是字元
num[i+1]='\0';
printf("錯誤!非法識別符號:%s\n",num);
goto u;
} num[i+1]='\0';
printf("
u: return(ch);
}char otherprocess(char ch)//其他處理程式
while ((isspace(ch)==0)&&(isalnum(ch)==0))
other[i+1]='\0';
if (search(other,2))
printf("
else if (search(other,3))
printf("
else if (search(other,4))
printf("
else if (search(other,5))
printf("
else if (search(other,6))
printf("
else if (search(other,7))
printf("
else
printf("錯誤!非法字元:%s\n",other);
u: return (ch);
}int main ()
};printf("詞法分析結束,謝謝使用!\n");
//printf("點任意鍵退出!\n");
}//c=getch();
return 0;
}
編譯原理 詞法分析器
1 從源程式檔案中讀入字元。2 統計行數和列數用於錯誤單詞的定位。3 刪除空格類字元,包括回車 製表符空格。4 按拼寫單詞,並用 內碼,屬性 二元式表示。屬性值 token 的機內表示 5 如果發現錯誤則報告出錯 6 根據需要是否填寫識別符號表供以後各階段使用 int tag 0 設立標誌 一開始本...
編譯原理(一)詞法分析器
詞法分析器的功能是輸入源程式,輸出單詞符號。單詞符號是乙個程式語言的基本語法符號。程式語言的符號一般可以定義為以下幾種 關鍵字 是由程式語言定義的具有固定意義的識別符號,也稱這些識別符號為保留字或基本字。例如 c 語言中的define do for while if else等 識別符號用來表示各種...
編譯原理,例 詞法分析器
編譯原理課作業要求自己寫乙個詞法分析器,我嘗試寫了一下。詞法分析 電腦科學中將字串行轉換為單詞 token 序列的過程。進行詞法分析的程式或者函式叫作詞法分析器 lexical analyzer 也叫掃瞄器 scanner 詞法分析器一般以函式的形式存在,供語法分析器呼叫。完成詞法分析任務的程式稱為...