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

📄 table.cpp

📁 PL0的编译系统,使用MFC编写界面,采用浮动窗口来仿VC的环境
💻 CPP
字号:
// 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)
		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

⌨️ 快捷键说明

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