Re: massive quotes?

From: "Andrew Dunstan" <andrew(at)dunslane(dot)net>
To: "PostgreSQL Hackers Mailing List" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: massive quotes?
Date: 2003-09-14 14:12:39
Message-ID: 005601c37aca$424b4f00$6401a8c0@DUNSLANE
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


A quick browse through the current doc set suggests that sections 4.1, 38 to
42, and the page on 'create function' at least will need changes.

I think calling it 'here-document' quoting is possibly unwise - it is
sufficiently different from here documents in shell and perl contexts to
make it confusing. We could call it meta-quoting, or alternative quoting,
maybe.

cheers

andrew

----- Original Message -----
From: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Sean Chittenden" <sean(at)chittenden(dot)org>
Cc: "Bruce Momjian" <pgman(at)candle(dot)pha(dot)pa(dot)us>; "Jon Jensen"
<jon(at)endpoint(dot)com>; <pgsql-hackers(at)postgresql(dot)org>
Sent: Sunday, September 14, 2003 1:49 AM
Subject: Re: [HACKERS] massive quotes?

> Attached is a proof-of-concept diff that makes the main SQL parser
> accept quoted strings in the style recently discussed ($Q$ ... $Q$).
> To complete the feature, we'd need to make the plpgsql parser do the
> same, update psql to understand this, update pg_dump to use this style
> of quoting for function bodies (and perhaps other things?), and update
> the documentation. The last is a nontrivial project all by itself.
> Anybody want to run with this football?
>
> regards, tom lane
>
>
> *** src/backend/parser/scan.l.orig Sun Aug 3 23:00:44 2003
> --- src/backend/parser/scan.l Sun Sep 14 01:38:55 2003
> ***************
> *** 39,44 ****
> --- 39,46 ----
>
> static int xcdepth = 0; /* depth of nesting in slash-star comments */
>
> + static char *hqstart; /* current here-document start string */
> +
> /*
> * literalbuf is used to accumulate literal values when multiple rules
> * are needed to parse a single literal. Call startlit to reset buffer
> ***************
> *** 95,100 ****
> --- 97,103 ----
> * <xd> delimited identifiers (double-quoted identifiers)
> * <xh> hexadecimal numeric string
> * <xq> quoted strings
> + * <hq> here-document-style quoted strings
> */
>
> %x xb
> ***************
> *** 102,107 ****
> --- 105,111 ----
> %x xd
> %x xh
> %x xq
> + %x hq
>
> /* Bit string
> * It is tempting to scan the string for only those characters
> ***************
> *** 141,146 ****
> --- 145,157 ----
> xqoctesc [\\][0-7]{1,3}
> xqcat {quote}{whitespace_with_newline}{quote}
>
> + /* Here-document-style quotes
> + * The quoted string starts with $letters$ and extends to the first
occurrence
> + * of an identical string. There is *no* processing of the quoted text.
> + */
> + hqdelim \$[A-Za-z]*\$
> + hqinside [^$]+
> +
> /* Double quote
> * Allows embedded spaces and other special characters into identifiers.
> */
> ***************
> *** 387,392 ****
> --- 398,432 ----
> }
> <xq><<EOF>> { yyerror("unterminated quoted string"); }
>
> + {hqdelim} {
> + token_start = yytext;
> + hqstart = pstrdup(yytext);
> + BEGIN(hq);
> + startlit();
> + }
> + <hq>{hqdelim} {
> + if (strcmp(yytext, hqstart) == 0)
> + {
> + pfree(hqstart);
> + BEGIN(INITIAL);
> + yylval.str = litbufdup();
> + return SCONST;
> + }
> + /*
> + * When we fail to match $...$ to hqstart, transfer
> + * the $... part to the output, but put back the final
> + * $ for rescanning. Consider $delim$...$junk$delim$
> + */
> + addlit(yytext, yyleng-1);
> + yyless(yyleng-1);
> + }
> + <hq>{hqinside} {
> + addlit(yytext, yyleng);
> + }
> + <hq>. {
> + addlitchar(yytext[0]);
> + }
> + <hq><<EOF>> { yyerror("unterminated special-quoted string"); }
>
> {xdstart} {
> token_start = yytext;
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faqs/FAQ.html

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2003-09-14 15:58:06 Re: massive quotes?
Previous Message Bruce Momjian 2003-09-14 13:33:21 Re: Link.shared help/BROKEN UNIXWARE!/Reversion Request.