此程式要逐個檢查運**況,並能當場補全**。
詞法分析程式(lexical
analyzer)要求:
- 從左至右掃瞄構成源程式的字元流
- 識別出有詞法意義的單詞(lexemes)
- 返回單詞記錄(單詞類別,單詞本身)
- 濾掉空格
- 跳過注釋
- 發現詞法錯誤
程式結構:
輸入:字元流(什麼輸入方式,什麼資料結構儲存)
處理:–遍歷(什麼遍歷方式)
–詞法規則
輸出:單詞流(什麼輸出形式)
–二元組
單詞類別:
1.識別符號(10)
2.無符號數(11)
3.保留字(一詞一碼)
4.運算子(一詞一碼)
5.界符(一詞一碼)
單詞符號
種別碼單詞符號
種別碼begin
ifthen
while
doend
l(l|d)*
dd***部分:
#include
#include
#include
char prog[80],word[8],ch;
char *tag[6]=;
int syn,i,j,p,sum,row,y;
void getsyn()
//識別符號
if((ch>='a'&&ch<='z')||(ch>='a'&&ch<='z'))
word[j++]='\0';
p--;
syn=10;
for(i=0;i<6;i++)}}
//數字
else if(ch>='0'&&ch<='9')
p--;
syn=11;
}//符號
else switch(ch)else
break;
case '
i=0;
word[i++]=ch;
ch=prog[p++];
if(ch=='=')else if(ch=='>')else
break;
case '>':
i=0;
word[i++]=ch;
ch=prog[p++];
if(ch=='=')else
break;
case '+':word[0]=ch;syn=13;break;
case '-':word[0]=ch;syn=14;break;
case '*':word[0]=ch;syn=15;break;
//case '/':word[0]=ch;syn=16;break;
case '=':word[0]=ch;syn=25;break;
case ';':word[0]=ch;syn=26;break;
case '(':word[0]=ch;syn=27;break;
case ')':word[0]=ch;syn=28;break;
case '#':word[0]=ch;syn=0;break;
case '\n':syn=233;break;
//注釋
第五次作業
一 問題及 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,...