亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? compiledlg.cpp

?? 用于用C++編寫(xiě)的詞法分析分析器
?? CPP
字號(hào):
// CompileDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Compile.h"
#include "CompileDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCompileDlg dialog

CCompileDlg::CCompileDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCompileDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCompileDlg)
	m_fileName = _T("");
	m_edit = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCompileDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCompileDlg)
	DDX_Control(pDX, IDC_LIST_RESAULT, m_listResault);
	DDX_Control(pDX, IDC_LIST_FILE, m_listFile);
	DDX_Text(pDX, IDC_EDIT_FILENAME, m_fileName);
	DDX_Text(pDX, IDC_EDIT1, m_edit);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CCompileDlg, CDialog)
	//{{AFX_MSG_MAP(CCompileDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON_LOADFILE, OnButtonLoadfile)
	ON_LBN_SELCHANGE(IDC_LIST_FILE, OnSelchangeListFile)
	ON_BN_CLICKED(IDC_BUTTON_ANALYSE, OnButtonAnalyse)
	ON_BN_CLICKED(IDC_BUTTON_ANALYSEALL, OnButtonAnalyseall)
	ON_BN_CLICKED(IDC_BUTTON_ANALYSEEDIT, OnButtonAnalyseedit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCompileDlg message handlers

BOOL CCompileDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
//狀態(tài)表
	for(int j=0;j<16;j++)
	{
		for(int i=0;i<23;i++)
		{
			State[j][i]=0;

		}
	}//初試化

	
	//構(gòu)造第一個(gè)狀態(tài)的轉(zhuǎn)換
//	State=new int[23][16];
	State[0][0]=1;
	State[0][1]=2;
	State[0][2]=3;
	State[0][3]=4;
	State[0][4]=8;
	State[0][5]=9;
	State[0][6]=11;
	State[0][7]=13;
	State[0][8]=15;
	State[0][9]=17;
//	State[0][10]=2;
	State[0][11]=19;
//	State[0][12]=2;
	State[0][13]=21;
//	State[0][14]=2;
	State[0][15]=0;    //狀態(tài)為非終結(jié)的

	//構(gòu)造第二個(gè)狀態(tài)轉(zhuǎn)換
	State[1][0]=1;
	State[1][15]=1;//狀態(tài)為終結(jié)的

	//構(gòu)造第三個(gè)狀態(tài)
	State[2][1]=2;
	State[2][15]=1;

		//構(gòu)造第五個(gè)狀態(tài)
	State[4][4]=5;
	State[4][15]=1;

	//構(gòu)造第五個(gè)狀態(tài)
	State[4][4]=5;
	State[4][15]=1;

	//構(gòu)造第六個(gè)狀態(tài)
	//構(gòu)造第七個(gè)狀態(tài)
	for(int p=0;p<16;p++)
	{
		State[5][p]=5;
		State[6][p]=5;

	}
	State[5][4]=6;
	State[6][3]=7;
	State[6][4]=6;
	State[5][15]=State[6][15]=0;

	//構(gòu)造其它狀態(tài)
	State[9][7]=10;
	State[11][7]=12;
	State[13][7]=14;
	State[15][7]=16;
	State[17][10]=18;
	State[19][12]=20;
	State[20][14]=22;

//定義是否是結(jié)束狀態(tài)
	State[1][15]=1;
	State[2][15]=1;
	State[3][15]=1;
	State[4][15]=1;
	State[7][15]=1;
	State[8][15]=1;
	State[9][15]=1;
	State[10][15]=1;
	State[11][15]=1;
	State[12][15]=1;
	State[13][15]=1;
	State[14][15]=1;
	State[15][15]=1;
	State[16][15]=1;
	State[18][15]=1;
	State[20][15]=1;
	State[22][15]=1;

	//CString headString=_T("");

	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CCompileDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CCompileDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CCompileDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CCompileDlg::OnButtonLoadfile() 
{
    CStdioFile textFile;
	CString strItem;
	UpdateData(TRUE);
	if(!m_fileName.IsEmpty())
	{
		if(textFile.Open(m_fileName,CFile::modeRead | CFile::typeText))
		{
			    textFile.SeekToBegin();
				while(textFile.ReadString(strItem))
				{
					this->m_listFile.AddString(strItem);
					
				}
	        	UpdateData(TRUE);
			

		}
		else
		{
			AfxMessageBox("OPEN FILE FAIL!");
		}

		
	}
	else
	{
		AfxMessageBox("PLEASE INPUT A FILE NAME!");
	}
		
}

void CCompileDlg::OnSelchangeListFile() 
{
	this->m_listResault.ResetContent();
	CString selectString;
	int pos=this->m_listFile.GetCurSel( );
	m_listFile.GetText(pos,selectString);
	//獲得選擇的字符串
	Analyse(selectString);
	
}


void CCompileDlg::Analyse(CString& analyseString)
{
	//分析過(guò)程
	
	int begin=0;
	int front=0;
	int size=analyseString.GetLength();
	int preSta=0;
	int Sta=0;
	char preChar;

	for(int i=0;i<size;i++)//匹配,并且跳轉(zhuǎn)狀態(tài)
	{
		preSta=Sta;
		preChar=analyseString.GetAt(i);

   		if(isalpha(preChar))
		{

			Sta=State[Sta][0];
		}
		else if(isdigit(preChar))
		{
			Sta=State[Sta][1];
			
		}
		else if(preChar=='+'||preChar=='-'||preChar==';'||preChar==',')
		{
			Sta=State[Sta][2];
		}
		else if(preChar=='/')
		{
            Sta=State[Sta][3];
		}
		else if(preChar=='*')
		{
            Sta=State[Sta][4];
		}
		else if(preChar=='<')
		{
            Sta=State[Sta][5];
		}
		else if(preChar=='>')
		{
            Sta=State[Sta][6];
		}
		else if(preChar=='=')
		{
            Sta=State[Sta][7];
		}
		else if(preChar=='!')
		{
            Sta=State[Sta][8];
		}
		else if(preChar=='(')
		{
            Sta=State[Sta][9];
		}
		else if(preChar==')')
		{
            Sta=State[Sta][10];
		}
		else if(preChar=='[')
		{
            Sta=State[Sta][11];
		}
		else if(preChar==']')
		{
            Sta=State[Sta][12];
		}
		else if(preChar=='{')
		{
            Sta=State[Sta][13];
		}
		else if(preChar=='}')
		{
            Sta=State[Sta][14];
		}
		else if(isspace(preChar))
		{
			Sta=0;
		}
		else
		{
			Sta=-1;
		}
		//如果有錯(cuò)誤
		if(Sta==-1)
		{
			CString errorchar=analyseString.Mid(i,1);
			this->m_listResault.AddString("THERE ARE BAD CHARAVTOR:"+errorchar);
			break;
		}
		//如果,跳轉(zhuǎn)到一個(gè)錯(cuò)誤的狀態(tài)(回到初試化狀態(tài))
		if(Sta==0)
		{
			CString token;
			token=analyseString.Mid(begin,i-begin);
			token.Remove(' ');
			if(State[preSta][15]==1)
			{
				
				//判斷跳轉(zhuǎn)之前的狀態(tài)是否為結(jié)束
				if(preSta==1)
				{
					if(token=="else"||token=="if"||token=="int"||token=="return"||token=="void"||token=="while")
					{
						this->m_listResault.AddString("KEY WORD:"+token);
					}
					else
					{
						this->m_listResault.AddString("ID:"+token);
					}
				}
				else if(preSta==2)
				{
					this->m_listResault.AddString("NUMBER:"+token);
				}
				else 
				{
					this->m_listResault.AddString("OPERATION:"+token);
				}
			}
			else
			{
				this->m_listResault.AddString("ERRORTOKEN:"+token);

			}
			begin=i;

		}
		//假如字符為最后一個(gè)字符了

		if(i==size-1)
		{
//			AfxMessageBox();
			CString token;
			token=analyseString.Mid(begin);
			token.Remove(' ');
			if(State[Sta][15]==1)
			{
				
				
				if(Sta==1)
				{
					if(token=="else"||token=="if"||token=="int"||token=="return"||token=="void"||token=="while")
					{
						this->m_listResault.AddString("KEY WORD:"+token);
					}
					else
					{
						this->m_listResault.AddString("ID:"+token);
					}
				}
				else if(preSta==2)
				{
					this->m_listResault.AddString("NUMBER:"+token);
				}
				else 
				{
					this->m_listResault.AddString("OPERATION:"+token);
				}


			}
			else
			{
				
				this->m_listResault.AddString("ERRORTOKEN:"+token);

			}
		}


	}

}

void CCompileDlg::OnButtonAnalyse() 
{
	if(this->m_listFile.GetSel(0)!=LB_ERR)
	{
	    OnSelchangeListFile();
	}
	
}

void CCompileDlg::OnButtonAnalyseall() 
{
	this->m_listResault.ResetContent();
	CString selectString;
	for(int i=0;i<m_listFile.GetCount();i++)
	{
	     m_listFile.GetText(i,selectString);
	     Analyse(selectString);
		 this->m_listResault.AddString("\n");
	}
	
}

void CCompileDlg::OnButtonAnalyseedit() 
{
    this->m_listResault.ResetContent();
	CString selectString;
	UpdateData(TRUE);
	selectString=this->m_edit;
	Analyse(selectString);
	
	
}



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜私人影院久久久久| 国产欧美一区二区三区鸳鸯浴 | 日本怡春院一区二区| 欧美性猛交一区二区三区精品| 亚洲人成亚洲人成在线观看图片 | 狠狠色丁香久久婷婷综合_中| 欧美大片顶级少妇| 国产精品一卡二| 日韩理论片在线| 欧美日本一区二区| 国精产品一区一区三区mba桃花 | 18涩涩午夜精品.www| 91看片淫黄大片一级| 亚洲成人一区在线| 亚洲精品一区二区三区四区高清 | 奇米一区二区三区| 久久久久久久久久久久电影| gogogo免费视频观看亚洲一| 亚洲高清免费观看高清完整版在线观看 | 中文字幕av免费专区久久| a美女胸又www黄视频久久| 亚洲五月六月丁香激情| 精品日韩一区二区三区| 欧美一区二区在线播放| 久久精品国产**网站演员| 中文字幕欧美国产| 欧美区在线观看| 国产ts人妖一区二区| 亚洲尤物视频在线| 久久人人超碰精品| 在线精品视频一区二区三四| 麻豆91精品视频| 亚洲人成小说网站色在线| 欧美一区二区精品在线| 色婷婷久久久久swag精品| 久久精工是国产品牌吗| 亚洲天堂久久久久久久| 欧美电视剧免费全集观看| 色诱视频网站一区| 国产精品99久久久久久久女警| 亚洲卡通动漫在线| 国产欧美一二三区| 日韩西西人体444www| 色天使久久综合网天天| 国产成人在线看| 另类小说一区二区三区| 一区二区三区欧美视频| 国产精品污www在线观看| 日韩欧美www| 欧美日韩高清在线播放| 99久久99久久免费精品蜜臀| 精品一区二区三区的国产在线播放| 一区二区三区国产豹纹内裤在线| 久久精品在这里| 日韩久久久久久| 6080午夜不卡| 欧美性色综合网| 91蝌蚪porny九色| 成人av午夜电影| 国产成人亚洲精品狼色在线 | 国产在线精品免费| 日韩成人午夜精品| 亚洲国产精品一区二区www在线| 亚洲欧洲国产专区| 国产精品美女一区二区三区| 久久久蜜臀国产一区二区| 日韩欧美www| 欧美不卡一区二区| 日韩精品一区二区三区老鸭窝| 欧美少妇bbb| 欧美日韩亚洲综合| 欧美日韩国产首页在线观看| 欧洲视频一区二区| 欧美在线免费观看视频| 欧美日韩中字一区| 欧美日韩一区二区三区四区| 欧美曰成人黄网| 欧美午夜理伦三级在线观看| 色婷婷综合激情| 在线观看av一区| 欧美酷刑日本凌虐凌虐| 欧美男生操女生| 日韩一二在线观看| 欧美电影免费观看高清完整版在线观看| 欧美高清视频一二三区 | 欧美日韩一二三区| 91精品免费观看| 欧美第一区第二区| 国产性做久久久久久| 久久久久久久久久久99999| 久久色视频免费观看| 国产视频一区在线播放| 国产精品美女久久久久久久| 亚洲婷婷综合久久一本伊一区| 亚洲乱码日产精品bd| 亚洲高清免费在线| 久久成人免费日本黄色| 国产风韵犹存在线视精品| 成人av电影在线网| 欧美影院午夜播放| 欧美zozozo| 一区精品在线播放| 图片区小说区区亚洲影院| 久久99精品国产.久久久久| 国产不卡视频一区| 欧美午夜免费电影| 精品久久一二三区| 亚洲视频免费观看| 日韩av电影一区| 69av一区二区三区| 精品福利二区三区| 亚洲欧美日韩一区二区三区在线观看| 亚洲图片欧美综合| 捆绑调教美女网站视频一区| www.欧美日韩国产在线| 欧美一区日韩一区| 中国av一区二区三区| 亚洲成av人片在www色猫咪| 国产麻豆日韩欧美久久| 色综合久久88色综合天天免费| 91精品国产综合久久精品性色| 欧美激情综合五月色丁香| 亚洲成人www| 国产不卡高清在线观看视频| 欧美日韩高清一区二区不卡| 国产亚洲精品超碰| 日本特黄久久久高潮| 91在线porny国产在线看| 欧美成人vr18sexvr| 亚洲精品视频一区| 国产成人鲁色资源国产91色综| 在线看日韩精品电影| 久久精品视频在线免费观看| 水蜜桃久久夜色精品一区的特点| 成人在线综合网| 欧美mv日韩mv亚洲| 午夜欧美一区二区三区在线播放| 成人激情文学综合网| 2020国产精品久久精品美国| 亚洲成人高清在线| 色先锋资源久久综合| 国产日韩欧美在线一区| 久久精品国产一区二区| 欧美日韩国产精选| 一区免费观看视频| 成人一级黄色片| 久久亚洲综合av| 蓝色福利精品导航| 91精品视频网| 天天色综合天天| 欧美日韩国产高清一区二区三区| 中文字幕亚洲一区二区av在线| 国产精品18久久久久久久网站| 欧美成人精品高清在线播放| 天堂在线一区二区| 欧美日韩第一区日日骚| 亚洲午夜三级在线| 欧美伊人精品成人久久综合97| 中文字幕视频一区| 不卡一区中文字幕| 国产精品污网站| 本田岬高潮一区二区三区| 欧美极品xxx| 成人在线视频一区| 国产精品欧美一级免费| 成人激情校园春色| 国产精品美女一区二区在线观看| 成人综合日日夜夜| 一区二区中文视频| 色综合一区二区三区| 丰满亚洲少妇av| 国产欧美综合在线观看第十页| 国产精品88av| 国产精品伦一区| 97se亚洲国产综合自在线| 亚洲欧美日韩在线播放| 在线视频综合导航| 日韩专区一卡二卡| 日韩三级精品电影久久久| 精品一区在线看| 国产欧美精品一区二区三区四区| 成人小视频免费观看| 1024成人网| 欧美日韩极品在线观看一区| 日韩精品91亚洲二区在线观看| 日韩美女视频在线| 成人免费视频视频在线观看免费| 国产精品久久久久久久久搜平片 | 日本一不卡视频| 精品国产一区二区三区忘忧草| 国产精品99久| 亚洲久草在线视频| 欧美一区二区三区四区高清 | 高清在线不卡av| 亚洲欧美激情在线| 91精品国产黑色紧身裤美女| 国产精品乡下勾搭老头1| 国产精品你懂的| 欧美精品粉嫩高潮一区二区| 国产一区二三区|