第五次作業

2022-05-24 18:21:10 字數 3223 閱讀 5173

詞法分析程式(lexical

analyzer)要求:

- 從左至右掃瞄構成源程式的字元流

-  識別出有詞法意義的單詞(lexemes)

-  返回單詞記錄(單詞類別,單詞本身)

-  濾掉空格

-  跳過注釋

-  發現詞法錯誤

程式結構:

輸入:字元流(什麼輸入方式,什麼資料結構儲存)

處理:–遍歷(什麼遍歷方式)

–詞法規則

輸出:單詞流(什麼輸出形式)

–二元組

單詞類別:

1.識別符號(10)

2.無符號數(11)

3.保留字(一詞一碼)

4.運算子(一詞一碼)

5.界符(一詞一碼)

程式**:

#include

#include

#include

using namespace std;

int k=0;

struct word

word[1000];

char key[35][10]= ;

bool cmp(char a)

return 0;

}int main()

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

if(flag==1)

else if(flag==0)

else  if(cmp(b)==1)

else}}

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

else

}else

strcpy(word[k].name,b);

word[k++].kind=2;}}

else if(ch=='('||ch==')'||ch=='['||ch==']'||ch==''||ch==','||ch==';'||ch==':'||ch=='\''||ch=='"')//ch=='('||ch==')'||ch=='['||ch==']'||ch==''||

else if(ch=='%'||ch=='^')

else if(ch=='+')

else

}else if(ch=='*')

else

}else if(ch=='/')

else

}else if(ch=='=')

else

}else if(ch=='>')

else

}else if(ch=='

else

}else if(ch=='!')

else

}else if(ch=='&')

else

}else if(ch=='|')

else}}

}for(int i=0; i

case 2:

case 3:

case 4:

case 5:

}printf("%s)\n",word[i].name);

}int a1=0,a2=0,a3=0,a4=0,a5=0;

for(int i=0;i

printf("識別符號:%d\n常量:%d\n關鍵字:%d\n界符:%d\n運算子:%d\n",a1,a2,a3,a4,a5);

return 0;

}程式截圖:

識別符號:

%d\n

常量:%d\n

關鍵字:

%d\n

界符:%d\n

運算子:

%d\n",a1,a2,a3,a4,a5);

return 0;

}

第五次作業

一 問題及 include using namespace std class time void add a minute void add an hour void add seconds int n void add minutes int n void add hours int n voi...

第五次作業

當我們在討論多型性的時候,通常會用過載函式進行舉例,而這次發現的問題主要在過載運算子上,因此我希望通過對過載運算子的測試來得出乙個結論。我們想知道為什麼前置運算子和後置運算子會有區別,因此設計了乙個實驗來證明它 得到最終結果如預期那樣。通過這次作業,我能感受到前置和後置運算子的區別,通過x 和y x...

第五次作業

insert into student sno,sname,s sdept,sage values 201215128 陳冬 男 is 18 建表時規定學號唯一,而在建表時已經加入了該學號,所以不能有兩個相同學號。3.70 insert into student sno,sname,s sdept,...