[英]This is the code of lexical analyzer can anyone explain this code in detail?
這是 c++ 中的詞法分析器代碼,任何人都可以向我解釋該代碼並告訴我如何從文件中讀取字符串
using namespace std;
function
int isKeyword(char buffer[]){
char keywords[32][10] = {"auto","break","case","char","const","continue","default",
"do","double","else","enum","extern","float","for","goto",
"if","int","long","register","return","short","signed",
"sizeof","static","struct","switch","typedef","union",
"unsigned","void","volatile","while"};
int i, flag = 0;
這里發生了什么? 為什么我們使用 strcmp 以及它的用途
for(i = 0; i < 32; ++i){
if(strcmp(keywords[i], buffer) == 0){
flag = 1;
break;
}
}
return flag;
}
主要的
int main()
{
char ch, buffer[15];
ifstream fin("program.txt");
int j=0;
if(!fin.is_open()){
cout<<"error while opening the file\n";
exit(0);
}
while(!fin.eof()){
ch = fin.get();
這里發生了什么?
if(isalnum(ch))
{
buffer[j++] = ch;
}
else if((ch == ' ' || ch == '\n') && (j != 0)){
buffer[j] = '\0';
j = 0;
if(isKeyword(buffer) == 1)
cout<<buffer<<" is keyword\n";
else
cout<<buffer<<" is identifier\n";
}
}
fin.close();
return 0;
}
總體思路是有一個數據結構keywords[n][m]
保存所有的關鍵字,然后逐字讀取文件並檢查該單詞是否在keywords[n][m]
數組中,即是否為關鍵字 OR 不是。 在主 function 中,打開一個文件並逐字讀取直到結束,然后將該字傳遞給 function iskeyword()
以決定該字是否為關鍵字。 在iskeyword()
function 內部,我們在 for 循環中遍歷二維數組keywords[n][m]
,並使用 strcmp function 檢查作為輸入參數傳遞的單詞字符串是否與 2-d 的元素相同d 數組與否。 如果這個詞在二維數組中,那么它的關鍵字和 function 返回 1 並且is keyword
打印在屏幕上。 否則返回“0”並且“是標識符”是 output 到屏幕。 更多關於 strcmp 的信息,希望對您有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.