📄 funclist.cpp
字号:
//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 + -