資源簡介
設計SAMPLE語言的語法、語義分析器,輸出四元式的中間結果。
檢查要求:
a)啟動程序后,先輸出作者姓名、班級、學號(可用漢語、英語或拼音)。
b)請求輸入測試程序名,鍵入程序名后自動開始編譯。
c)輸出四元式中間代碼(樣式見樣板輸出3和4)。
d)能發現程序的語法錯誤并輸出出錯信息。

代碼片段和文件信息
using?namespace?std;
#include“base.h“
#pragma?warning(disable:4996)
extern?int?nowaddress;//表示下一個地址
extern?bianYi?parse;????????????//詞法分析
extern?item?sign;????????????//
extern?suanfu_stack?STACK;?????//布朗運算的棧
extern?fouryuan?FOMO;?????????//四元組表
int?suanfubiao[numsuanfu?+?1][numsuanfu?+?1]?=?{?-2?11?1?1?1?1?11?11?1
??-11-1-1-1-1-111-1-1-1
??-111-1-1-1-11?1-1-1-1
??-111?1-1-1-11?1-1-1-1
??-111?1-2-2?-111-2-2-2
??-111?1-2?-2-111-2-2-2
??-1-1-1-1-1-1-101-1-1-1
??11?1?1?1?1?1?1?11??11
??-1-1-1-1-1-1-1-10-1-1-1
??-1111?-2?-2-11?1-2-2-2
??-1111?-2-2-11?1-2-2-2
??-1111?-2-2-1?11?-2-2-2
};
int?findfuhaobiao(int?k)?{
switch?(k)?{
case?20:return?suanfu_or;
case?18:return?suanfu_not;
case?1:return?suanfu_and;
case?53:return?suanfu_low;
case?57:return?suanfu_above;
case?39:return?suanfu_leftkuohao;
case?40:return?suanfu_rightkuohao;
case?56:return?suanfu_equ;
case?54:return?suanfu_lowequ;
case?58:return?suanfu_aboveequ;
case?36:
case?31:
case?13:
case?37:return?suanfu_bctf;
case?suanfu_end:?return?suanfu_jing;
default:return?-1;
}
}
void?superpop(int?i)?{
item?temp[5];
int?tempt?=?STACK.applyfortruelist();
int?tempf?=?STACK.applyforfalselist();
//??????char?*op1*op2;
switch?(i)?{
case?suanfu_above:
case?suanfu_low:
case?suanfu_equ:
case?suanfu_aboveequ:
case?suanfu_lowequ:?{
for?(int?j?=?0;?j?3;?j++)
STACK.suanfu_pop(temp[j]);
STACK.optop++;
/////////truelist的2位放codebegin3位放長度
FOMO.load(nowaddress?temp[1]?temp[2]?temp[0]?0);
// cout<“<<“?“< STACK.truelist[tempt][1]?=?nowaddress;
STACK.falselist[tempf][1]?=?nowaddress;
STACK.truelist[tempt][2]?=?1;
STACK.falselist[tempf][2]?=?1;
STACK.truelist[tempt][3]?=?nowaddress;
STACK.falselist[tempf][3]?=?++nowaddress;
FOMO.load(nowaddress?0);
// cout< ++nowaddress;
item?tempitem(-1?tempt);
STACK.suanfu_push(tempitem);
tempitem.x?=?-2;
tempitem.y?=?tempf;
STACK.suanfu_push(tempitem);
break;
}
case?suanfu_not:?{
for?(int?j?=?0;?j?3;?j++)
STACK.suanfu_pop(temp[j]);
STACK.optop?+=?2;
STACK.truelist[tempt][0]?=?_available;
STACK.falselist[tempf][0]?=?_available;
temp[0].x?=?-1;
temp[1].x?=?-2;
STACK.truelist[temp[1].y][0]?=?_unavailable;
STACK.falselist[temp[0].y][0]?=?_unavailable;
////////////////////真假連互換
for?(int?zz?=?0?ww;?zz<3?+?(STACK.truelist[temp[1].y][2])???(STACK.falselist[temp[0].y][2])?:?(STACK.truelist[temp[1].y][2])>(STACK.falselist[temp[0].y][2]);?zz++)?{
ww?=?STACK.truelist[temp[1].y][zz];
STACK.truelist[temp[1].y][zz]?=?STACK.falselist[temp[0].y][zz];
STACK.fal
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????..A..H.?????17408??2018-12-21?14:25??語法語義分析器\.vs\詞法語法語義分析器\v15\.suo
?????文件????5410816??2018-12-21?14:25??語法語義分析器\.vs\詞法語法語義分析器\v15\Browse.VC.db
?????文件?????154112??2018-12-11?20:42??語法語義分析器\Debug\詞法語法語義分析器.exe
?????文件????1172744??2018-12-11?20:42??語法語義分析器\Debug\詞法語法語義分析器.ilk
?????文件????1224704??2018-12-11?20:42??語法語義分析器\Debug\詞法語法語義分析器.pdb
?????文件?????194560??2018-12-11?21:17??語法語義分析器\x64\Debug\詞法語法語義分析器.exe
?????文件?????934380??2018-12-11?21:17??語法語義分析器\x64\Debug\詞法語法語義分析器.ilk
?????文件?????880640??2018-12-11?21:17??語法語義分析器\x64\Debug\詞法語法語義分析器.pdb
?????文件???????4399??2018-12-08?00:16??語法語義分析器\詞法語法語義分析器\ba
?????文件???????7797??2018-12-11?20:41??語法語義分析器\詞法語法語義分析器\bool.cpp
?????文件??????10539??2018-12-11?20:40??語法語義分析器\詞法語法語義分析器\cifa.cpp
?????文件???????6089??2018-12-11?20:37??語法語義分析器\詞法語法語義分析器\control.cpp
?????文件??????57779??2018-12-11?20:41??語法語義分析器\詞法語法語義分析器\Debug\bool.obj
?????文件?????316601??2018-12-11?20:40??語法語義分析器\詞法語法語義分析器\Debug\cifa.obj
?????文件??????62782??2018-12-11?20:37??語法語義分析器\詞法語法語義分析器\Debug\control.obj
?????文件??????58734??2018-12-11?20:31??語法語義分析器\詞法語法語義分析器\Debug\fuzhi.obj
?????文件??????61383??2018-12-11?20:42??語法語義分析器\詞法語法語義分析器\Debug\item.obj
?????文件?????273408??2018-12-11?20:42??語法語義分析器\詞法語法語義分析器\Debug\vc141.idb
?????文件?????806912??2018-12-11?20:42??語法語義分析器\詞法語法語義分析器\Debug\vc141.pdb
?????文件??????67175??2018-12-08?00:39??語法語義分析器\詞法語法語義分析器\Debug\zhongjiandaima.obj
?????文件?????121814??2018-12-07?11:35??語法語義分析器\詞法語法語義分析器\Debug\主函數.obj
?????文件??????67163??2018-12-07?11:27??語法語義分析器\詞法語法語義分析器\Debug\四元式.obj
?????文件??????56499??2018-12-07?11:27??語法語義分析器\詞法語法語義分析器\Debug\布爾運算.obj
?????文件??????62794??2018-12-07?11:27??語法語義分析器\詞法語法語義分析器\Debug\控制.obj
?????文件?????121783??2018-12-08?00:50??語法語義分析器\詞法語法語義分析器\Debug\源.obj
?????文件?????316602??2018-12-07?11:27??語法語義分析器\詞法語法語義分析器\Debug\詞法分析.obj
?????文件????????168??2018-12-11?20:42??語法語義分析器\詞法語法語義分析器\Debug\詞法語法語義分析器.log
?????文件??????10234??2018-12-11?20:42??語法語義分析器\詞法語法語義分析器\Debug\詞法語法語義分析器.tlog\CL.command.1.tlog
?????文件??????89228??2018-12-11?20:42??語法語義分析器\詞法語法語義分析器\Debug\詞法語法語義分析器.tlog\CL.read.1.tlog
?????文件??????15518??2018-12-11?20:42??語法語義分析器\詞法語法語義分析器\Debug\詞法語法語義分析器.tlog\CL.write.1.tlog
............此處省略49個文件信息
評論
共有 條評論