fis-gtm/sr_unix/zro_gettok.c

48 lines
1.0 KiB
C

/****************************************************************
* *
* Copyright 2001, 2007 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#include "mdef.h"
#include "zroutines.h"
int zro_gettok (char **lp, char *top, mstr *tok)
{
int toktyp;
if (*lp >= top)
toktyp = ZRO_EOL;
else
switch (**lp)
{
case ZRO_DEL:
toktyp = ZRO_DEL;
while (*lp < top && **lp == ZRO_DEL)
(*lp)++;
break;
case ZRO_LBR:
toktyp = ZRO_LBR;
(*lp)++;
break;
case ZRO_RBR:
toktyp = ZRO_RBR;
(*lp)++;
break;
default:
tok->addr = *lp;
while (*lp < top && **lp != ZRO_DEL && **lp != ZRO_LBR && **lp != ZRO_RBR)
(*lp)++;
toktyp = ZRO_IDN;
tok->len = INTCAST(*lp - tok->addr);
break;
}
return toktyp;
}