PL0的编译系统,使用MFC编写界面,采用浮动窗口来仿VC的环境

源代码在线查看: table.cpp

软件大小: 219 K
上传用户: x395450030
关键词: PL0 MFC 编译系统 编写
下载地址: 免注册下载 普通下载 VIP

相关代码

				// Table.cpp : implementation file
				//
				
				#include "stdafx.h"
				#include "My1.h"
				#include "Table.h"
				
				#ifdef _DEBUG
				#define new DEBUG_NEW
				#undef THIS_FILE
				static char THIS_FILE[] = __FILE__;
				#endif
				
				/////////////////////////////////////////////////////////////////////////////
				// CTable
				
				CTable::CTable()
				{
				}
				CTable::CTable(CCompiler *compiler)
				{
					mCompiler	=compiler;
					lev		=0;
					tx[0]		=0;
					table[0].name[0]=0;
				}
				CTable::~CTable()
				{
				}
				void CTable::Enter(enum object k)
				{
					if (mCompiler->mPhraseAnalysis->Level()>lev)
						tx[++lev]=tx[lev-1];
					else if (mCompiler->mPhraseAnalysis->Level()						lev--;
				
					tx[lev]++;
					if (tx[lev]>=TABLE_SIZE) return;
					strcpy(table[tx[lev]].name,mCompiler->mWordAnalysis->id);
					table[tx[lev]].kind=k;
					switch (k)
					{
					case constant:
						table[tx[lev]].val=mCompiler->mWordAnalysis->num;
						break;
					case variable:
						table[tx[lev]].level=mCompiler->mPhraseAnalysis->Level();
						table[tx[lev]].adr=mCompiler->mPhraseAnalysis->DataAddr();
						break;
					case procedure:
						table[tx[lev]].level=mCompiler->mPhraseAnalysis->Level();
						break;
					}
				}
				int CTable::Position(char *id)
				{
					int i=tx[lev];
					while (stricmp(table[i].name,id) && i>0) i--;
					return i;
				}
				BEGIN_MESSAGE_MAP(CTable, CWnd)
					//{{AFX_MSG_MAP(CTable)
						// NOTE - the ClassWizard will add and remove mapping macros here.
					//}}AFX_MSG_MAP
				END_MESSAGE_MAP()
				
				
				/////////////////////////////////////////////////////////////////////////////
				// CTable message handlers
							

相关资源