mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
Parser sync.
This commit is contained in:
parent
94d8bbe5fb
commit
b703c127ed
@ -1004,5 +1004,10 @@ Tue Oct 31 16:09:55 CET 2000
|
|||||||
|
|
||||||
- Added patch by Christof Petig <christof.petig@wtal.de> fixing some
|
- Added patch by Christof Petig <christof.petig@wtal.de> fixing some
|
||||||
parser bugs.
|
parser bugs.
|
||||||
|
|
||||||
|
Fri Nov 3 11:34:43 CET 2000
|
||||||
|
|
||||||
|
- Synced pgc.l with scan.l.
|
||||||
|
- Synced gram.y and preproc.y.
|
||||||
- Set ecpg version to 2.8.0.
|
- Set ecpg version to 2.8.0.
|
||||||
- Set library version to 3.2.0.
|
- Set library version to 3.2.0.
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.66 2000/10/25 07:00:33 meskes Exp $
|
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.67 2000/11/03 10:47:54 meskes Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -21,8 +21,6 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include "postgres.h"
|
|
||||||
|
|
||||||
#include "miscadmin.h"
|
#include "miscadmin.h"
|
||||||
#include "nodes/parsenodes.h"
|
#include "nodes/parsenodes.h"
|
||||||
#include "nodes/pg_list.h"
|
#include "nodes/pg_list.h"
|
||||||
@ -89,14 +87,14 @@ static struct _if_value {
|
|||||||
* We use exclusive states for quoted strings, extended comments,
|
* We use exclusive states for quoted strings, extended comments,
|
||||||
* and to eliminate parsing troubles for numeric strings.
|
* and to eliminate parsing troubles for numeric strings.
|
||||||
* Exclusive states:
|
* Exclusive states:
|
||||||
* <xb> binary numeric string - thomas 1997-11-16
|
* <xbit> bit string literal
|
||||||
* <xc> extended C-style comments - thomas 1997-07-12
|
* <xc> extended C-style comments - thomas 1997-07-12
|
||||||
* <xd> delimited identifiers (double-quoted identifiers) - thomas 1997-10-27
|
* <xd> delimited identifiers (double-quoted identifiers) - thomas 1997-10-27
|
||||||
* <xh> hexadecimal numeric string - thomas 1997-11-16
|
* <xh> hexadecimal numeric string - thomas 1997-11-16
|
||||||
* <xq> quoted strings - thomas 1997-07-30
|
* <xq> quoted strings - thomas 1997-07-30
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%x xb
|
%x xbit
|
||||||
%x xc
|
%x xc
|
||||||
%x xd
|
%x xd
|
||||||
%x xdc
|
%x xdc
|
||||||
@ -106,12 +104,12 @@ static struct _if_value {
|
|||||||
%x xcond
|
%x xcond
|
||||||
%x xskip
|
%x xskip
|
||||||
|
|
||||||
/* Binary number
|
/* Bit string
|
||||||
*/
|
*/
|
||||||
xbstart [bB]{quote}
|
xbitstart [bB]{quote}
|
||||||
xbstop {quote}
|
xbitstop {quote}
|
||||||
xbinside [^']+
|
xbitinside [^']*
|
||||||
xbcat {quote}{whitespace_with_newline}{quote}
|
xbitcat {quote}{whitespace_with_newline}{quote}
|
||||||
|
|
||||||
/* Hexadecimal number
|
/* Hexadecimal number
|
||||||
*/
|
*/
|
||||||
@ -192,7 +190,7 @@ typecast "::"
|
|||||||
* If you change either set, adjust the character lists appearing in the
|
* If you change either set, adjust the character lists appearing in the
|
||||||
* rule for "operator"!
|
* rule for "operator"!
|
||||||
*/
|
*/
|
||||||
self [,()\[\].;$\:\+\-\*\/\%\^\<\>\=\|]
|
self [,()\[\].;$\:\+\-\*\/\%\^\<\>\=]
|
||||||
op_chars [\~\!\@\#\^\&\|\`\?\$\+\-\*\/\%\<\>\=]
|
op_chars [\~\!\@\#\^\&\|\`\?\$\+\-\*\/\%\<\>\=]
|
||||||
operator {op_chars}+
|
operator {op_chars}+
|
||||||
|
|
||||||
@ -313,30 +311,29 @@ cppline {space}*#(.*\\{line_end})*.*
|
|||||||
|
|
||||||
<xc><<EOF>> { mmerror(ET_ERROR, "Unterminated /* comment"); }
|
<xc><<EOF>> { mmerror(ET_ERROR, "Unterminated /* comment"); }
|
||||||
|
|
||||||
<SQL>{xbstart} {
|
<SQL>{xbitstart} {
|
||||||
BEGIN(xb);
|
BEGIN(xbit);
|
||||||
startlit();
|
startlit();
|
||||||
}
|
}
|
||||||
<xb>{xbstop} {
|
<xbit>{xbitstop} {
|
||||||
char* endptr;
|
char* endptr;
|
||||||
|
|
||||||
BEGIN(SQL);
|
BEGIN(SQL);
|
||||||
errno = 0;
|
if (literalbuf[strspn(literalbuf, "01") + 1] != '\0')
|
||||||
yylval.ival = strtol(literalbuf, &endptr, 2);
|
mmerror(ET_ERROR, "invalid bit string input.");
|
||||||
if (*endptr != '\0' || errno == ERANGE)
|
yylval.str = literalbuf;
|
||||||
mmerror(ET_ERROR, "Bad binary integer input!");
|
return BITCONST;
|
||||||
return ICONST;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<xh>{xhinside} |
|
<xh>{xhinside} |
|
||||||
<xb>{xbinside} {
|
<xbit>{xbitinside} {
|
||||||
addlit(yytext, yyleng);
|
addlit(yytext, yyleng);
|
||||||
}
|
}
|
||||||
<xh>{xhcat} |
|
<xh>{xhcat} |
|
||||||
<xb>{xbcat} {
|
<xbit>{xbitcat} {
|
||||||
/* ignore */
|
/* ignore */
|
||||||
}
|
}
|
||||||
<xb><<EOF>> { mmerror(ET_ERROR, "Unterminated binary integer"); }
|
<xbit><<EOF>> { mmerror(ET_ERROR, "Unterminated bit string"); }
|
||||||
|
|
||||||
<SQL>{xhstart} {
|
<SQL>{xhstart} {
|
||||||
BEGIN(xh);
|
BEGIN(xh);
|
||||||
@ -490,7 +487,7 @@ cppline {space}*#(.*\\{line_end})*.*
|
|||||||
* that the "self" rule would have.
|
* that the "self" rule would have.
|
||||||
*/
|
*/
|
||||||
if (nchars == 1 &&
|
if (nchars == 1 &&
|
||||||
strchr(",()[].;$:+-*/%^<>=|", yytext[0]))
|
strchr(",()[].;$:+-*/%^<>=", yytext[0]))
|
||||||
return yytext[0];
|
return yytext[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,7 +242,7 @@ make_name(void)
|
|||||||
%token UNIONJOIN
|
%token UNIONJOIN
|
||||||
|
|
||||||
/* Special keywords, not in the query language - see the "lex" file */
|
/* Special keywords, not in the query language - see the "lex" file */
|
||||||
%token <str> IDENT SCONST Op CSTRING CVARIABLE CPP_LINE IP
|
%token <str> IDENT SCONST Op CSTRING CVARIABLE CPP_LINE IP BITCONST
|
||||||
%token <ival> ICONST PARAM
|
%token <ival> ICONST PARAM
|
||||||
%token <dval> FCONST
|
%token <dval> FCONST
|
||||||
|
|
||||||
@ -281,7 +281,7 @@ make_name(void)
|
|||||||
%type <str> CreateAsElement OptCreateAs CreateAsList CreateAsStmt
|
%type <str> CreateAsElement OptCreateAs CreateAsList CreateAsStmt
|
||||||
%type <str> OptUnder key_reference comment_text ConstraintDeferrabilitySpec
|
%type <str> OptUnder key_reference comment_text ConstraintDeferrabilitySpec
|
||||||
%type <str> key_match ColLabel SpecialRuleRelation ColId columnDef
|
%type <str> key_match ColLabel SpecialRuleRelation ColId columnDef
|
||||||
%type <str> ColConstraint ColConstraintElem drop_type
|
%type <str> ColConstraint ColConstraintElem drop_type Bitconst
|
||||||
%type <str> OptTableElementList OptTableElement TableConstraint
|
%type <str> OptTableElementList OptTableElement TableConstraint
|
||||||
%type <str> ConstraintElem key_actions ColQualList TokenId DropSchemaStmt
|
%type <str> ConstraintElem key_actions ColQualList TokenId DropSchemaStmt
|
||||||
%type <str> target_list target_el update_target_list alias_clause
|
%type <str> target_list target_el update_target_list alias_clause
|
||||||
@ -3790,6 +3790,7 @@ ParamNo: PARAM opt_indirection
|
|||||||
|
|
||||||
Iconst: ICONST { $$ = make_name();};
|
Iconst: ICONST { $$ = make_name();};
|
||||||
Fconst: FCONST { $$ = make_name();};
|
Fconst: FCONST { $$ = make_name();};
|
||||||
|
Bitconst: BITCONST { $$ = make_name();};
|
||||||
Sconst: SCONST {
|
Sconst: SCONST {
|
||||||
$$ = (char *)mm_alloc(strlen($1) + 3);
|
$$ = (char *)mm_alloc(strlen($1) + 3);
|
||||||
$$[0]='\'';
|
$$[0]='\'';
|
||||||
@ -3825,6 +3826,7 @@ AllConst: Sconst { $$ = $1; }
|
|||||||
PosAllConst: Sconst { $$ = $1; }
|
PosAllConst: Sconst { $$ = $1; }
|
||||||
| Fconst { $$ = $1; }
|
| Fconst { $$ = $1; }
|
||||||
| Iconst { $$ = $1; }
|
| Iconst { $$ = $1; }
|
||||||
|
| Bitconst { $$ = $1; }
|
||||||
| civar { $$ = make_str("?"); }
|
| civar { $$ = make_str("?"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user