• 大小: 5.11MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-04
  • 语言: C/C++
  • 标签: SNL  

资源简介

从词法分析到目标代码生成 各个部分都有。

资源截图

代码片段和文件信息

// 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\constopti.obj
     文件       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\oleobject.obj
     文件        6309  2003-10-23 09:51  源代码\Debug\oleobjects.obj
     文件       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个文件信息

评论

共有 条评论