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

  • 大小: 2.32MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2023-11-06
  • 語言: C/C++
  • 標(biāo)簽:

資源簡介

這是一個單文檔的tiny語言語法分析器,良好的MFC單文檔界面。

資源截圖

代碼片段和文件信息

/****************************************************/
/*?File:?main.c?????????????????????????????????????*/
/*?Main?program?for?TINY?compiler???????????????????*/
/*?Compiler?Construction:?Principles?and?Practice???*/
/*?Kenneth?C.?Louden????????????????????????????????*/
/****************************************************/

#include?“globals.h“

/*?set?NO_PARSE?to?TRUE?to?get?a?scanner-only?compiler?*/
#define?NO_PARSE?FALSE//TRUE//FALSE
/*?set?NO_ANALYZE?to?TRUE?to?get?a?parser-only?compiler?*/
#define?NO_ANALYZE?TRUE//FALSE

/*?set?NO_CODE?to?TRUE?to?get?a?compiler?that?does?not
?*?generate?code
?*/
#define?NO_CODE?TRUE//FALSE
?
#include?“util.h“
#if?NO_PARSE
#include?“scan.h“
#else
#include?“parse.h“
/*
#if?!NO_ANALYZE??//這里用不著
#include?“analyze.h“
#if?!NO_CODE
#include?“cgen.h“
#endif
#endif
*/
#endif

/*?allocate?global?variables?*/
int?lineno?=?0;
FILE?*?source;
FILE?*?listing;
FILE?*?code;

extern?int?linepos?;?/*?current?position?in?LineBuf?*/
extern?int?bufsize?;?/*?current?size?of?buffer?string?*/
extern?int?EOF_flag?;?/*?corrects?ungetNextChar?behavior?on?EOF?*/

/*?allocate?and?set?tracing?flags?*/
int?EchoSource?=?FALSE;
int?TraceScan?=?FALSE;
int?TraceParse?=?FALSE;//TRUE;
int?TraceAnalyze?=?FALSE;?//這里用不著
int?TraceCode?=?FALSE;

int?Error?=?FALSE;
/*用.def文件創(chuàng)建DLL先刪除上個應(yīng)用程序中的stdafx.h文件,然后刪除libtiny.cpp文件
???同時往該工程中加入一個文本文件,命名為libtiny.def,再在該文件中加入如下代碼:?

????LIBRARY???MyDll?
????EXPORTS?
????Max?
????Min?
?其中LIBRARY語句說明該def文件是屬于相應(yīng)DLL的,EXPORTS語句下列出要導(dǎo)出的函數(shù)名稱
?我們可以在.def文件中的導(dǎo)出函數(shù)后加@n(n!=1),如Max@1,Min@2,表示要導(dǎo)出的函數(shù)順序號?
*/

