⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 一个采用面向对象实现编译解释器,自己验证过绝对能用.
💻 CPP
字号:
#include "semantics.h"
#include <windows.h>

#define MAX_CHARS 200
HDC hDC;
char SrcFilePath[MAX_CHARS];
static char Name[]="Compiler";


static bool PrepareWindow(HINSTANCE,HINSTANCE,int);


static bool CheckSrcFile(LPSTR);



static LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);


int APIENTRY WinMain(
					 HINSTANCE hinstance,
					 HINSTANCE hPrevInstance,
					 LPSTR lpCmdLine,
					 int nCmdShow)
{
	lpCmdLine="Draw.txt";

	strcpy(SrcFilePath,lpCmdLine);

    if(PrepareWindow(hinstance,hPrevInstance,nCmdShow)!=true)
	{
		MessageBox(NULL,"窗口初始化失败","错误",MB_OK);
		return 1;
	}

	if(!CheckSrcFile(lpCmdLine)) return 1;


	Parser(SrcFilePath);


	MSG Msg;
	while(GetMessage(&Msg,NULL,0,0))
	{
		TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	return Msg.wParam;
}



//..............初始化窗口处理
bool PrepareWindow(HINSTANCE hinst,
				   HINSTANCE hPrevInstance,
				   int nCmdShow)
{
	HWND hWnd;
	WNDCLASS W;
	memset(&W,0,sizeof(WNDCLASS));
	W.style=CS_HREDRAW|CS_VREDRAW;
	W.lpfnWndProc = WndProc;
	W.hInstance=hinst;
	W.hCursor=LoadCursor(NULL,IDC_ARROW);
	W.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
    W.lpszClassName=Name;
	RegisterClass(&W);
	
	hWnd=CreateWindow(Name,Name,
		WS_OVERLAPPEDWINDOW,10,10,740,490,NULL,NULL,hinst,NULL);
	if(hWnd==NULL)
		return false;
	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);
	SetCursor(LoadCursor(hinst,IDC_ARROW));

	hDC=GetDC(hWnd);
	return true;
}

//..........检查源程序文件是否合法函数实现
bool CheckSrcFile(LPSTR lpszCmdParam)
{
	FILE *file=NULL;
	if(strlen(lpszCmdParam)==0)
	{
		MessageBox(NULL,"未指定源程序文件","错误",MB_OK);
		return false;
	}
	if((file=fopen(lpszCmdParam,"r"))==NULL)
	{
		MessageBox(NULL,"打开源程序文件出错","错误",MB_OK);
		MessageBox(NULL,lpszCmdParam,"文件名",MB_OK);
		return false;
	}
	else fclose(file);
	return true;
}

//...............、窗口处理函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT Message,WPARAM wParam,LPARAM lParam)
{
	switch(Message)
	{
	case WM_DESTROY:
		ReleaseDC(hWnd,hDC);
		PostQuitMessage(0);
		return 0;
		break;
	case	WM_PAINT:
		PAINTSTRUCT pt;
		BeginPaint(hWnd,&pt);
		Parser(SrcFilePath);
		EndPaint(hWnd,&pt);
	default:
		return DefWindowProc(hWnd,Message,wParam,lParam);
	}
}


#ifdef _BC_COMPILER
#include "semantics.h"
int main(int argc,char **argv)
{
	int Result;
	if(!InitGraph())
		return -1;
	if(argc!=2)
		return -1;
	Parser(argv[1]);
	CloseGraph();
	return 0;
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -