詞法分析程式(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,...