91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 1.29MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2023-09-20
  • 語言: Java
  • 標簽: SNLC??c??java??編譯器??

資源簡介

SNLC包括了命令行c編譯器 可視化java 編譯器 源代碼以及snl的例子 可以讓做編譯器實踐的同學參考

資源截圖

代碼片段和文件信息

/****************************************************/
/*?文件?analyze.cpp ?? */
/*?說明?類PASCAL語言編譯器語義分析程序?? */
/*?主題?編譯器結構:原理和實例 */
/****************************************************/

/***********??該文件所包含的頭文件??****************/

#include?“globals.h“

#include?“util.h“

#include?“symbTable.h“

#include?“scanner.h“

#include?“parse.h“

#include?“analyze.h“

#include?“string.h“

/*scope棧的層數*/
int?Level=-1;

/*在同層的變量偏移*/
int?Off;

/*主程序的noff偏移*/
int?mainOff;


SymbTable?*?scope[SCOPESIZE];???/*scope棧*/

TypeIR?*?intPtr?=?NULL; /*該指針一直指向整數類型的內部表示*/

TypeIR?*?charPtr?=?NULL; /*該指針一直指向字符類型的內部表示*/

TypeIR?*?boolPtr?=?NULL; /*該指針一直指向布爾類型的內部表示*/

static?TypeIR?*?arrayVar(TreeNode?*?t);
/*該函數用于處理數組類型變量*/

static?TypeIR?*?recordVar(TreeNode?*?t);
/*該函數用于處理記錄類型變量*/

/***********************類型處理*****************************/



/*************************************************************/
/*?函數名??initialize????????????????????????????????????????*/
/*?功??能??該函數初始化整數類型,字符類型,布爾類型的內部表示*/
/*?說??明??由于這三種類型均為基本類型,內部表示固定。????????*/
/*************************************************************/
void?initialize(void)
{
intPtr?=?NewTy(intTy);

charPtr?=?NewTy(charTy);

boolPtr?=?NewTy(boolTy);

????/*scope棧的各層指針設為空*/
for?(int?i=0;i scope[i]?=?NULL;
}

/************************************************************/
/*?函數名??TypeProcess??????????????????????????????????????*/
/*?功??能??該函數用來完成類型分析的工作?????????????????????*/
/*?說??明??處理語法樹的當前結點類型。構造出當前類型的內部表?*/
/*?????????示,并將其地址返回給Ptr類型內部表示的地址.???????*/
/************************************************************/
TypeIR??*?TypeProcess(TreeNode?*?tDecKind?deckind)
{
TypeIR??*??Ptr?=?NULL;
switch?(deckind)
{
case?IdK:??
Ptr?=?nameType(t);break;?????????/*類型為自定義標識符*/
case?ArrayK:
Ptr?=?arrayType(t);break;????????/*類型為數組類型*/
case?RecordK:
Ptr?=?recordType(t);break;???????/*類型為記錄類型*/
case?IntegerK:
Ptr?=?intPtr;break;??????????????/*類型為整數類型*/
case?CharK:
Ptr?=?charPtr;break;?????????????/*類型為字符類型*/
}
return?Ptr;
}


/************************************************************/
/*?函數名??nameType?????????????????????????????????????????*/
/*?功??能??該函數用來在符號表中尋找已定義的類型名字?????????*/
/*?說??明??調用尋找表項地址函數FindEntry,返回找到的表項地址*/
/* ???指針entry。如果present為FALSE,則發生無聲明錯誤。*/
/*?????????如果符號表中的該標識符的屬性信息不是類型,則非類?*/
/*?????????型標識符。該函數返回指針指向符號表中的該標識符的?*/
/* ???????類型內部表示。 ????*/
/************************************************************/
TypeIR?*?nameType(TreeNode?*?t)
{
TypeIR?*?Ptr=NULL;
SymbTable?*?entry?=?NULL;
int?present;


/*類型標識符也需要往前層查找*/
present?=?FindEntry(t->attr.type_name&entry);

if(present?==?TRUE)
{
/*檢查該標識符是否為類型標識符*/
if(entry->attrIR.kind?!=?typeKind)
ErrorPrompt(t->linenot->attr.type_name“used?before?typed!\n“);
else
Ptr?=?entry->attrIR.idtype;
}
else/*沒有找到該標識符*/
{
ErrorPrompt(

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????299067??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\final.exe

?????文件??????28959??2002-09-22?17:37??SNLC\snlc_command\命令行SNLC\源代碼\analyze.cpp

?????文件???????1240??2002-09-12?20:10??SNLC\snlc_command\命令行SNLC\源代碼\analyze.h

?????文件??????23006??2002-09-20?11:06??SNLC\snlc_command\命令行SNLC\源代碼\cgen.cpp

?????文件????????714??2002-09-11?13:28??SNLC\snlc_command\命令行SNLC\源代碼\cgen.h

?????文件???????5731??2002-09-11?13:28??SNLC\snlc_command\命令行SNLC\源代碼\code.cpp

?????文件???????2794??2002-09-11?13:28??SNLC\snlc_command\命令行SNLC\源代碼\code.h

?????文件??????23214??2002-09-22?17:06??SNLC\snlc_command\命令行SNLC\源代碼\codegen.cpp

?????文件????????427??2002-09-12?16:09??SNLC\snlc_command\命令行SNLC\源代碼\codegen.h

?????文件???????8938??2002-09-12?20:11??SNLC\snlc_command\命令行SNLC\源代碼\consOpti.cpp

?????文件????????134??2002-09-12?16:10??SNLC\snlc_command\命令行SNLC\源代碼\consOpti.h

?????文件??????37331??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\analyze.obj

?????文件???????4954??2008-09-21?15:09??SNLC\snlc_command\命令行SNLC\源代碼\Debug\BuildLog.htm

?????文件??????37383??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\cgen.obj

?????文件??????11516??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\code.obj

?????文件??????44859??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\codegen.obj

?????文件??????15468??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\consOpti.obj

?????文件??????18962??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\ECCsaving.obj

?????文件?????299067??2003-03-28?09:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\final.exe

?????文件???????2048??2008-09-21?15:08??SNLC\snlc_command\命令行SNLC\源代碼\Debug\final.exe.embed.manifest

?????文件???????2112??2008-09-21?15:08??SNLC\snlc_command\命令行SNLC\源代碼\Debug\final.exe.embed.manifest.res

?????文件?????387732??2003-03-28?09:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\final.ilk

?????文件?????779264??2003-03-28?09:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\final.pdb

?????文件??????15580??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\loopOpti.obj

?????文件??????18522??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\main.obj

?????文件??????19774??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\midcode.obj

?????文件??????57646??2003-03-28?09:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\parse.obj

?????文件??????96965??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\parseLL1.obj

?????文件??????17509??2002-11-12?16:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\scanner.obj

?????文件??????24651??2003-03-28?09:53??SNLC\snlc_command\命令行SNLC\源代碼\Debug\symbTable.obj

............此處省略360個文件信息

評論

共有 條評論