diff options
Diffstat (limited to 'llex.c')
| -rw-r--r-- | llex.c | 26 |
1 files changed, 13 insertions, 13 deletions
| @@ -1,11 +1,10 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: llex.c,v 2.29 2008/12/26 11:55:57 roberto Exp roberto $ | 2 | ** $Id: llex.c,v 2.30 2009/02/11 18:25:20 roberto Exp roberto $ |
| 3 | ** Lexical Analyzer | 3 | ** Lexical Analyzer |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | 7 | ||
| 8 | #include <ctype.h> | ||
| 9 | #include <locale.h> | 8 | #include <locale.h> |
| 10 | #include <string.h> | 9 | #include <string.h> |
| 11 | 10 | ||
| @@ -14,6 +13,7 @@ | |||
| 14 | 13 | ||
| 15 | #include "lua.h" | 14 | #include "lua.h" |
| 16 | 15 | ||
| 16 | #include "lctype.h" | ||
| 17 | #include "ldo.h" | 17 | #include "ldo.h" |
| 18 | #include "llex.h" | 18 | #include "llex.h" |
| 19 | #include "lobject.h" | 19 | #include "lobject.h" |
| @@ -77,7 +77,7 @@ void luaX_init (lua_State *L) { | |||
| 77 | const char *luaX_token2str (LexState *ls, int token) { | 77 | const char *luaX_token2str (LexState *ls, int token) { |
| 78 | if (token < FIRST_RESERVED) { | 78 | if (token < FIRST_RESERVED) { |
| 79 | lua_assert(token == cast(unsigned char, token)); | 79 | lua_assert(token == cast(unsigned char, token)); |
| 80 | return (isprint(token)) ? luaO_pushfstring(ls->L, LUA_QL("%c"), token) : | 80 | return (lisprint(token)) ? luaO_pushfstring(ls->L, LUA_QL("%c"), token) : |
| 81 | luaO_pushfstring(ls->L, "char(%d)", token); | 81 | luaO_pushfstring(ls->L, "char(%d)", token); |
| 82 | } | 82 | } |
| 83 | else { | 83 | else { |
| @@ -200,13 +200,13 @@ static void trydecpoint (LexState *ls, SemInfo *seminfo) { | |||
| 200 | 200 | ||
| 201 | /* LUA_NUMBER */ | 201 | /* LUA_NUMBER */ |
| 202 | static void read_numeral (LexState *ls, SemInfo *seminfo) { | 202 | static void read_numeral (LexState *ls, SemInfo *seminfo) { |
| 203 | lua_assert(isdigit(ls->current)); | 203 | lua_assert(lisdigit(ls->current)); |
| 204 | do { | 204 | do { |
| 205 | save_and_next(ls); | 205 | save_and_next(ls); |
| 206 | } while (isdigit(ls->current) || ls->current == '.'); | 206 | } while (lisdigit(ls->current) || ls->current == '.'); |
| 207 | if (check_next(ls, "Ee")) /* `E'? */ | 207 | if (check_next(ls, "Ee")) /* `E'? */ |
| 208 | check_next(ls, "+-"); /* optional exponent sign */ | 208 | check_next(ls, "+-"); /* optional exponent sign */ |
| 209 | while (isalnum(ls->current) || ls->current == '_') | 209 | while (lisalnum(ls->current) || ls->current == '_') |
| 210 | save_and_next(ls); | 210 | save_and_next(ls); |
| 211 | save(ls, '\0'); | 211 | save(ls, '\0'); |
| 212 | buffreplace(ls, '.', ls->decpoint); /* follow locale for decimal point */ | 212 | buffreplace(ls, '.', ls->decpoint); /* follow locale for decimal point */ |
| @@ -290,7 +290,7 @@ static void read_string (LexState *ls, int del, SemInfo *seminfo) { | |||
| 290 | case '\r': save(ls, '\n'); inclinenumber(ls); continue; | 290 | case '\r': save(ls, '\n'); inclinenumber(ls); continue; |
| 291 | case EOZ: continue; /* will raise an error next loop */ | 291 | case EOZ: continue; /* will raise an error next loop */ |
| 292 | default: { | 292 | default: { |
| 293 | if (!isdigit(ls->current)) | 293 | if (!lisdigit(ls->current)) |
| 294 | save_and_next(ls); /* handles \\, \", \', and \? */ | 294 | save_and_next(ls); /* handles \\, \", \', and \? */ |
| 295 | else { /* \xxx */ | 295 | else { /* \xxx */ |
| 296 | int i = 0; | 296 | int i = 0; |
| @@ -298,7 +298,7 @@ static void read_string (LexState *ls, int del, SemInfo *seminfo) { | |||
| 298 | do { | 298 | do { |
| 299 | c = 10*c + (ls->current-'0'); | 299 | c = 10*c + (ls->current-'0'); |
| 300 | next(ls); | 300 | next(ls); |
| 301 | } while (++i<3 && isdigit(ls->current)); | 301 | } while (++i<3 && lisdigit(ls->current)); |
| 302 | if (c > UCHAR_MAX) | 302 | if (c > UCHAR_MAX) |
| 303 | lexerror(ls, "escape sequence too large", TK_STRING); | 303 | lexerror(ls, "escape sequence too large", TK_STRING); |
| 304 | save(ls, c); | 304 | save(ls, c); |
| @@ -389,7 +389,7 @@ static int llex (LexState *ls, SemInfo *seminfo) { | |||
| 389 | return TK_DOTS; /* ... */ | 389 | return TK_DOTS; /* ... */ |
| 390 | else return TK_CONCAT; /* .. */ | 390 | else return TK_CONCAT; /* .. */ |
| 391 | } | 391 | } |
| 392 | else if (!isdigit(ls->current)) return '.'; | 392 | else if (!lisdigit(ls->current)) return '.'; |
| 393 | else { | 393 | else { |
| 394 | read_numeral(ls, seminfo); | 394 | read_numeral(ls, seminfo); |
| 395 | return TK_NUMBER; | 395 | return TK_NUMBER; |
| @@ -399,21 +399,21 @@ static int llex (LexState *ls, SemInfo *seminfo) { | |||
| 399 | return TK_EOS; | 399 | return TK_EOS; |
| 400 | } | 400 | } |
| 401 | default: { | 401 | default: { |
| 402 | if (isspace(ls->current)) { | 402 | if (lisspace(ls->current)) { |
| 403 | lua_assert(!currIsNewline(ls)); | 403 | lua_assert(!currIsNewline(ls)); |
| 404 | next(ls); | 404 | next(ls); |
| 405 | continue; | 405 | continue; |
| 406 | } | 406 | } |
| 407 | else if (isdigit(ls->current)) { | 407 | else if (lisdigit(ls->current)) { |
| 408 | read_numeral(ls, seminfo); | 408 | read_numeral(ls, seminfo); |
| 409 | return TK_NUMBER; | 409 | return TK_NUMBER; |
| 410 | } | 410 | } |
| 411 | else if (isalpha(ls->current) || ls->current == '_') { | 411 | else if (lisalpha(ls->current) || ls->current == '_') { |
| 412 | /* identifier or reserved word */ | 412 | /* identifier or reserved word */ |
| 413 | TString *ts; | 413 | TString *ts; |
| 414 | do { | 414 | do { |
| 415 | save_and_next(ls); | 415 | save_and_next(ls); |
| 416 | } while (isalnum(ls->current) || ls->current == '_'); | 416 | } while (lisalnum(ls->current) || ls->current == '_'); |
| 417 | ts = luaX_newstring(ls, luaZ_buffer(ls->buff), | 417 | ts = luaX_newstring(ls, luaZ_buffer(ls->buff), |
| 418 | luaZ_bufflen(ls->buff)); | 418 | luaZ_bufflen(ls->buff)); |
| 419 | if (ts->tsv.reserved > 0) /* reserved word? */ | 419 | if (ts->tsv.reserved > 0) /* reserved word? */ |
