Return TypeFunction nameArguments
hzEcodeTokenizeBool(hzVect<hzToken>&,hzChain&,)

Declared and defined in file: hzTokens.cpp

Function Logic:

0:START 1:hzVect::Clear hzChain::Size 2:!C.Size() 3:Return E_NODATA 4:ci nLine 5:!ci.eof(); 6:*ci==(char)10 7:items items 8:IsBinary(*ci)||IsWhite(*ci) 9:items 10:ci==/* 11:!ci.eof()&&ci!=*/; 12:ci 13:ci==// 14:!ci.eof()&&*ci!=(char)10; 15:items 16:*ci==(char)34 17:!ci.eof()&&*ci!=(char)34; 18:hzChain::AddByte 19:S hzChain::Clear hzChain::Iter::Line hzToken::Init hzVect::Add items 20:_testHexnum(S,ci) 21:hzChain::Iter::Line hzToken::Init hzVect::Add 22:_testInteger(S,ci) 23:hzChain::Iter::Line hzToken::Init hzVect::Add 24:_testNumber(S,ci) 25:hzChain::Iter::Line hzToken::Init hzVect::Add 26:IsPunct(*ci) 27:tmp tmp items hzToken::Init hzVect::Add 28:IsSymb(*ci) 29:!ci.eof()&&IsSymb(*ci); 30:hzChain::AddByte 31:S hzChain::Clear hzToken::Init hzVect::Add 32:!ci.eof()&&IsAlphanum(*ci); 33:hzChain::AddByte 34:S hzChain::Clear hzToken::Init hzVect::Add 35:Return E_OK

Function body:

hzEcode TokenizeBool (hzVect<hzToken>& toks, hzChain& C)
{
   _hzfunc("hzTokenlist::TokenizeBool") ;
   hzChain     W ;
   chIter      ci ;
   hzToken     T ;
   hzString    S ;
   uint32_t    nLine ;
   char        tmp [4];
   toks.Clear() ;
   if (!C.Size())
       return E_NODATA ;
   ci = C ;
   nLine = 1;
   for (; !ci.eof() ;)
   {
       if (*ci == CHAR_NL)
           { nLine++ ; ci++ ; continue ; }
       if (IsBinary(*ci) || IsWhite(*ci))
           { ci++ ; continue ; }
       if (ci == "/*")
       {
           for (ci += 2; !ci.eof() && ci != "*/" ; ci++) ;
           ci += 2;
           continue ;
       }
       if (ci == "//")
       {
           for (ci += 2; !ci.eof() && *ci != CHAR_NL ; ci++) ;
           ci++ ;
           continue ;
       }
       if (*ci == CHAR_DQUOTE)
       {
           for (ci++ ; !ci.eof() && *ci != CHAR_DQUOTE ; ci++)
               W.AddByte(*ci) ;
           S = W ;
           W.Clear() ;
           T.Init(S, ci.Line(), TOKEN_STRING) ;
           toks.Add(T) ;
           ci++ ;
           continue ;
       }
       if (_testHexnum(S, ci))
       {
           T.Init(S, ci.Line(), TOKEN_STRING) ;
           toks.Add(T) ;
           continue ;
       }
       if (_testInteger(S, ci))
       {
           T.Init(S, ci.Line(), TOKEN_INTEGER) ;
           toks.Add(T) ;
           continue ;
       }
       if (_testNumber(S, ci))
       {
           T.Init(S, ci.Line(), TOKEN_NUMBER) ;
           toks.Add(T) ;
           continue ;
       }
       if (IsPunct(*ci))
       {
           tmp[0]= *ci ;
           tmp[1]= 0;
           ci++ ;
           T.Init(tmp, nLine, TOKEN_SEPARATOR) ;
           toks.Add(T) ;
           continue ;
       }
       if (IsSymb(*ci))
       {
           for (; !ci.eof() && IsSymb(*ci) ; ci++)
               W.AddByte(*ci) ;
           S = W ;
           W.Clear() ;
           T.Init(S, nLine, TOKEN_OPERATOR) ;
           toks.Add(T) ;
           continue ;
       }
       for (; !ci.eof() && IsAlphanum(*ci) ; ci++)
           W.AddByte(*ci) ;
       S = W ;
       W.Clear() ;
       T.Init(S, nLine, TOKEN_OPERATOR) ;
       toks.Add(T) ;
   }
   return E_OK ;
}