资源简介

吉林大学编译原理课件+一些源码,非常全,请放心下载

资源截图

代码片段和文件信息

// 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个文件信息

评论

共有 条评论