資源簡介
從詞法分析到目標代碼生成 各個部分都有。

代碼片段和文件信息
//?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??2012-03-23?08:44??源代碼\
?????文件????????1531??2002-08-28?00:00??源代碼\ChildFrm.cpp
?????文件????????1397??2002-08-28?00:00??源代碼\ChildFrm.h
?????目錄???????????0??2012-03-23?08:44??源代碼\Debug\
?????文件???????14734??2003-10-23?09:51??源代碼\Debug\ChildFrm.obj
?????文件???????18825??2003-10-23?09:51??源代碼\Debug\MainFrm.obj
?????文件??????105341??2003-10-23?09:51??源代碼\Debug\StdAfx.obj
?????文件???????55294??2003-10-23?09:51??源代碼\Debug\analyze.obj
?????文件????????9753??2003-10-23?09:51??源代碼\Debug\comhelp.obj
?????文件???????27853??2003-10-23?09:51??源代碼\Debug\con
?????文件???????35499??2003-10-23?09:51??源代碼\Debug\eccOpti.obj
?????文件?????2506799??2004-02-18?10:35??源代碼\Debug\face.exe
?????文件?????2868512??2004-02-18?10:35??源代碼\Debug\face.ilk
?????文件???????27370??2003-10-23?09:51??源代碼\Debug\face.obj
?????文件?????5455508??2003-10-23?09:51??源代碼\Debug\face.pch
?????文件?????4695040??2004-02-18?10:35??源代碼\Debug\face.pdb
?????文件???????23896??2004-02-18?10:35??源代碼\Debug\face.res
?????文件???????13212??2003-10-23?09:51??源代碼\Debug\faceDoc.obj
?????文件??????108290??2003-10-23?09:51??源代碼\Debug\faceView.obj
?????文件???????12759??2003-10-23?09:51??源代碼\Debug\font.obj
?????文件????????4830??2003-10-23?09:51??源代碼\Debug\global.obj
?????文件???????11967??2003-10-23?09:51??源代碼\Debug\inNum.obj
?????文件???????12084??2003-10-23?09:51??源代碼\Debug\indialog.obj
?????文件???????26516??2003-10-23?09:51??源代碼\Debug\loopOpti.obj
?????文件???????35096??2003-10-23?09:51??源代碼\Debug\midcode.obj
?????文件???????50858??2003-10-23?09:51??源代碼\Debug\midtodemi.obj
?????文件???????11658??2003-10-23?09:51??源代碼\Debug\oleob
?????文件????????6309??2003-10-23?09:51??源代碼\Debug\oleob
?????文件???????87531??2003-10-23?09:51??源代碼\Debug\parse.obj
?????文件??????133075??2003-10-23?09:51??源代碼\Debug\parseLL1.obj
?????文件????????5301??2003-10-23?09:51??源代碼\Debug\picture.obj
............此處省略93個文件信息
- 上一篇:MFC課程設計 學生信息管理系統C++
- 下一篇:openssl庫C語言完整版
評論
共有 條評論