_CLASSDEF(Pwhile)
class_CLASSTYPE Pwhile
{
public:
Pwhile(){}
~Pwhile(){}
BOOL parse();
int write(int,const char *);
}
BOOL Pwhile::parse()
{
int nEndofWhile;
Token * pTemp;
// create an expression object
Pexpression * pTempExpression = new Pexpression;
// call function parse and clean up
PARSEU(pTempExpression)
pTemp = gpTokenizer->getToken(); // get a new token
if (pTemp->tokentype == tkdo) // check for token DO
{
pTemp = gpTokenizer->peekToken(); // a look ahead token
// a loop to parse statements inside the while loop
while ((pTemp->tokentype != tkendwhile) &&
(!gpTokenizer->eof() )
{
// create a statement object
Pstatement * pMyStatement = new Pstatement;
PARSEU(pMyStatement) // call function parse
// and clean up
pTemp = gpTokenizer->peekToken();
}
if (pTemp->tokentype == tkendwhile)
{
// update the branch pointer
gpLocalSymTable->Put(nEndofWhile,
new Sym_Number((NUMBER)
gnCslFileIndex));
gpTokenizer->getToken();
}
else
{
gpErrorFile->raise(39);
return FALSE;
}
}
else
{
gpErrorFile->raise(10);
return FALSE;
}
return TRUE;
}
// End of File