7-2 小c語言–詞法分析程式 (30 分)
小c語言文法
《程式》→()
《宣告序列》→《宣告序列》《宣告語句》|《宣告語句》|《空》
《宣告語句》→《識別符號表》;
《識別符號表》→《識別符號》,《識別符號表》|《識別符號》
《語句序列》→《語句序列》《語句》|《語句》
《語句》→< if語句》|< while語句》|< for語句》|《復合語句》|《賦值語句》
< if語句》→< if關鍵字》(《表示式》)《復合語句》|(《表示式》)《復合語句》< else關鍵字》《復合語句》
< while語句》→< while關鍵字》(《表示式》)《復合語句》
< for語句》→< for關鍵字》(《表示式》;《表示式》;《表示式》)《復合語句》
《復合語句》→
《賦值語句》→《表示式》;
《表示式》→《識別符號》=《算數表示式》|《布林表示式》
《布林表示式》→《算數表示式》 |《算數表示式》《關係運算子》《算數表示式》
《關係運算子》→>|<|>=|<=|==|!=
《算數表示式》→《算數表示式》+《項》|《算數表示式》-《項》|《項》
《項》→《項》*《因子》|《項》/《因子》|《因子》
《因子》→《識別符號》|《無符號整數》|(《算數表示式》)
《識別符號》→《字母》|《識別符號》《字母》|《識別符號》《數字》
《無符號整數》→《數字》|《無符號整數》《數字》
《字母》→a|b|…|z|a|b|…|z
《數字》→0|1|2|3|4|5|6|7|8|9
< main關鍵字》→main
< if關鍵字》→if
< else關鍵字》→else
< for關鍵字》→for
< while關鍵字》→while
< int關鍵字》→int
每行單詞數不超過10個
小c語言文法如上,現在我們對小c語言寫的乙個源程式進行詞法分析,分析出關鍵字、自定義識別符號、整數、界符和運算子。
關鍵字:main if else for while int
自定義識別符號:除關鍵字外的識別符號
整數:無符號整數
界符: ( ) , ;
運算子:= + - * / < <= > >= == !=
輸入格式:
輸入乙個小c語言源程式,源程式長度不超過2000個字元,保證輸入合法。
輸出格式:
按照源程式中單詞出現順序輸出,輸出二元組形式的單詞串。
(單詞種類,單詞值)
單詞一共5個種類:
關鍵字:用keyword表示
自定義識別符號:用identifier表示
整數:用integer表示
界符:用boundary表示
運算子:用operator表示
每種單詞值用該單詞的符號串表示。
/*******************
此程式只是將源程式分解為各個單詞按順序輸出。
******************/
#include
#include
using
namespace std;
string name[5]
=;string key[6]
=;void
pre(string ch)
///處理關鍵字,自定義識別符號,數字
else
///判斷是關鍵字還是自定義的東東。}if
(f)}
}int
main()
///處理運算子,界符
temp ="";
if(s[i+1]
=='='
)///處理==和!=運算子
else
}else
if(s[i]
=='('
||s[i]
==')'
||s[i]
==''
||s[i]
==','
||s[i]
==';'
) temp ="";
cout<<
"("<<<
","<<<
")"<}else
///遇到關鍵字了嗎?自定義東東了嗎?數字了嗎?在這裡是判斷不出來的。因為其後面是啥東東還不知道,所以不能衝動地輸出哦。}if
(temp.
length()
)///搞出來字串的最後幾個符號(一定為非運算子,操作符)
}return0;
}
小C語言 詞法分析程式
time limit 1000ms memory limit 5000kb submit statistic problem description 小c語言文法 1.程式 2.宣告序列 宣告序列 宣告語句 宣告語句 空 3.宣告語句 識別符號表 4.識別符號表 識別符號 識別符號表 識別符號 5....
小C語言 詞法分析程式
time limit 1000ms memory limit 5000kb submit statistic problem description 小c語言文法 1.程式 2.宣告序列 宣告序列 宣告語句 宣告語句 空 3.宣告語句 識別符號表 4.識別符號表 識別符號 識別符號表 識別符號 5....
小C語言 詞法分析程式
time limit 1000ms memory limit 5000kb submit statistic problem description 小c語言文法 1.程式 2.宣告序列 宣告序列 宣告語句 宣告語句 空 3.宣告語句 識別符號表 4.識別符號表 識別符號 識別符號表 識別符號 5....