diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-06-17 04:35:03 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-06-17 04:35:03 +0000 |
commit | f12f8990e45f7564fb348b0d7a5afc0fe0aa660f (patch) | |
tree | 557fe3806eaf59014d9d926dbc042b56a85f2c4c /src | |
parent | 3467b1a1f9417cc941c51584104b61fa78aa6b5a (diff) | |
download | postgresql-f12f8990e45f7564fb348b0d7a5afc0fe0aa660f.tar.gz postgresql-f12f8990e45f7564fb348b0d7a5afc0fe0aa660f.zip |
Fix error line numbers reported for errors in plpgsql_parse_word and
siblings.
Diffstat (limited to 'src')
-rw-r--r-- | src/pl/plpgsql/src/scan.l | 70 |
1 files changed, 52 insertions, 18 deletions
diff --git a/src/pl/plpgsql/src/scan.l b/src/pl/plpgsql/src/scan.l index e6614bf8100..27dcdc25903 100644 --- a/src/pl/plpgsql/src/scan.l +++ b/src/pl/plpgsql/src/scan.l @@ -4,7 +4,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.l,v 1.26 2003/05/29 22:30:02 tgl Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.l,v 1.27 2003/06/17 04:35:03 tgl Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -168,25 +168,59 @@ dump { return O_DUMP; } /* ---------- * Special word rules + * + * We set plpgsql_error_lineno in each rule so that errors reported + * in the pl_comp.c subroutines will point to the right place. * ---------- */ -{identifier} { return plpgsql_parse_word(yytext); } -{identifier}{space}*\.{space}*{identifier} { return plpgsql_parse_dblword(yytext); } -{identifier}{space}*\.{space}*{identifier}{space}*\.{space}*{identifier} { return plpgsql_parse_tripword(yytext); } -{identifier}{space}*%TYPE { return plpgsql_parse_wordtype(yytext); } -{identifier}{space}*\.{space}*{identifier}{space}*%TYPE { return plpgsql_parse_dblwordtype(yytext); } -{identifier}{space}*\.{space}*{identifier}{space}*\.{space}*{identifier}{space}*%TYPE { return plpgsql_parse_tripwordtype(yytext); } -{identifier}{space}*%ROWTYPE { return plpgsql_parse_wordrowtype(yytext); } -{identifier}{space}*\.{space}*{identifier}{space}*%ROWTYPE { return plpgsql_parse_dblwordrowtype(yytext); } - -\${digit}+ { return plpgsql_parse_word(yytext); } -\${digit}+{space}*\.{space}*{identifier} { return plpgsql_parse_dblword(yytext); } -\${digit}+{space}*\.{space}*{identifier}{space}*\.{space}*{identifier} { return plpgsql_parse_tripword(yytext); } -\${digit}+{space}*%TYPE { return plpgsql_parse_wordtype(yytext); } -\${digit}+{space}*\.{space}*{identifier}{space}*%TYPE { return plpgsql_parse_dblwordtype(yytext); } -\${digit}+{space}*\.{space}*{identifier}{space}*\.{space}*{identifier}{space}*%TYPE { return plpgsql_parse_tripwordtype(yytext); } -\${digit}+{space}*%ROWTYPE { return plpgsql_parse_wordrowtype(yytext); } -\${digit}+{space}*\.{space}*{identifier}{space}*%ROWTYPE { return plpgsql_parse_dblwordrowtype(yytext); } +{identifier} { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_word(yytext); } +{identifier}{space}*\.{space}*{identifier} { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_dblword(yytext); } +{identifier}{space}*\.{space}*{identifier}{space}*\.{space}*{identifier} { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_tripword(yytext); } +{identifier}{space}*%TYPE { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_wordtype(yytext); } +{identifier}{space}*\.{space}*{identifier}{space}*%TYPE { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_dblwordtype(yytext); } +{identifier}{space}*\.{space}*{identifier}{space}*\.{space}*{identifier}{space}*%TYPE { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_tripwordtype(yytext); } +{identifier}{space}*%ROWTYPE { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_wordrowtype(yytext); } +{identifier}{space}*\.{space}*{identifier}{space}*%ROWTYPE { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_dblwordrowtype(yytext); } +\${digit}+ { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_word(yytext); } +\${digit}+{space}*\.{space}*{identifier} { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_dblword(yytext); } +\${digit}+{space}*\.{space}*{identifier}{space}*\.{space}*{identifier} { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_tripword(yytext); } +\${digit}+{space}*%TYPE { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_wordtype(yytext); } +\${digit}+{space}*\.{space}*{identifier}{space}*%TYPE { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_dblwordtype(yytext); } +\${digit}+{space}*\.{space}*{identifier}{space}*\.{space}*{identifier}{space}*%TYPE { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_tripwordtype(yytext); } +\${digit}+{space}*%ROWTYPE { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_wordrowtype(yytext); } +\${digit}+{space}*\.{space}*{identifier}{space}*%ROWTYPE { + plpgsql_error_lineno = plpgsql_scanner_lineno(); + return plpgsql_parse_dblwordrowtype(yytext); } {digit}+ { return T_NUMBER; } |