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

📄 funclist.cpp

📁 这可是我的倾情制作
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

void Func43()
{int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

void Func44()
{int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

void Func45()
{int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

void Func46()
{int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

void Func47()
{int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

void Func48()
{int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

void Func49()
{int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

void Func50()
{int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

void Func51()
{int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

//52@primaryexpression@ @identifier@$
void Func52()
{
	int TopState,tempType,tempKind;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType tempSymbol;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	tempSymbol = ::G_TempStackNode->Place;
	if(tempSymbol->Kind == 0 || tempSymbol->Offset == -1 || tempSymbol->Type == 0)
	{
		printf("\nError(Sematics): We need ur variable declaration before it is used\n");
		getch();
	}	
	/*================End Before Pop====================*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	/*================Begin After Push====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	::G_TempStackNode->Place = tempSymbol;
	::G_TempStackNode->Type = tempSymbol->Type;
	/*================End After Push====================*/
	PrintProduct(TempProduct->Position);
}

//-------------------------------------------------------------------+
//53@primaryexpression@ @identifier@ @m2@ (@argumentexpressionlist@)$|
//-------------------------------------------------------------------+
//107 @m2@ $
void Func53()
{
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol,TempSymbolVar;
	pParamNodeType	TempParamNode,TempParamNode2;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	//We need to check if this call match with its definition
	::G_TempStackNode = ::GetStackNode(4,::StateTokenStack);
	TempSymbol = ::G_TempStackNode->Place;
	if(::G_TempStackNode->Place->ChildPoint.FuncPoint->ParamLength != ::G_TempParamLength)
	{
		printf("\nError(sematics):Parameter Num is not matched check again!\n");
		getch();
	}
	TempParamNode = ::G_TempStackNode->Place->ChildPoint.FuncPoint->ParamHead;
	TempParamNode2 = ::G_TempParamHead;
	while(TempParamNode->NextPoint != NULL && TempParamNode2->NextPoint!= NULL)
	{
		if(TempParamNode->NextPoint->ParamPoint->Type != TempParamNode2->NextPoint->ParamPoint->Type)
		{
			printf("\nError(Sematics): Parameter type mismatched,Check again!\n");
			getch();
			::exit(0);
		}
		TempParamNode = TempParamNode->NextPoint;
		TempParamNode2 = TempParamNode2->NextPoint;
	}
	/*All the conditions have been checked and passed.So generate code to call this func*/
	TempSymbolVar=::GenerateTempVar();
	::SetSymbolInfo(TempSymbolVar,TempSymbol->Type,TCOMMON,::CurSymbolTable->MemOffset,NULL);
	
	switch(TempSymbolVar->Type)
	{
	case TINT:
		::CurSymbolTable->MemOffset += 2;
	case TFLOAT:
		::CurSymbolTable->MemOffset += 4;
	case TCHAR:
		::CurSymbolTable->MemOffset += 1;
	}	

	::AddFourNode(::G_InstrumentList,ICALL,TempSymbol->pInfo,NULL,TempSymbolVar->pInfo);
    
	/*================End Before Pop====================*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	/*================Begin After Push====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	::G_TempStackNode->Place = TempSymbolVar;
	/*================End After Push====================*/
	PrintProduct(TempProduct->Position);
}

//53@primaryexpression@ @identifier@ @m2@ (@argumentexpressionlist@)$ 
//-----------+
//107 @m2@ $ |
//-----------+
void Func107()
{
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType tempSymbol,tempSymbolouter;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*==============Begin Before Pop==============*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	tempSymbol = ::G_TempStackNode->Place;
	/*Look out side to fund func definition in ::RoutSymbolTable*/
	tempSymbolouter = ::LookWordsUpSymbolTable(::RootSymbolTable,tempSymbol->pInfo);
	if(tempSymbolouter == NULL)
	{
		printf("\nError(Sematics): You use call a undefined method!!\n");
		getch();
		/*
		Here we should take actions to restore a latest or most recently correct state
		but i realy don't have enough time to finish,later can implementate it.
		*/
	}
	else if(tempSymbolouter->Kind!= TFUNC)
	{
		printf("\nError(Semantis): This id isn't method,please check\n");
		getch();
	}
	::G_TempStackNode->Place = tempSymbolouter;
	::G_TempParamHead = (pParamNodeType) malloc(sizeof(ParamNodeType));
	::G_TempParamHead->NextPoint = NULL;
	::G_TempParamHead->ParamPoint = NULL;
	::G_TempParamLength = 0;
	/*==============End Before Pop==============*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	/*=============Begin After Push===============*/
	/*=============End After Push===============*/
	PrintProduct(TempProduct->Position);
}


//
//54@primaryexpression@ @constant@$
//
void Func54()
{
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	TempSymbol = ::G_TempStackNode->Place;
	TempSymbol->Type = ::G_TempStackNode->Type;
	/*================End Before Pop====================*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	/*================Begin After Push====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	::G_TempStackNode->Place = TempSymbol;
	::G_TempStackNode->Type = TempSymbol->Type;
	/*================End After Push====================*/
	PrintProduct(TempProduct->Position);
}

void Func55()
{int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*Deal with current state*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	PrintProduct(TempProduct->Position);
}

//
//56@primaryexpression@(@expression@)$
// Pay attention!!@expression@ is not at the top of the stack,get it from the depth of 1.
void Func56()
{
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(1,::StateTokenStack); //Here!!!
	TempSymbol = ::G_TempStackNode->Place;
	TempSymbol->Type = ::G_TempStackNode->Type;
	/*================End Before Pop====================*/
	if(TempProduct->TokenList[0]!=KONG)
		MyPopStack(TempProduct->Length,StateTokenStack);
	TopState = GetTopState(StateTokenStack);
	TempGotoNode = FindGotoNode(TopState,TempProduct->HeadToken);
	Push(TempProduct->HeadToken,TempGotoNode->ParaNum,StateTokenStack);
	/*================Begin After Push====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	::G_TempStackNode->Place = TempSymbol;
	::G_TempStackNode->Type = TempSymbol->Type;
	/*================End After Push====================*/

⌨️ 快捷键说明

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