diff --git a/src/lexer.h b/src/lexer.h index 45cd403c72824d6e2f7c5ff69fa5344758e9182a..03429cc553a7e24c69bf07bec1464f1317c8d5fe 100644 --- a/src/lexer.h +++ b/src/lexer.h @@ -1,5 +1,5 @@ /* - * $Id: lexer.h,v 1.17 2000/05/11 14:09:46 grubba Exp $ + * $Id: lexer.h,v 1.18 2000/08/03 11:33:31 grubba Exp $ * * Lexical analyzer template. * Based on lex.c 1.62 @@ -24,15 +24,16 @@ #define SKIPWHITE() do { while(ISSPACE(LOOK())) lex.pos++; }while(0) #define SKIPUPTO(X) do { while(LOOK()!=(X) && LOOK()) lex.pos++; }while(0) -#define READBUF(X) { \ +#define READBUF(X) do { \ register int C; \ - buf=lex.pos; \ - while((C=LOOK()) && (X)) lex.pos++; \ - len=lex.pos - buf; \ -} + buf = lex.pos; \ + while((C = LOOK()) && (X)) \ + lex.pos++; \ + len = (size_t)(lex.pos - buf); \ +} while(0) #define TWO_CHAR(X,Y) ((X)<<8)+(Y) -#define ISWORD(X) (len==(long)strlen(X) && !MEMCMP(buf,X,strlen(X))) +#define ISWORD(X) ((len == strlen(X)) && !MEMCMP(buf,X,strlen(X))) /* * Function renaming @@ -55,16 +56,17 @@ #define SKIPWHITE() do { while(ISSPACE(LOOK())) lex.pos += (1<<SHIFT); }while(0) #define SKIPUPTO(X) do { while(LOOK()!=(X) && LOOK()) lex.pos += (1<<SHIFT); }while(0) -#define READBUF(X) { \ +#define READBUF(X) do { \ register int C; \ - buf=lex.pos; \ - while((C=LOOK()) && (X)) lex.pos+=(1<<SHIFT); \ - len=(lex.pos - buf) >> SHIFT; \ -} + buf = lex.pos; \ + while((C = LOOK()) && (X)) \ + lex.pos += (1<<SHIFT); \ + len = (size_t)((lex.pos - buf) >> SHIFT); \ +} while(0) #define TWO_CHAR(X,Y) ((X)<<8)+(Y) -#define ISWORD(X) (len==(long)strlen(X) && low_isword(buf, X, strlen(X))) +#define ISWORD(X) ((len == strlen(X)) && low_isword(buf, X, strlen(X))) /* Function renaming */ #if (SHIFT == 1) @@ -93,7 +95,7 @@ #define lex_isidchar(X) ((((unsigned) X)>=256) || isidchar(X)) -static int low_isword(char *buf, char *X, int len) +static int low_isword(char *buf, char *X, size_t len) { while(len--) { if (INDEX_CHARP(buf, len, SHIFT) != ((unsigned char *)X)[len]) { @@ -264,7 +266,8 @@ int yylex(YYSTYPE *yylval) static int low_yylex(YYSTYPE *yylval) #endif /* LEXDEBUG>4 */ { - INT32 c,len; + INT32 c; + size_t len; char *buf; #ifdef __CHECKER__ @@ -779,6 +782,9 @@ static int low_yylex(YYSTYPE *yylval) case TWO_CHAR('t','y'): if(ISWORD("typeof")) return TOK_TYPEOF; break; + case TWO_CHAR('v','a'): + if(ISWORD("variant")) return TOK_VARIANT; + break; case TWO_CHAR('v','o'): if(ISWORD("void")) return TOK_VOID_ID; break; @@ -789,7 +795,7 @@ static int low_yylex(YYSTYPE *yylval) } { #if (SHIFT == 0) - struct pike_string *tmp = make_shared_binary_string(buf,len); + struct pike_string *tmp = make_shared_binary_string(buf, len); #else /* SHIFT != 0 */ #if (SHIFT == 1) struct pike_string *tmp = make_shared_binary_string1((p_wchar1 *)buf,