資源簡介
參照TINY語法分析器的實(shí)現(xiàn),運(yùn)用所學(xué)知識用C語言或者C++語言實(shí)現(xiàn)C-MINUS詞法分析器,可輸出token,再在詞法分析的基礎(chǔ)上實(shí)現(xiàn)C-MINUS語法分析器,可輸出語法樹。 本資源是運(yùn)用自頂向下方法中的遞歸下降分析方法進(jìn)行語法分析,是學(xué)習(xí)編譯器理解編譯器的重要方法,上傳本資源幫助大家學(xué)習(xí)

代碼片段和文件信息
#include?“globals.h“
#include?“scan.h“
#include?“parse.h“
#include?“util.h“
/*?聲明全局變量?*/
int?lineno?=?0;
FILE?*?source;
FILE?*?listing;
FILE?*?code;
/*?設(shè)置調(diào)試開關(guān)?*/
int?EchoSource?=?TRUE;??//將C-MINUS源程序回顯到帶有行號的列表
int?TraceScan?=?TRUE;??//將掃描程序識別出token時,就顯示出每個記號的信息
int?TraceParse?=?TRUE;??//將語法樹以線性化格式顯示
int?Error?=?FALSE;
int?main()
{
TreeNode?*?syntaxTree;??//語法樹
char?inp[120];?/*?源代碼文件名?*/
char?outp[120];?/*?輸出編譯結(jié)果文件名?*/
memset(inp0120);
strcpy(inp?“F://test2.txt“);
source?=?fopen(inp?“r“);
? memset(outp0120);
strcpy(outp?“F://result2.txt“);
? listing?=?fopen(outp?“w“);
if?(source?==?NULL)
{
fprintf(stderr?“File?%s?not?found\n“?inp);
exit(1);
}
// listing?=?stdout;?/*?將結(jié)果輸出至屏幕?*/
fprintf(listing?“COMPILATION:?%s\n“?inp);
//SCAN
// while?(getToken()?!=?ENDFILE);
//PARSE
syntaxTree?=?parse();
if?(TraceParse)
{
fprintf(listing?“\nSyntax?tree:\n“);
printTree(syntaxTree);
fprintf(listing?“\nEnd?of?file!\n“);
}
fclose(source);
fclose(listing);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4737??2016-06-02?13:54??Compiler3.0\compiler2.dsp
?????文件????????524??2016-04-05?13:55??Compiler3.0\compiler2.dsw
?????文件??????82944??2016-06-02?15:41??Compiler3.0\compiler2.ncb
?????文件??????49664??2016-06-02?15:41??Compiler3.0\compiler2.opt
?????文件???????1360??2016-06-02?15:22??Compiler3.0\compiler2.plg
?????文件????2490368??2016-06-06?18:01??Compiler3.0\compiler2.sdf
?????文件????????963??2016-04-05?19:46??Compiler3.0\compiler2.sln
????..A..H.??????7680??2016-06-02?13:46??Compiler3.0\compiler2.suo
????..A..H.?????40448??2016-06-06?18:01??Compiler3.0\compiler2.v12.suo
?????文件???????6629??2016-05-25?12:19??Compiler3.0\compiler2.vcxproj
?????文件???????1565??2016-05-25?12:19??Compiler3.0\compiler2.vcxproj.filters
?????文件?????412672??2016-06-06?17:07??Compiler3.0\Debug\compiler2.bsc
?????文件???????1145??2016-06-06?14:36??Compiler3.0\Debug\compiler2.Build.CppClean.log
?????文件?????550912??2016-06-06?17:53??Compiler3.0\Debug\compiler2.exe
?????文件????1202660??2016-06-06?17:53??Compiler3.0\Debug\compiler2.ilk
?????文件???????2686??2016-06-06?17:53??Compiler3.0\Debug\compiler2.log
?????文件????2485248??2016-06-06?17:53??Compiler3.0\Debug\compiler2.pdb
?????文件????????520??2016-06-06?17:07??Compiler3.0\Debug\compiler2.tlog\BscMake.command.1.tlog
?????文件????????552??2016-06-06?17:07??Compiler3.0\Debug\compiler2.tlog\bscmake.read.1.tlog
?????文件????????400??2016-06-06?17:07??Compiler3.0\Debug\compiler2.tlog\bscmake.write.1.tlog
?????文件???????2422??2016-06-06?17:53??Compiler3.0\Debug\compiler2.tlog\cl.command.1.tlog
?????文件???????6430??2016-06-06?17:53??Compiler3.0\Debug\compiler2.tlog\CL.read.1.tlog
?????文件???????2722??2016-06-06?17:53??Compiler3.0\Debug\compiler2.tlog\CL.write.1.tlog
?????文件????????156??2016-06-06?17:53??Compiler3.0\Debug\compiler2.tlog\compiler2.lastbuildstate
?????文件???????1310??2016-06-06?17:53??Compiler3.0\Debug\compiler2.tlog\li
?????文件???????2732??2016-06-06?17:53??Compiler3.0\Debug\compiler2.tlog\li
?????文件????????576??2016-06-06?17:53??Compiler3.0\Debug\compiler2.tlog\li
?????文件???????8391??2016-06-06?17:53??Compiler3.0\Debug\main.obj
?????文件?????169396??2016-06-06?17:53??Compiler3.0\Debug\main.sbr
?????文件??????28534??2016-06-06?15:55??Compiler3.0\Debug\parse.obj
............此處省略23個文件信息
評論
共有 條評論