aboutsummaryrefslogtreecommitdiff
path: root/src/backend/nodes/read.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/nodes/read.c')
-rw-r--r--src/backend/nodes/read.c70
1 files changed, 38 insertions, 32 deletions
diff --git a/src/backend/nodes/read.c b/src/backend/nodes/read.c
index 9f68f4d0e90..258bb7ed30b 100644
--- a/src/backend/nodes/read.c
+++ b/src/backend/nodes/read.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/read.c,v 1.21 2000/02/21 18:47:00 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/read.c,v 1.22 2000/04/12 17:15:16 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -60,31 +60,31 @@ stringToNode(char *str)
* (Pass length==NULL to set the string without reading its first token.)
*
* The rules for tokens are:
- * * Whitespace (space, tab, newline) always separates tokens.
- * * The characters '(', ')', '{', '}' form individual tokens even
- * without any whitespace around them.
- * * Otherwise, a token is all the characters up to the next whitespace
- * or occurrence of one of the four special characters.
- * * A backslash '\' can be used to quote whitespace or one of the four
- * special characters, so that it is treated as a plain token character.
- * Backslashes themselves must also be backslashed for consistency.
- * Any other character can be, but need not be, backslashed as well.
- * * If the resulting token is '<>' (with no backslash), it is returned
- * as a non-NULL pointer to the token but with length == 0. Note that
- * there is no other way to get a zero-length token.
+ * * Whitespace (space, tab, newline) always separates tokens.
+ * * The characters '(', ')', '{', '}' form individual tokens even
+ * without any whitespace around them.
+ * * Otherwise, a token is all the characters up to the next whitespace
+ * or occurrence of one of the four special characters.
+ * * A backslash '\' can be used to quote whitespace or one of the four
+ * special characters, so that it is treated as a plain token character.
+ * Backslashes themselves must also be backslashed for consistency.
+ * Any other character can be, but need not be, backslashed as well.
+ * * If the resulting token is '<>' (with no backslash), it is returned
+ * as a non-NULL pointer to the token but with length == 0. Note that
+ * there is no other way to get a zero-length token.
*
* Returns a pointer to the start of the next token, and the length of the
- * token (including any embedded backslashes!) in *length. If there are
+ * token (including any embedded backslashes!) in *length. If there are
* no more tokens, NULL and 0 are returned.
*
* NOTE: this routine doesn't remove backslashes; the caller must do so
* if necessary (see "debackslash").
*
* NOTE: prior to release 7.0, this routine also had a special case to treat
- * a token starting with '"' as extending to the next '"'. This code was
+ * a token starting with '"' as extending to the next '"'. This code was
* broken, however, since it would fail to cope with a string containing an
* embedded '"'. I have therefore removed this special case, and instead
- * introduced rules for using backslashes to quote characters. Higher-level
+ * introduced rules for using backslashes to quote characters. Higher-level
* code should add backslashes to a string constant to ensure it is treated
* as a single token.
*/
@@ -160,8 +160,8 @@ lsptok(char *string, int *length)
char *
debackslash(char *token, int length)
{
- char *result = palloc(length+1);
- char *ptr = result;
+ char *result = palloc(length + 1);
+ char *ptr = result;
while (length > 0)
{
@@ -208,22 +208,23 @@ nodeTokenType(char *token, int length)
if ((numlen > 0 && isdigit(*numptr)) ||
(numlen > 1 && *numptr == '.' && isdigit(numptr[1])))
{
+
/*
- * Yes. Figure out whether it is integral or float;
- * this requires both a syntax check and a range check.
- * strtol() can do both for us.
- * We know the token will end at a character that strtol will
+ * Yes. Figure out whether it is integral or float; this requires
+ * both a syntax check and a range check. strtol() can do both for
+ * us. We know the token will end at a character that strtol will
* stop at, so we do not need to modify the string.
*/
errno = 0;
(void) strtol(token, &endptr, 10);
- if (endptr != token+length || errno == ERANGE)
+ if (endptr != token + length || errno == ERANGE)
return T_Float;
return T_Integer;
}
+
/*
- * these three cases do not need length checks, since lsptok()
- * will always treat them as single-byte tokens
+ * these three cases do not need length checks, since lsptok() will
+ * always treat them as single-byte tokens
*/
else if (*token == '(')
retval = LEFT_PAREN;
@@ -233,7 +234,7 @@ nodeTokenType(char *token, int length)
retval = PLAN_SYM;
else if (*token == '@' && length == 1)
retval = AT_SYMBOL;
- else if (*token == '\"' && length > 1 && token[length-1] == '\"')
+ else if (*token == '\"' && length > 1 && token[length - 1] == '\"')
retval = T_String;
else
retval = ATOM_TOKEN;
@@ -245,10 +246,10 @@ nodeTokenType(char *token, int length)
* Slightly higher-level reader.
*
* This routine applies some semantic knowledge on top of the purely
- * lexical tokenizer lsptok(). It can read
+ * lexical tokenizer lsptok(). It can read
* * Value token nodes (integers, floats, or strings);
- * * Plan nodes (via parsePlanString() from readfuncs.c);
- * * Lists of the above.
+ * * Plan nodes (via parsePlanString() from readfuncs.c);
+ * * Lists of the above.
*
* Secrets: He assumes that lsptok already has the string (see above).
* Any callers should set read_car_only to true.
@@ -305,6 +306,7 @@ nodeRead(bool read_car_only)
{
/* must be "<>" */
this_value = NULL;
+
/*
* It might be NULL but it is an atom!
*/
@@ -321,13 +323,17 @@ nodeRead(bool read_car_only)
}
break;
case T_Integer:
- /* we know that the token terminates on a char atol will stop at */
+
+ /*
+ * we know that the token terminates on a char atol will stop
+ * at
+ */
this_value = (Node *) makeInteger(atol(token));
make_dotted_pair_cell = true;
break;
case T_Float:
{
- char *fval = (char *) palloc(tok_len + 1);
+ char *fval = (char *) palloc(tok_len + 1);
memcpy(fval, token, tok_len);
fval[tok_len] = '\0';
@@ -337,7 +343,7 @@ nodeRead(bool read_car_only)
break;
case T_String:
/* need to remove leading and trailing quotes, and backslashes */
- this_value = (Node *) makeString(debackslash(token+1, tok_len-2));
+ this_value = (Node *) makeString(debackslash(token + 1, tok_len - 2));
make_dotted_pair_cell = true;
break;
default: