| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | TokenizeBool | (hzVect<hzToken>&,hzChain&,) |
Declared and defined in file: hzTokens.cpp
Function Logic:
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 ;
}