資源簡介
為簡單函數繪圖語言編寫一個解釋器。解釋器接受用繪圖語言編寫的源程序,經語法和語義分析之后,將源程序所規定的圖形顯示在顯示屏(或窗口)中。用編譯器編寫工具LEX/YACC提供的方式規定繪圖語言的詞法和語法,用C/C++語言編寫解釋器的語義。實驗使用的操作系統是WIN10,實現軟件是microft visual studio community 2017版本。任務劃分為三個部分,分別是詞法分析器、語法分析器、語義分析器。
代碼片段和文件信息
#pragma?warning(disable:4996)
#include?“semantic.h“
#include??
#define?MAX_CHARS?200
extern?HDC?hDC; //?窗口句柄,全局變量
char?SrcFilePath[MAX_CHARS]; //?用于存放源程序文件路徑
TCHAR?Name[]?=?_T(“函數繪圖語言解釋器“); //?窗口名
//?-------------------------?檢查源程序文件是否合法函數聲明
static?bool?CheckSrcFile(LPSTR);
/*??Declare?Windows?procedure??*/
LRESULT?CALLBACK?WindowProcedure(HWND?UINT?WPARAM?LPARAM);
/*??Make?the?class?name?into?a?global?variable??*/
TCHAR?szClassName[]?=?_T(“函數繪圖語言解釋器“);
int?WINAPI?WinMain(HINSTANCE?hThisInstance
HINSTANCE?hPrevInstance
LPSTR?lpszArgument
int?nFunsterStil)
{
HWND?hwnd;???????????????/*?This?is?the?handle?for?our?window?*/
MSG?messages;????????????/*?Here?messages?to?the?application?are?saved?*/
WNDCLASSEX?wincl;????????/*?Data?structure?for?the?windowclass?*/
int?i;
/*CTestDlg?*pDlg;*/
?/*?The?Window?structure?*/
wincl.hInstance?=?hThisInstance;
wincl.lpszClassName?=?szClassName;
wincl.lpfnWndProc?=?WindowProcedure;??????/*?This?function?is?called?by?windows?*/
wincl.style?=?CS_DBLCLKS;?????????????????/*?Catch?double-clicks?*/
wincl.cbSize?=?sizeof(WNDCLASSEX);
/*?Use?default?icon?and?mouse-pointer?*/
wincl.hIcon?=?LoadIcon(NULL?IDI_APPLICATION);
wincl.hIconSm?=?LoadIcon(NULL?IDI_APPLICATION);
wincl.hCursor?=?LoadCursor(NULL?IDC_ARROW);
wincl.lpszMenuName?=?NULL;?????????????????/*?No?menu?*/
wincl.cbClsExtra?=?0;??????????????????????/*?No?extra?bytes?after?the?window?class?*/
wincl.cbWndExtra?=?0;??????????????????????/*?structure?or?the?window?instance?*/
/*?Use?Windows‘s?default?color?as?the?background?of?the?window?*/
wincl.hbrBackground?=?(HBRUSH)COLOR_BACKGROUND;
/*?Register?the?window?class?and?if?it?fails?quit?the?program?*/
if?(!RegisterClassEx(&wincl))
return?0;
/*?The?class?is?registered?let‘s?create?the?program*/
hwnd?=?CreateWindowEx(
0???????????????????/*?Extended?possibilites?for?variation?*/
szClassName?????????/*?Classname?*/
_T(“函數繪圖語言解釋器“)???????/*?title?Text?*/
WS_OVERLAPPEDWINDOW?/*?default?window?*/
CW_USEDEFAULT???????/*?Windows?decides?the?position?*/
CW_USEDEFAULT???????/*?where?the?window?ends?up?on?the?screen?*/
740?????????????????/*?The?programs?width?*/
490?????????????????/*?and?height?in?pixels?*/
HWND_DESKTOP????????/*?The?window?is?a?child-window?to?desktop?*/
NULL????????????????/*?No?menu?*/
hThisInstance???????/*?Program?Instance?handler?*/
NULL?????????????????/*?No?Window?Creation?data?*/
);
/*?Make?the?window?visible?on?the?screen?*/
ShowWindow(hwnd?nFunsterStil);
hDC?=?GetDC(hwnd);
/*?pDlg=new?CTestDlg();
pDlg->Create(IDD_DIALOG1this);
?pDlg->ShowWindow(SW_SHOW);*/
strcpy(SrcFilePath?“test2.txt“);
if?(!CheckSrcFile(SrcFilePath))?return?1;
//?--------------------------------------------
// 調用繪圖語言解釋器
Parser(SrcFilePath);
//?--------------------------------------------
/*?Run?the?message?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-12-24?23:12??編譯原理大作業--繪圖解釋器\
?????文件????????2189??2018-12-24?23:22??編譯原理大作業--繪圖解釋器\README.txt
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\
?????文件???????33280??2018-12-12?00:48??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\.suo
?????文件????33792000??2018-12-12?00:48??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\Browse.VC.db
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\ipch\
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\ipch\AutoPCH\
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\ipch\AutoPCH\aa5a4503b8df32df\
?????文件????47972352??2018-12-11?23:26??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\ipch\AutoPCH\aa5a4503b8df32df\MAIN.ipch
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\ipch\AutoPCH\da6b7f56d3a9246c\
?????文件????44498944??2018-12-11?23:17??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\ipch\AutoPCH\da6b7f56d3a9246c\MAIN.ipch
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\ipch\AutoPCH\e236ce4e90fddf5e\
?????文件????46792704??2018-12-11?23:23??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\ipch\AutoPCH\e236ce4e90fddf5e\SEMANTIC.ipch
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\ipch\AutoPCH\e5f50400a1c5763e\
?????文件????43384832??2018-12-11?23:17??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\.vs\Compilationprinciple\v15\ipch\AutoPCH\e5f50400a1c5763e\SEMANTIC.ipch
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\
?????文件????????6424??2018-12-11?23:26??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Compilationprinciple.vcxproj
?????文件????????1796??2018-12-11?23:26??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Compilationprinciple.vcxproj.filters
?????文件?????????165??2018-12-11?23:14??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Compilationprinciple.vcxproj.user
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Debug\
?????目錄???????????0??2018-12-24?23:05??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Debug\Compilat.2878A0F1.tlog\
?????文件????????2252??2018-12-11?23:18??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Debug\Compilat.2878A0F1.tlog\CL.command.1.tlog
?????文件???????42816??2018-12-11?23:18??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Debug\Compilat.2878A0F1.tlog\CL.read.1.tlog
?????文件????????2456??2018-12-11?23:18??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Debug\Compilat.2878A0F1.tlog\CL.write.1.tlog
?????文件?????????220??2018-12-11?23:18??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Debug\Compilat.2878A0F1.tlog\Compilationprinciple.lastbuildstate
?????文件???????????0??2018-12-11?23:18??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Debug\Compilat.2878A0F1.tlog\unsuccessfulbuild
?????文件????????1150??2018-12-11?23:18??編譯原理大作業--繪圖解釋器\繪圖解釋器項目工程\Compilationprinciple\Compilationprinciple\Debug\Compilationprinciple.log
............此處省略48個文件信息
評論
共有 條評論