資源簡介
吉林大學編譯原理課件+一些源碼,非常全,請放心下載
代碼片段和文件信息
//?analyze.cpp:?implementation?of?the?Canalyze?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“face.h“
#include?“analyze.h“
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
Canalyze::Canalyze()
{
??/*scope棧的層數*/
??Level=-1;
??intPtr?=?NULL; /*該指針一直指向整數類型的內部表示*/
??charPtr?=?NULL; /*該指針一直指向字符類型的內部表示*/
??boolPtr?=?NULL; /*該指針一直指向布爾類型的內部表示*/
??
??Error?=?false;
}
Canalyze::~Canalyze()
{
}
/*********************實用函數實現***************************/
/**********************************************************/
/****************???符號表相關操作???**********************/
/**********************************************************/
/********************************************************/
/*?函數名??PrintFieldTable */
/*?功??能??打印紀錄類型的域表 */
/*?說??明 ????????*/
/********************************************************/
void???Canalyze::PrintFieldChain(fieldChain??*currentP)
{?
??fprintf(listing“\n--------------Field??chain--------------------\n“);
??fieldChain??*t=currentP;
??while?(t!=NULL)
??{?/*輸出標識符名字*/
fprintf(listing?“%s:??“t->id?);
/*輸出標識符的類型信息*/
switch(t->UnitType->kind)
{case??intTy?:??fprintf(listing?“intTy?????“);???break;
?case??charTy: fprintf(listing?“charTy????“);??break;
?case??arrayTy:?fprintf(listing?“arrayTy???“);?break;
?case??recordTy:fprintf(listing?“recordTy??“);break;
?default?:?fprintf(listing?“error??type!??“);?break;
}
????fprintf(listing?“off?=?%d\n“t->off);?
??t?=?t->Next;
??}
}
/********************************************************/
/*?函數名??PrintOnelayer */
/*?功??能??打印符號表的一層 */
/*?說??明??有符號表打印函數PrintSymbTable調用 ????????*/
/********************************************************/
void??Canalyze::PrintOnelayer(int?level)
{
??SymbTable??*t=?scope[level];
??fprintf(listing“\n-------SymbTable??in?level?%d?---------\n“level);
??while?(t!=NULL)
??{?/*輸出標識符名字*/
fprintf(listing?“%s:???“t->idName);
AttributeIR??*Attrib?=?&(t->attrIR?);
/*輸出標識符的類型信息,過程標識符除外*/
if?(Attrib->idtype!=NULL)??/*過程標識符*/
???switch(Attrib->idtype->kind)
{case??intTy?:??fprintf(listing?“intTy??“);???break;
?case??charTy: fprintf(listing?“charTy??“);??break;
?case??arrayTy:?fprintf(listing?“arrayTy??“);?break;
?case??recordTy:fprintf(listing?“recordTy??“);break;
?default?:?fprintf(listing?“error??type!??“);?break;
}
/*輸出標識符的類別,并根據不同類型輸出不同其它屬性*/
switch(Attrib->kind)
{case??typeKind?:?
??????fprintf(listing?“typekind??“);?break;
?case??varKind?:
??fprintf(listing?“varkind??“);
??fprintf(listing?“Level?=?%d??“?Attrib->More.VarAttr.level);
??fprintf(listing?“Offset=?%d??“?Attrib->More.VarAttr.off
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-03-17?21:01??編譯原理\
?????目錄???????????0??2014-06-30?11:18??編譯原理\SNL語言例子\
?????目錄???????????0??2014-06-30?11:18??編譯原理\SNL語言例子\一般例子\
?????文件?????????309??2013-05-12?21:38??編譯原理\SNL語言例子\一般例子\c1.txt
?????文件?????????355??2002-11-12?00:00??編譯原理\SNL語言例子\一般例子\c2.txt
?????文件?????????447??2002-11-12?00:00??編譯原理\SNL語言例子\一般例子\c4.txt
?????文件?????????616??2002-11-12?00:00??編譯原理\SNL語言例子\一般例子\c5.txt
?????文件?????????416??2002-11-12?00:00??編譯原理\SNL語言例子\一般例子\c6.txt
?????文件?????????519??2002-11-12?00:00??編譯原理\SNL語言例子\一般例子\c7.txt
?????文件?????????557??2002-11-12?00:00??編譯原理\SNL語言例子\一般例子\c8.txt
?????文件?????????251??2002-05-18?00:00??編譯原理\SNL語言例子\一般例子\easy.txt
?????文件?????????564??2002-05-18?00:00??編譯原理\SNL語言例子\一般例子\exp.txt
?????文件?????????121??2002-08-20?00:00??編譯原理\SNL語言例子\一般例子\scan.txt
?????文件?????????547??2002-05-09?00:00??編譯原理\SNL語言例子\一般例子\sd1.txt
?????文件??????????57??2013-05-12?21:49??編譯原理\SNL語言例子\一般例子\x.txt
?????目錄???????????0??2014-06-30?11:18??編譯原理\SNL語言例子\優化測試例\
?????文件?????????360??2002-11-01?00:00??編譯原理\SNL語言例子\優化測試例\const.txt
?????文件?????????181??2002-05-18?00:00??編譯原理\SNL語言例子\優化測試例\eccexam1.txt
?????文件?????????291??2002-05-18?00:00??編譯原理\SNL語言例子\優化測試例\eccexam2.txt
?????文件?????????416??2002-05-07?00:00??編譯原理\SNL語言例子\優化測試例\loop1.txt
?????文件?????????571??2002-05-07?00:00??編譯原理\SNL語言例子\優化測試例\loop2.txt
?????文件?????????493??2002-05-07?00:00??編譯原理\SNL語言例子\優化測試例\loop3.txt
?????目錄???????????0??2014-06-30?11:18??編譯原理\SNL語言例子\應用實例\
?????文件?????????514??2002-11-12?00:00??編譯原理\SNL語言例子\應用實例\cs1.txt
?????文件?????????267??2003-02-25?00:00??編譯原理\SNL語言例子\應用實例\factorial.txt
?????文件?????????718??2002-11-12?00:00??編譯原理\SNL語言例子\應用實例\sort.txt
?????文件?????????295??2002-11-12?00:00??編譯原理\SNL語言例子\錯誤檢查例.txt
?????目錄???????????0??2014-06-30?11:18??編譯原理\可視化SNLC\
?????文件??????????24??2004-02-18?10:47??編譯原理\可視化SNLC\sn.txt
?????文件?????3223889??2003-10-23?11:10??編譯原理\可視化SNLC\SNLC安裝文件.exe
?????目錄???????????0??2014-06-30?11:18??編譯原理\可視化SNLC\源代碼\
............此處省略214個文件信息
評論
共有 條評論