资源简介
从词法分析到目标代码生成 各个部分都有。
代码片段和文件信息
// 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语言完整版
评论
共有 条评论