ING_DB
This commit is contained in:
parent
cf0babd5aa
commit
243ab6f7bd
|
|
@ -0,0 +1,59 @@
|
||||||
|
# include "amx.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
** An operator is defined as any 1-2 character sequence of
|
||||||
|
** non-alphanumerics. It looks up each operator in 'Optab'
|
||||||
|
** and returns the appropriate token.
|
||||||
|
*/
|
||||||
|
operator(chr)
|
||||||
|
register int chr;
|
||||||
|
{
|
||||||
|
register struct optab *op;
|
||||||
|
register int save;
|
||||||
|
register int toktyp;
|
||||||
|
char buf[3];
|
||||||
|
extern char *yylval;
|
||||||
|
|
||||||
|
save = Lcase;
|
||||||
|
Lcase = 0;
|
||||||
|
|
||||||
|
/* get lookahead character */
|
||||||
|
buf[0] = chr;
|
||||||
|
buf[1] = toktyp = gtchar();
|
||||||
|
buf[2] = '\0';
|
||||||
|
|
||||||
|
/* is it a floating fraction without leading zero ? */
|
||||||
|
/* or an integer < 0 */
|
||||||
|
if ((chr == '.' || chr == '-') && CMAP(toktyp) == NUMBR)
|
||||||
|
{
|
||||||
|
Lcase = save;
|
||||||
|
backup(toktyp);
|
||||||
|
return (number(chr));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* two character operator ? */
|
||||||
|
for (op = &Optab[0]; op->term; op++)
|
||||||
|
if (AAsequal(op->term, buf))
|
||||||
|
break;
|
||||||
|
if (!op->term)
|
||||||
|
{
|
||||||
|
backup(toktyp);
|
||||||
|
buf[1] = '\0';
|
||||||
|
for (op = &Optab[0]; op->term; op++)
|
||||||
|
if (AAsequal(op->term, buf))
|
||||||
|
break;
|
||||||
|
if (!op->term)
|
||||||
|
{
|
||||||
|
/* invalid operator */
|
||||||
|
amxerror(87, buf);
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Lcase = save;
|
||||||
|
if(op->token == Tokens.bgncmnt)
|
||||||
|
return (comment());
|
||||||
|
if(op->token == Tokens.sconst)
|
||||||
|
return (string(op));
|
||||||
|
yylval = (char *) op->opcode;
|
||||||
|
return (op->token);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue