Listing 7 Function parse() of Pif

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