Merge pull request #18 from melloc/error-reporting
Improve error reporting messages
This commit is contained in:
commit
294f4c0db5
18
lex.c
18
lex.c
@ -198,6 +198,7 @@ int yylex(void)
|
|||||||
yylval.i = c;
|
yylval.i = c;
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case '\n': /* {EOL} */
|
case '\n': /* {EOL} */
|
||||||
|
lineno++;
|
||||||
RET(NL);
|
RET(NL);
|
||||||
case '\r': /* assume \n is coming */
|
case '\r': /* assume \n is coming */
|
||||||
case ' ': /* {WS}+ */
|
case ' ': /* {WS}+ */
|
||||||
@ -213,6 +214,7 @@ int yylex(void)
|
|||||||
case '\\':
|
case '\\':
|
||||||
if (peek() == '\n') {
|
if (peek() == '\n') {
|
||||||
input();
|
input();
|
||||||
|
lineno++;
|
||||||
} else if (peek() == '\r') {
|
} else if (peek() == '\r') {
|
||||||
input(); input(); /* \n */
|
input(); input(); /* \n */
|
||||||
lineno++;
|
lineno++;
|
||||||
@ -370,10 +372,11 @@ int string(void)
|
|||||||
case '\n':
|
case '\n':
|
||||||
case '\r':
|
case '\r':
|
||||||
case 0:
|
case 0:
|
||||||
|
*bp = '\0';
|
||||||
SYNTAX( "non-terminated string %.10s...", buf );
|
SYNTAX( "non-terminated string %.10s...", buf );
|
||||||
lineno++;
|
|
||||||
if (c == 0) /* hopeless */
|
if (c == 0) /* hopeless */
|
||||||
FATAL( "giving up" );
|
FATAL( "giving up" );
|
||||||
|
lineno++;
|
||||||
break;
|
break;
|
||||||
case '\\':
|
case '\\':
|
||||||
c = input();
|
c = input();
|
||||||
@ -515,6 +518,7 @@ int regexpr(void)
|
|||||||
if (!adjbuf(&buf, &bufsz, bp-buf+3, 500, &bp, "regexpr"))
|
if (!adjbuf(&buf, &bufsz, bp-buf+3, 500, &bp, "regexpr"))
|
||||||
FATAL("out of space for reg expr %.10s...", buf);
|
FATAL("out of space for reg expr %.10s...", buf);
|
||||||
if (c == '\n') {
|
if (c == '\n') {
|
||||||
|
*bp = '\0';
|
||||||
SYNTAX( "newline in regular expression %.10s...", buf );
|
SYNTAX( "newline in regular expression %.10s...", buf );
|
||||||
unput('\n');
|
unput('\n');
|
||||||
break;
|
break;
|
||||||
@ -553,19 +557,19 @@ int input(void) /* get next lexical input character */
|
|||||||
lexprog++;
|
lexprog++;
|
||||||
} else /* awk -f ... */
|
} else /* awk -f ... */
|
||||||
c = pgetc();
|
c = pgetc();
|
||||||
if (c == '\n')
|
if (c == EOF)
|
||||||
lineno++;
|
|
||||||
else if (c == EOF)
|
|
||||||
c = 0;
|
c = 0;
|
||||||
if (ep >= ebuf + sizeof ebuf)
|
if (ep >= ebuf + sizeof ebuf)
|
||||||
ep = ebuf;
|
ep = ebuf;
|
||||||
return *ep++ = c;
|
*ep = c;
|
||||||
|
if (c != 0) {
|
||||||
|
ep++;
|
||||||
|
}
|
||||||
|
return (c);
|
||||||
}
|
}
|
||||||
|
|
||||||
void unput(int c) /* put lexical character back on input */
|
void unput(int c) /* put lexical character back on input */
|
||||||
{
|
{
|
||||||
if (c == '\n')
|
|
||||||
lineno--;
|
|
||||||
if (yysptr >= yysbuf + sizeof(yysbuf))
|
if (yysptr >= yysbuf + sizeof(yysbuf))
|
||||||
FATAL("pushed back too much: %.20s...", yysbuf);
|
FATAL("pushed back too much: %.20s...", yysbuf);
|
||||||
*yysptr++ = c;
|
*yysptr++ = c;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user