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

📄 funclist.cpp

📁 这可是我的倾情制作
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//73@multiplicativeexpression@ @multiplicativeexpression@/@unaryexpression@$
//
void Func73()
{ 
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol,TempSymbolVar;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	TempSymbol = ::G_TempStackNode->Place;	
	::G_TempStackNode = ::GetStackNode(2,::StateTokenStack);
	if(TempSymbol->Type != TINT || TempSymbol->Type != TFLOAT || ::G_TempStackNode->Place->Type != TINT || ::G_TempStackNode->Place->Type != TFLOAT)
	{
		printf("\nError(Semantics):In Division Expression, element's type must be TINT or TFLOAT!\n");
		getch();
		return;
	}
	TempSymbolVar = ::GenerateTempVar();
	::SetSymbolInfo(TempSymbolVar,TINT,TCOMMON,::CurSymbolTable->MemOffset,NULL);
	/*Redefine its type based on toppest type of this expression*/
	if(TempSymbol->Type<::G_TempStackNode->Place->Type)
		TempSymbolVar->Type = G_TempStackNode->Place->Type;
	else 
		TempSymbolVar->Type = TempSymbol->Type;		
	::CurSymbolTable->MemOffset += 2;

	::AddFourNode(::G_InstrumentList,IDIV,::G_TempStackNode->Place->pInfo,TempSymbol->pInfo,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;
	::G_TempStackNode->Type = TempSymbolVar->Type;
	/*================End After Push====================*/
	PrintProduct(TempProduct->Position);
}

//
//74@multiplicativeexpression@ @multiplicativeexpression@%@unaryexpression@$
//
void Func74()
{ 
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol,TempSymbolVar;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	TempSymbol = ::G_TempStackNode->Place;	
	::G_TempStackNode = ::GetStackNode(2,::StateTokenStack);
	if(TempSymbol->Type != TINT && ::G_TempStackNode->Type !=NULL)
	{
		printf("\nError(Semantics):In Mod Expression, element's type must be TINT or TFLOAT!\n");
		getch();
		return;
	}
	TempSymbolVar = ::GenerateTempVar();
	::SetSymbolInfo(TempSymbolVar,TINT,TCOMMON,::CurSymbolTable->MemOffset,NULL);
	/*Redefine its type based on toppest type of this expression*/
	TempSymbolVar->Type = TINT;
	::AddFourNode(::G_InstrumentList,IMOD,::G_TempStackNode->Place->pInfo,TempSymbol->pInfo,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;
	::G_TempStackNode->Type = TempSymbolVar->Type;
	/*================End After Push====================*/
	PrintProduct(TempProduct->Position);
}

//
//75@additiveexpression@ @multiplicativeexpression@$
//
void Func75()
{
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	if(G_TempStackNode->Type != TINT || G_TempStackNode->Type != TFLOAT)
	{
		printf("\nError(Sematics): Multiplicative expression must be TINT  or TFLOAT\n");
		getch();
		return;
	}
	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);
}

//
//76@additiveexpression@ @additiveexpression@+@multiplicativeexpression@$
//
void Func76()
{
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol,TempSymbolVar;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	TempSymbol = ::G_TempStackNode->Place;	
	::G_TempStackNode = ::GetStackNode(2,::StateTokenStack);
	if(TempSymbol->Type != TINT || TempSymbol->Type != TFLOAT || ::G_TempStackNode->Place->Type != TINT || ::G_TempStackNode->Place->Type != TFLOAT)
	{
		printf("\nError(Semantics):In Relation Expression, element's type must be TINT or TFLOAT!\n");
		getch();
		return;
	}
	TempSymbolVar = ::GenerateTempVar();
	::SetSymbolInfo(TempSymbolVar,TINT,TCOMMON,::CurSymbolTable->MemOffset,NULL);
	/*Redefine its type based on toppest type of this expression*/
	if(TempSymbol->Type<::G_TempStackNode->Place->Type)
		TempSymbolVar->Type = G_TempStackNode->Place->Type;
	else 
		TempSymbolVar->Type = TempSymbol->Type;		
	::CurSymbolTable->MemOffset += 2;

	::AddFourNode(::G_InstrumentList,IADD,::G_TempStackNode->Place->pInfo,TempSymbol->pInfo,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;
	::G_TempStackNode->Type = TempSymbolVar->Type;
	/*================End After Push====================*/
	PrintProduct(TempProduct->Position);
}
//
//77@additiveexpression@ @additiveexpression@-@multiplicativeexpression@$
//
void Func77()
{
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol,TempSymbolVar;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	TempSymbol = ::G_TempStackNode->Place;	
	::G_TempStackNode = ::GetStackNode(2,::StateTokenStack);
	if(TempSymbol->Type != TINT || TempSymbol->Type != TFLOAT || ::G_TempStackNode->Place->Type != TINT || ::G_TempStackNode->Place->Type != TFLOAT)
	{
		printf("\nError(Semantics):In Relation Expression, element's type must be TINT or TFLOAT!\n");
		getch();
		return;
	}
	TempSymbolVar = ::GenerateTempVar();
	::SetSymbolInfo(TempSymbolVar,TINT,TCOMMON,::CurSymbolTable->MemOffset,NULL);
	/*Redefine its type based on toppest type of this expression*/
	if(TempSymbol->Type<::G_TempStackNode->Place->Type)
		TempSymbolVar->Type = G_TempStackNode->Place->Type;
	else 
		TempSymbolVar->Type = TempSymbol->Type;		
	::CurSymbolTable->MemOffset += 2;

	::AddFourNode(::G_InstrumentList,IDEC,::G_TempStackNode->Place->pInfo,TempSymbol->pInfo,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;
	::G_TempStackNode->Type = TempSymbolVar->Type;
	/*================End After Push====================*/
	PrintProduct(TempProduct->Position);
}

//
//78@relationalexpression@ @additiveexpression@$
//
void Func78()
{
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	if(G_TempStackNode->Type != TINT || G_TempStackNode->Type != TFLOAT)
	{
		printf("\nError(Sematics): Additive expression must be TINT  or TFLOAT\n");
		getch();
		return;
	}
	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);
}

//
//79@relationalexpression@ @relationalexpression@<@additiveexpression@$
//
void Func79()
{
		int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol,TempSymbolVar;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	TempSymbol = ::G_TempStackNode->Place;
	::G_TempStackNode = ::GetStackNode(2,::StateTokenStack);
	if(TempSymbol->Type != TINT || TempSymbol->Type != TFLOAT || ::G_TempStackNode->Place->Type != TINT || ::G_TempStackNode->Place->Type != TFLOAT)
	{
		printf("\nError(Semantics):In Relation Expression, element's type must be TINT or TFLOAT!\n");
		getch();
		return;
	}
	TempSymbolVar = ::GenerateTempVar();
	::SetSymbolInfo(TempSymbolVar,TINT,TCOMMON,::CurSymbolTable->MemOffset,NULL);
	::CurSymbolTable->MemOffset += 2;

	::AddFourNode(::G_InstrumentList,IRL,::G_TempStackNode->Place->pInfo,TempSymbol->pInfo,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;
	::G_TempStackNode->Type = TINT;
	/*================End After Push====================*/
	PrintProduct(TempProduct->Position);
}

//
//80@relationalexpression@ @relationalexpression@>@additiveexpression@$
//
void Func80()
{
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol,TempSymbolVar;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	TempSymbol = ::G_TempStackNode->Place;
	::G_TempStackNode = ::GetStackNode(2,::StateTokenStack);
	if(TempSymbol->Type != TINT || TempSymbol->Type != TFLOAT || ::G_TempStackNode->Place->Type != TINT || ::G_TempStackNode->Place->Type != TFLOAT)
	{
		printf("\nError(Semantics):In Relation Expression, element's type must be TINT or TFLOAT!\n");
		getch();
		return;
	}
	TempSymbolVar = ::GenerateTempVar();
	::SetSymbolInfo(TempSymbolVar,TINT,TCOMMON,::CurSymbolTable->MemOffset,NULL);
	::CurSymbolTable->MemOffset += 2;

	::AddFourNode(::G_InstrumentList,IRG,::G_TempStackNode->Place->pInfo,TempSymbol->pInfo,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;
	::G_TempStackNode->Type = TINT;
	/*================End After Push====================*/
	PrintProduct(TempProduct->Position);
}

//
//81@relationalexpression@ @relationalexpression@<=@additiveexpression@$
//
void Func81()
{
	int TopState;pGotoNodeType	TempGotoNode;
    pProductItemType	TempProduct;
	pSymbolType		TempSymbol,TempSymbolVar;

	TempProduct = G_ProductSet.Product[::G_CurProductNum];
	/*================Begin Before Pop====================*/
	::G_TempStackNode = ::GetStackNode(0,::StateTokenStack);
	TempSymbol = ::G_TempStackNode->Place;
	::G_TempStackNode = ::GetStackNode(2,::StateTokenStack);
	if(TempSymbol->Type != TINT || TempSymbol->Type != TFLOAT || ::G_TempStackNode->Place->Type != TINT || ::G_TempS

⌨️ 快捷键说明

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