BOOL Pif::parse()
{
Token * pTemp;
// create a expression object
Pexpression * pTempExpression: new Pexpression;
if (pTempExpression == NULL) // check out of memory
return FALSE;
else
{ pTempExpression->parse(); // parse an expression
delete pTempExpression; // clean up
} // test for the expression syntax
pTemp = gpTokenizer->getToken(); // get a new token
if (pTemp->tokentype == tkthen) // check for the token then
{
pTemp = gpTokenizer->lookToken();
while ((pTemp->tokentype != tkelse) && // loop to parse
// statements
(pTemp->tokentype != tkendif) && // after the
// token then
(!gpTokenizer->eof() ))
{
// create a statement object
Pstatement * pMyStatement = new Pstatement;
if (pMyStatement == NULL) // check out of memory
return FALSE;
else
{ pMyStatement->parse(); // call the parse function
delete pMyStatement; // clean up
}
pTemp = gpTokenizer->peekToken(); // look ahead token
}
}
else ; //output error message
}
// End of File