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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pascalcompiler.cpp

?? C++ mfc 源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		}
		if (NextToken()!=')')
			throw error(SET_EXPECTED, CString(")"));
	}
	else
	{
		PushBack();
		if (simb.m_ListaPar.GetCount () != 0)
				throw error(SET_GENERAL, CString("Some parameters expected"));
	}
	type.m_nAtribLValue = LV_VALUE;
	type.m_nAtribTip = simb.m_nType ;
}


/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.8 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/

void CPascalCompiler::InstrWhile()
{
	if (NextToken()!=TT_KW_WHILE)
		throw error(SET_EXPECTED, CString("while"));
	Conditie();
	if (NextToken()!=TT_KW_DO)
		throw error(SET_EXPECTED, CString("do"));
	Instr();
}


/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.8 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/

void CPascalCompiler::Conditie()
{
	int val;
	while (1)
	{
		if (NextToken()!=TT_KW_NOT)
			PushBack();
		ExprLogica();
		val = NextToken();
		if (val != TT_KW_AND && val != TT_KW_OR)
		{
			PushBack();
			break;
		}
	}
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.11 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void CPascalCompiler::ExprLogica()
{
	ExprType type;
	Expr(type);
	int val = NextToken();
	switch (val)
	{
	case '=':break;
	case '<':break;
	case '>':break;
	case TT_GTE:break;
	case TT_LWE:break;
	case TT_NE:break;
	default: throw error(SET_EXPECTED, CString("logical operator"));;
	}
	Expr(type);
}
/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.11 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void CPascalCompiler::InstrRepeat()
{
	if (NextToken()!=TT_KW_REPEAT)
		throw error(SET_EXPECTED, CString("repeat"));
	Instr();
	if (NextToken()!=TT_KW_UNTIL)
		throw error(SET_EXPECTED, CString("until"));
	Conditie();
}


/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.11 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/

void CPascalCompiler::InstrIf()
{
	if (NextToken()!=TT_KW_IF)
		throw error(SET_EXPECTED, CString("if"));
	Conditie();
	if (NextToken()!=TT_KW_THEN)
		throw error(SET_EXPECTED, CString("then"));
	Instr();
	if (NextToken()==TT_KW_ELSE)
	{
		Instr();
	}
	else PushBack();
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.11 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void CPascalCompiler::InstrFor()
{
	if (NextToken()!=TT_KW_FOR)
		throw error(SET_EXPECTED, CString("for"));
	ExprType type;
	Variabila(type);
	if (type.m_nAtribLValue!=LV_ADDRESS)
		throw error(SET_GENERAL, CString("Variable expected"));
	if (type.m_nAtribTip != ET_INTEGER)
		throw error(SET_GENERAL, CString("Variable of integer type expected"));
	if (NextToken()!=TT_IS)
		throw error(SET_EXPECTED, CString(":="));
	Expr(type);
	if (type.m_nAtribTip != ET_INTEGER)
		throw error(SET_GENERAL, CString("The For value must be of integer type"));
	int val = NextToken();
	if (val==TT_KW_TO)
	{
		// varianta To
		;
	}
	else
		if (val==TT_KW_DOWNTO)
		{
			// varianta DownTo
			;
		}
		else throw error(SET_EXPECTED, CString("to or downto"));;
	Expr(type);
	if (type.m_nAtribTip != ET_INTEGER)
		throw error(SET_GENERAL, CString("The For value must be of integer type"));
	if (NextToken() == TT_KW_STEP)
	{
		Expr(type);
		if (type.m_nAtribTip != ET_INTEGER)
			throw error(SET_GENERAL, CString("The For value must be of integer type"));
	}
	else PushBack();
	if (NextToken()!=TT_KW_DO)
		throw error(SET_EXPECTED, CString("do"));
	Instr();
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.11 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void CPascalCompiler::InstrCase()
{
	if (NextToken() != TT_KW_CASE)
		throw error(SET_EXPECTED, CString("case"));
	ExprType type;
	Expr(type);
	if (type.m_nAtribTip != ET_INTEGER)
		throw error(SET_GENERAL, CString("Case requires Integer"));

	if (NextToken() != TT_KW_OF)
		throw error(SET_EXPECTED, CString("of"));
	ListaAltern();
	if (NextToken() != TT_KW_END)
		throw error(SET_EXPECTED, CString("end"));
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.11 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void CPascalCompiler::ListaAltern()
{
	while (1)
	{
		while (1)
		{
			int val = NextToken();
			if (val!=TT_INTEGER || val != TT_REAL)
				throw error(SET_EXPECTED, CString("number"));
			if (NextToken()!=',')
			{
				PushBack();
				break;
			}
		}
		if (NextToken()!=':')
			throw error(SET_EXPECTED, CString(":"));
		Instr();
		if (NextToken()!=';')
			{
				PushBack();
				break;
			}
	}
	if (NextToken() == TT_KW_OTHERWISE)
	{
		Instr();
	}
	else
		PushBack();

}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.11 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void CPascalCompiler::ApelProcedura()
{
	if (NextToken()!= TT_WORD)
		throw error(SET_EXPECTED, CString("identifier"));
	Symbol simb;
	RetreaveSymbol(GetStrValue(),simb);
	POSITION pos = simb.m_ListaPar.GetHeadPosition ();
	if (NextToken()=='(')
	{
		while (1)
		{
			if (pos == NULL)
				throw error(SET_GENERAL, CString("Too many parameters"));
			Param par = simb.m_ListaPar .GetNext(pos);
			ExprType type;
			Expr(type);
			if (type.m_nAtribTip != par.m_nType )
				throw error(SET_GENERAL, CString("Invalid Parameter type"));
			if (par.m_nTransmisie == LV_ADDRESS && type.m_nAtribLValue== LV_VALUE )
				throw error(SET_GENERAL, CString("Invalid Parameter, must be a variable"));
			if (NextToken()!=',')
			{
				PushBack();
				if (pos != NULL)
					throw error(SET_GENERAL, CString("Too few parameters"));
				break;
			}
		}
		if (NextToken()!=')')
			throw error(SET_EXPECTED, CString(")"));
	}
	else
	{
		PushBack();
		if (simb.m_ListaPar.GetCount () != 0)
			throw error(SET_GENERAL, CString("Some parameters expected"));
	}
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.11 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void CPascalCompiler::InstrPrint()
{
	if (NextToken()!=TT_KW_PRINT)
		throw error(SET_EXPECTED, CString("print"));
	if (NextToken()!='(')
		throw error(SET_EXPECTED, CString("("));
	while (1)
	{
		if (NextToken()!=TT_STRING)
		{
			PushBack();
			ExprType type;
			Expr(type);
		}
		if (NextToken()!=',')
		{
			PushBack();
			break;
		}
	}
	if (NextToken()!=')')
		throw error(SET_EXPECTED, CString(")"));
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.11 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void CPascalCompiler::InstrRead()
{
	if (NextToken()!=TT_KW_READ)
		throw error(SET_EXPECTED, CString("read"));
	if (NextToken()!='(')
		throw error(SET_EXPECTED, CString("("));
	while (1)
	{
		ExprType type;
		Variabila(type);
		if (NextToken()!=',')
		{
			PushBack();
			break;
		}
	}
	if (NextToken()!=')')
		throw error(SET_EXPECTED, CString(")"));
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.13 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/

CString error::GetErrStr()
{
	CString estr;
	switch (m_nType)
	{
	case SET_GENERAL: estr.Format("Syntax ERROR, %s",m_sData);break;
	case SET_EXPECTED: estr.Format("%s expected",m_sData);break;
	case SET_INVALID_OP_TYPES: estr.Format("Invalid operation between different types, %s",m_sData);break;
	case SET_INVALID_OP: estr.Format("Invalid operation , %s",m_sData);break;
	default: estr = _T("Syntax ERROR");
	}
	return estr;
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.29 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


CString CPascalCompiler::GetErrStr(error &e)
{
	CString str;
	str.Format("%s  at : %d", e.GetErrStr(), LineNo ());	
	return str;
}



/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.29 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


SymbolTableCollection::SymbolTableCollection()
{
}


/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.29 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


SymbolTableCollection::~SymbolTableCollection()
{
	POSITION pos = GetHeadPosition();
	while (pos!=NULL)
	{
		SymbolTable *table = GetNext(pos);
		delete table;
	}
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.29 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void SymbolTableCollection::IncreaseLevel()
{
	SymbolTable *ntable = new SymbolTable();
	ntable->InitHashTable( MAX_SYMB );
	AddHead(ntable);
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.29 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void SymbolTableCollection::DecreaseLevel()
{
	SymbolTable *ntable = GetHead();
	delete ntable;
	RemoveHead();
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.29 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/

void SymbolTableCollection::InsertSymbol(Symbol &s)
{
	SymbolTable *ntable = GetHead();
	(*ntable)[s.m_sName] = s;
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.29 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


BOOL SymbolTableCollection::RetreaveSymbolCL(CString& name, Symbol &simb)
{
	SymbolTable *ntable = GetHead();
	return ntable->Lookup(name,simb);
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.29 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


BOOL CPascalCompiler::RetreaveSymbol(CString &name, Symbol &simb)
{
	return m_SymbTableCollection.RetreaveSymbolAL (name,simb);
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.30 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/


void CPascalCompiler::IncreaseLevel()
{
	m_SymbTableCollection.IncreaseLevel ();	
	m_nVNivel++;
}

/*
***header
***name
***memberof
***history
1.0.0 ; 1999.1.30 ; FZ ; Creation
***description
***notes
***uses
***var_in
***var_out
***err_out
***flags
***specifications
***documents
*/

void CPascalCompiler::DecreaseLevel()
{
	m_SymbTableCollection.DecreaseLevel ();	
	m_nVNivel--;
}

BOOL SymbolTableCollection::RetreaveSymbolAL(CString &name, Symbol &simb)
{
	SymbolTable *ntable = NULL;
	POSITION pos = GetHeadPosition();
	while (pos != NULL)
	{
		ntable = GetNext(pos);
		if (ntable->Lookup(name,simb))
			return TRUE;
	}
	return FALSE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩一区二区三区免费视频| 国产在线精品免费| 国产婷婷一区二区| 日韩一级片在线观看| 欧美日韩不卡视频| 欧美专区亚洲专区| 欧美探花视频资源| 欧美一区在线视频| 欧美一区二区三区在线观看视频 | 五月天国产精品| 国产精品毛片久久久久久久| 日本一区二区三区视频视频| 中文欧美字幕免费| 国产精品久久久久aaaa樱花| 国产精品免费久久| 一区二区在线观看不卡| 日韩理论电影院| 亚洲女与黑人做爰| 亚洲成av人在线观看| 日本不卡一二三区黄网| 亚洲男人的天堂网| 亚洲一区在线观看免费观看电影高清 | 91在线视频官网| 日本韩国欧美国产| 777色狠狠一区二区三区| 精品三级av在线| 国产精品夫妻自拍| 樱桃国产成人精品视频| 午夜精品一区在线观看| 日韩激情中文字幕| 久久色在线观看| 亚洲国产经典视频| 亚洲五码中文字幕| 蜜芽一区二区三区| 成人免费视频视频在线观看免费| 91丨九色丨蝌蚪丨老版| 91精品国产全国免费观看| 久久免费的精品国产v∧| 国产日韩欧美高清| 日本亚洲最大的色成网站www| 激情成人综合网| 在线观看日韩精品| 国产丝袜美腿一区二区三区| 亚洲综合色自拍一区| 国产在线观看一区二区 | 欧美韩日一区二区三区| 亚洲同性gay激情无套| 蜜桃视频在线一区| 欧美视频精品在线观看| 国产欧美一区二区精品秋霞影院 | 26uuuu精品一区二区| 最新日韩av在线| 婷婷六月综合亚洲| www.久久精品| 久久久久久久久岛国免费| 亚洲福利一区二区三区| 9l国产精品久久久久麻豆| 精品国产免费人成电影在线观看四季 | 国产剧情一区在线| 69久久99精品久久久久婷婷 | 久久伊99综合婷婷久久伊| 亚洲一区二区四区蜜桃| 国产成人午夜电影网| 88在线观看91蜜桃国自产| 亚洲精品国产成人久久av盗摄| 国产二区国产一区在线观看| 精品88久久久久88久久久| 五月天婷婷综合| 欧美日韩在线播放三区四区| 综合欧美亚洲日本| 成人免费电影视频| 中文字幕一区二区视频| 成人综合婷婷国产精品久久免费| 日韩精品一区二区三区蜜臀 | 1024成人网| 99视频有精品| 亚洲日本在线a| 91色在线porny| 中文字幕一区二区5566日韩| 成人激情黄色小说| 天堂av在线一区| 日韩成人一区二区| 欧美亚洲国产一区在线观看网站| 亚洲伦在线观看| 91免费看视频| 亚洲视频一区二区免费在线观看| 不卡在线视频中文字幕| 国产精品视频免费看| 国产成人午夜精品影院观看视频| 国产精品视频麻豆| 不卡一区二区中文字幕| 国产精品欧美极品| 91蜜桃婷婷狠狠久久综合9色| 一区在线播放视频| 一本久久综合亚洲鲁鲁五月天| 亚洲色图丝袜美腿| 色婷婷亚洲一区二区三区| 亚洲激情图片小说视频| 91精品视频网| 久久99国产乱子伦精品免费| 久久久天堂av| 99久久精品国产毛片| 天堂蜜桃一区二区三区 | 国产.精品.日韩.另类.中文.在线.播放| 国产欧美日韩综合| 色香蕉成人二区免费| 麻豆91在线播放| 国产调教视频一区| 在线观看国产日韩| 毛片av中文字幕一区二区| 中文字幕在线观看不卡视频| 92国产精品观看| 日本一区中文字幕| 亚洲欧美在线观看| 日韩午夜精品视频| av一区二区三区| 男女男精品视频| 亚洲伦理在线精品| 久久综合国产精品| 欧美日韩一区二区在线视频| 精品亚洲aⅴ乱码一区二区三区| 亚洲欧洲三级电影| 久久蜜臀中文字幕| 欧美日韩mp4| 色噜噜偷拍精品综合在线| 久久成人精品无人区| 亚洲精品福利视频网站| 久久久亚洲午夜电影| 欧美日韩免费不卡视频一区二区三区| 国产精品一卡二卡在线观看| 亚洲成人三级小说| 久久精品日韩一区二区三区| 欧美日韩视频在线第一区| 99久久婷婷国产精品综合| 国产最新精品免费| 午夜视频一区二区| 国产精品伦一区| 欧美变态凌虐bdsm| 欧美精品在线一区二区三区| 一本一道综合狠狠老| 国产91高潮流白浆在线麻豆| 久久99精品国产麻豆婷婷洗澡| 夜夜操天天操亚洲| 亚洲欧洲日韩女同| 国产清纯白嫩初高生在线观看91 | 欧美三级午夜理伦三级中视频| 国产成人av电影| 国产成人在线观看| 国内精品不卡在线| 国产一区二区三区久久久| 亚洲成av人片| 夜夜爽夜夜爽精品视频| 亚洲乱码日产精品bd| 中文字幕一区二区三| 久久九九国产精品| 日韩欧美中文一区| 欧美日韩一区二区三区在线| 99在线精品观看| 一本在线高清不卡dvd| 在线免费观看日本一区| 色欧美乱欧美15图片| 91亚洲精品久久久蜜桃| 一本到不卡精品视频在线观看| 99国产精品久久久久久久久久久 | 国产麻豆精品一区二区| 国产精品一二二区| 国产盗摄视频一区二区三区| 成人激情动漫在线观看| 成人精品小蝌蚪| 不卡大黄网站免费看| 99久久综合99久久综合网站| 不卡视频免费播放| 欧洲色大大久久| 欧美精品色综合| 精品国产三级电影在线观看| 亚洲精品在线免费播放| 欧美国产禁国产网站cc| 亚洲免费观看高清完整| 天堂一区二区在线免费观看| 国产麻豆精品theporn| jizzjizzjizz欧美| 欧美日韩三级视频| 国产亚洲欧美一区在线观看| 亚洲视频一区二区在线| 蜜臀99久久精品久久久久久软件| 成人免费毛片嘿嘿连载视频| 在线观看91视频| 久久综合成人精品亚洲另类欧美 | 8v天堂国产在线一区二区| 日韩欧美国产1| 中文字幕制服丝袜成人av | 国产黄色精品网站| 在线国产亚洲欧美| 2024国产精品| 亚洲激情在线激情| 国产乱理伦片在线观看夜一区| 在线视频欧美精品| 国产亚洲精品精华液| 亚洲精品成人精品456| 国产乱人伦精品一区二区在线观看 |