第五次作業

2022-07-19 05:45:12 字數 2154 閱讀 7173

此程式要逐個檢查運**況,並能當場補全**。

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