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