OSDN Git Service

Allow more variations on valid floating point numbers (e.g. ".1", "1e6").
authorThomas G. Lockhart <lockhart@fourpalms.org>
Sat, 9 May 1998 23:15:20 +0000 (23:15 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Sat, 9 May 1998 23:15:20 +0000 (23:15 +0000)
Reintroduce fixes for unary minus parsing with leading spaces.

src/backend/parser/scan.l

index 8b09521..6fe3af8 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.38 1998/04/08 06:35:00 thomas Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.39 1998/05/09 23:15:20 thomas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -148,12 +148,13 @@ self                      [,()\[\].;$\:\+\-\*\/\<\>\=\|]
 op_and_self            [\~\!\@\#\%\^\&\|\`\?\$\:\+\-\*\/\<\>\=]
 operator               {op_and_self}+
 
-xminteger              {integer}/-
-xmreal                 {real}/{space}*-{digit}
 xmstop                 -
 
-integer                        -?{digit}+
-real                   -?{digit}+\.{digit}+([Ee][-+]?{digit}+)?
+integer                        [\-]?{digit}+
+/*
+real                   [\-]?{digit}+\.{digit}+([Ee][-+]?{digit}+)?
+*/
+real                   [\-]?(((({digit}*\.{digit}+)|({digit}+\.{digit}*))([Ee][-+]?{digit}+)?)|({digit}+[Ee][-+]?{digit}+))
 
 param                  \${integer}
 
@@ -291,7 +292,8 @@ other                       .
 
 {typecast}             { return TYPECAST; }
 
-{self}/-[\.0-9]        {
+{self}/{space}*-[\.0-9]        {
+                                       BEGIN(xm);
                                        return (yytext[0]);
                                }
 {self}                 {       return (yytext[0]); }
@@ -311,6 +313,7 @@ other                       .
                                        return (PARAM);
                                }
 
+
 {identifier}/{space}*-{number} {
                                        int i;
                                        ScanKeyword             *keyword;
@@ -386,6 +389,8 @@ other                       .
                                        CheckFloat8Val(yylval.dval);
                                        return (FCONST);
                                }
+
+
 {identifier}   {
                                        int i;
                                        ScanKeyword             *keyword;