int?add(int?aint?b)?//用于建立動態(tài)鏈接,見libtiny.def
{
return?a+b;
}
void?ini_tiny()??//初始化
{
?lineno?=?0;
?source=NULL;
?listing=NULL;
?code=NULL;
?//////////
/*?linepos=0;
?bufsize=0;
?EOF_flag=FALSE;*/
}
?//重寫主函數(shù)
int?tiny_main(char?*pgmTreeNode?*?tmp_syntaxTreeconst?char?*?filename)//int?argc?char?*?argv[]?)
{?
ini_tiny();
TreeNode?*?syntaxTree;/**/
//??char?pgm[120];?/*?source?code?file?name?*/
/*??if?(argc?!=?2)
????{?fprintf(stderr“usage:?%s?\n“argv[0]);
??????exit(1);
????}
??strcpy(pgmargv[1])?;*/
//??strcpy(pgm“SAMPLE.TNY“);
??if?(strchr?(pgm?‘.‘)?==?NULL)?//Strchr()函數(shù)是用來判斷一個字符是否在一個字符串中出現(xiàn)
?????strcat(pgm“.tny“);?//字符串連接函數(shù)
??source?=?fopen(pgm“r“);
??if?(source==NULL)?//文件為空,則終止
??{?fprintf(stderr“File?%s?not?found\n“pgm);
????exit(1);
??}
??if(filename==NULL)
??{
?listing?=?stdout;?/*?send?listing?to?screen?*/
??}
??else
??{
??listing=fopen(filename“w+“);?//w+是寫模式
??}
??fprintf(listing“\nTINY?COMPILATION:?%s\n“pgm);
#if?NO_PARSE
??while?(getToken()!=ENDFILE);
#else
??syntaxTree?=?parse();
??tmp_syntaxTree->attr=syntaxTree->attr;?//把語法樹賦給臨時語法樹,以便下次處理
for(int?i=0;i tmp_syntaxTree->child[i]=syntaxTree->child[i];
??tmp_syntaxTree->sibling=syntaxTree->sibling;
??tmp_syntaxTree->lineno=syntaxTree->lineno;
??tmp_syntaxTree->nodekind=syntaxTree->nodekind;
??tmp_synt

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

?????文件????????675??2011-01-11?21:13??語法分析\.error

?????文件???????9261??2011-01-09?00:12??語法分析\libtiny\Debug\ANALYZE.obj

?????文件??????18628??2011-01-09?00:12??語法分析\libtiny\Debug\CGEN.obj

?????文件???????8234??2011-01-09?00:12??語法分析\libtiny\Debug\CODE.obj

?????文件?????241742??2011-01-09?15:06??語法分析\libtiny\Debug\libtiny.dll

?????文件????????788??2011-01-09?15:06??語法分析\libtiny\Debug\libtiny.exp

?????文件?????298524??2011-01-09?15:06??語法分析\libtiny\Debug\libtiny.ilk

?????文件???????2252??2011-01-09?15:06??語法分析\libtiny\Debug\libtiny.lib

?????文件?????211356??2011-01-09?15:06??語法分析\libtiny\Debug\libtiny.pch

?????文件?????615424??2011-01-09?15:06??語法分析\libtiny\Debug\libtiny.pdb

?????文件??????17654??2011-01-09?15:06??語法分析\libtiny\Debug\PARSE.obj

?????文件??????12040??2011-01-09?15:06??語法分析\libtiny\Debug\SCAN.obj

?????文件???????6514??2011-01-09?00:12??語法分析\libtiny\Debug\SYMTAB.obj

?????文件???????7217??2011-01-09?15:06??語法分析\libtiny\Debug\tiny.obj

?????文件??????16189??2011-01-09?15:06??語法分析\libtiny\Debug\UTIL.obj

?????文件??????41984??2011-01-09?15:06??語法分析\libtiny\Debug\vc60.idb

?????文件??????53248??2011-01-09?15:06??語法分析\libtiny\Debug\vc60.pdb

?????文件???????3123??2011-01-09?01:10??語法分析\libtiny\GLOBALS.H

?????文件?????????48??2011-01-09?15:06??語法分析\libtiny\libtiny.def

?????文件???????4534??2011-01-09?00:12??語法分析\libtiny\libtiny.dsp

?????文件????????539??2011-01-09?00:12??語法分析\libtiny\libtiny.dsw

?????文件?????148480??2011-01-09?23:01??語法分析\libtiny\libtiny.ncb

?????文件??????50688??2011-01-09?23:01??語法分析\libtiny\libtiny.opt

?????文件???????1654??2011-01-09?15:06??語法分析\libtiny\libtiny.plg

?????文件???????7138??2011-01-09?23:01??語法分析\libtiny\PARSE.C

?????文件????????559??2011-01-09?00:12??語法分析\libtiny\PARSE.H

?????文件???????6169??2011-01-09?21:11??語法分析\libtiny\SCAN.C

?????文件????????693??2011-01-09?00:12??語法分析\libtiny\SCAN.H

?????文件???????4194??2011-01-09?15:06??語法分析\libtiny\tiny.cpp

?????文件???????5762??2011-01-09?00:12??語法分析\libtiny\UTIL.C

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

評論

共有 條評論