|
|
@ -1,5 +1,5 @@ |
|
|
|
/*
|
|
|
|
** $Id: llex.c,v 2.75 2014/04/30 16:48:44 roberto Exp roberto $ |
|
|
|
** $Id: llex.c,v 2.76 2014/05/01 18:18:06 roberto Exp roberto $ |
|
|
|
** Lexical Analyzer |
|
|
|
** See Copyright Notice in lua.h |
|
|
|
*/ |
|
|
@ -284,15 +284,19 @@ static int skip_sep (LexState *ls) { |
|
|
|
|
|
|
|
|
|
|
|
static void read_long_string (LexState *ls, SemInfo *seminfo, int sep) { |
|
|
|
int line = ls->linenumber; /* initial line (for error message) */ |
|
|
|
save_and_next(ls); /* skip 2nd `[' */ |
|
|
|
if (currIsNewline(ls)) /* string starts with a newline? */ |
|
|
|
inclinenumber(ls); /* skip it */ |
|
|
|
for (;;) { |
|
|
|
switch (ls->current) { |
|
|
|
case EOZ: |
|
|
|
lexerror(ls, (seminfo) ? "unfinished long string" : |
|
|
|
"unfinished long comment", TK_EOS); |
|
|
|
case EOZ: { /* error */ |
|
|
|
const char *what = (seminfo ? "string" : "comment"); |
|
|
|
const char *msg = luaO_pushfstring(ls->L, |
|
|
|
"unfinished long %s (starting at line %d)", what, line); |
|
|
|
lexerror(ls, msg, TK_EOS); |
|
|
|
break; /* to avoid warnings */ |
|
|
|
} |
|
|
|
case ']': { |
|
|
|
if (skip_sep(ls) == sep) { |
|
|
|
save_and_next(ls); /* skip 2nd `]' */ |
|
|
|