diff options
| -rw-r--r-- | llex.c | 32 |
1 files changed, 16 insertions, 16 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: llex.c,v 2.2 2004/03/12 19:53:56 roberto Exp roberto $ | 2 | ** $Id: llex.c,v 2.3 2004/04/30 20:13:38 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 | */ |
| @@ -181,12 +181,12 @@ static void read_numeral (LexState *ls, SemInfo *seminfo) { | |||
| 181 | } | 181 | } |
| 182 | 182 | ||
| 183 | 183 | ||
| 184 | static int skip_ast (LexState *ls) { | 184 | static int skip_sep (LexState *ls) { |
| 185 | int count = 0; | 185 | int count = 0; |
| 186 | int s = ls->current; | 186 | int s = ls->current; |
| 187 | lua_assert(s == '[' || s == ']'); | 187 | lua_assert(s == '[' || s == ']'); |
| 188 | save_and_next(ls); | 188 | save_and_next(ls); |
| 189 | while (ls->current == '*') { | 189 | while (ls->current == '=') { |
| 190 | save_and_next(ls); | 190 | save_and_next(ls); |
| 191 | count++; | 191 | count++; |
| 192 | } | 192 | } |
| @@ -194,7 +194,7 @@ static int skip_ast (LexState *ls) { | |||
| 194 | } | 194 | } |
| 195 | 195 | ||
| 196 | 196 | ||
| 197 | static void read_long_string (LexState *ls, SemInfo *seminfo, int ast) { | 197 | static void read_long_string (LexState *ls, SemInfo *seminfo, int sep) { |
| 198 | int cont = 0; | 198 | int cont = 0; |
| 199 | save_and_next(ls); /* skip 2nd `[' */ | 199 | save_and_next(ls); /* skip 2nd `[' */ |
| 200 | if (currIsNewline(ls)) /* string starts with a newline? */ | 200 | if (currIsNewline(ls)) /* string starts with a newline? */ |
| @@ -206,13 +206,13 @@ static void read_long_string (LexState *ls, SemInfo *seminfo, int ast) { | |||
| 206 | "unfinished long comment", TK_EOS); | 206 | "unfinished long comment", TK_EOS); |
| 207 | break; /* to avoid warnings */ | 207 | break; /* to avoid warnings */ |
| 208 | case '[': | 208 | case '[': |
| 209 | if (skip_ast(ls) == ast) { | 209 | if (skip_sep(ls) == sep) { |
| 210 | save_and_next(ls); /* skip 2nd `[' */ | 210 | save_and_next(ls); /* skip 2nd `[' */ |
| 211 | cont++; | 211 | cont++; |
| 212 | } | 212 | } |
| 213 | continue; | 213 | continue; |
| 214 | case ']': | 214 | case ']': |
| 215 | if (skip_ast(ls) == ast) { | 215 | if (skip_sep(ls) == sep) { |
| 216 | save_and_next(ls); /* skip 2nd `]' */ | 216 | save_and_next(ls); /* skip 2nd `]' */ |
| 217 | if (cont-- == 0) goto endloop; | 217 | if (cont-- == 0) goto endloop; |
| 218 | } | 218 | } |
| @@ -229,8 +229,8 @@ static void read_long_string (LexState *ls, SemInfo *seminfo, int ast) { | |||
| 229 | } | 229 | } |
| 230 | } endloop: | 230 | } endloop: |
| 231 | if (seminfo) | 231 | if (seminfo) |
| 232 | seminfo->ts = luaX_newstring(ls, luaZ_buffer(ls->buff) + (2 + ast), | 232 | seminfo->ts = luaX_newstring(ls, luaZ_buffer(ls->buff) + (2 + sep), |
| 233 | luaZ_bufflen(ls->buff) - 2*(2 + ast)); | 233 | luaZ_bufflen(ls->buff) - 2*(2 + sep)); |
| 234 | } | 234 | } |
| 235 | 235 | ||
| 236 | 236 | ||
| @@ -305,10 +305,10 @@ int luaX_lex (LexState *ls, SemInfo *seminfo) { | |||
| 305 | /* else is a comment */ | 305 | /* else is a comment */ |
| 306 | next(ls); | 306 | next(ls); |
| 307 | if (ls->current == '[') { | 307 | if (ls->current == '[') { |
| 308 | int ast = skip_ast(ls); | 308 | int sep = skip_sep(ls); |
| 309 | luaZ_resetbuffer(ls->buff); /* `skip_ast' may dirty the buffer */ | 309 | luaZ_resetbuffer(ls->buff); /* `skip_sep' may dirty the buffer */ |
| 310 | if (ast >= 0) { | 310 | if (sep >= 0) { |
| 311 | read_long_string(ls, NULL, ast); /* long comment */ | 311 | read_long_string(ls, NULL, sep); /* long comment */ |
| 312 | luaZ_resetbuffer(ls->buff); | 312 | luaZ_resetbuffer(ls->buff); |
| 313 | continue; | 313 | continue; |
| 314 | } | 314 | } |
| @@ -319,12 +319,12 @@ int luaX_lex (LexState *ls, SemInfo *seminfo) { | |||
| 319 | continue; | 319 | continue; |
| 320 | } | 320 | } |
| 321 | case '[': { | 321 | case '[': { |
| 322 | int ast = skip_ast(ls); | 322 | int sep = skip_sep(ls); |
| 323 | if (ast >= 0) { | 323 | if (sep >= 0) { |
| 324 | read_long_string(ls, seminfo, ast); | 324 | read_long_string(ls, seminfo, sep); |
| 325 | return TK_STRING; | 325 | return TK_STRING; |
| 326 | } | 326 | } |
| 327 | else if (ast == -1) return '['; | 327 | else if (sep == -1) return '['; |
| 328 | else luaX_lexerror(ls, "invalid long string delimiter", TK_STRING); | 328 | else luaX_lexerror(ls, "invalid long string delimiter", TK_STRING); |
| 329 | } | 329 | } |
| 330 | case '=': { | 330 | case '=': { |
