[postgis-tickets] [SCM] PostGIS branch master updated. 3.1.0rc1-83-g23b0eb5

git at osgeo.org git at osgeo.org
Wed Feb 17 16:57:10 PST 2021


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".

The branch, master has been updated
       via  23b0eb52b8f6480836fa99de55837ee6d1c2846f (commit)
       via  da2247270f960acb440938c77805c22926a7c500 (commit)
       via  83480f5befa9bb154c923791f15c5a4729b974c3 (commit)
      from  b124e4fecdd54d87e826845b997d89381bf379d1 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 23b0eb52b8f6480836fa99de55837ee6d1c2846f
Merge: da22472 b124e4f
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Wed Feb 17 16:57:04 2021 -0800

    Merge branch 'master' of https://git.osgeo.org/gitea/postgis/postgis


commit da2247270f960acb440938c77805c22926a7c500
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Wed Feb 17 16:56:56 2021 -0800

    Update news regarding NaN WKT input

diff --git a/NEWS b/NEWS
index 2b024e9..741ad29 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,7 @@ PostGIS 3.2.0
   - #3233, ValidateTopology check for node's containing_face (Sandro Santilli)
   - #4830, ValidateTopology check for edges side face containment
            (Sandro Santilli)
+  - #4827, Allow NaN coordinates in WKT input (Paul Ramsey)
 
  * New features*
   - #4841, FindTopology to quickly get a topology record (Sandro Santilli)

commit 83480f5befa9bb154c923791f15c5a4729b974c3
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Wed Feb 17 16:55:31 2021 -0800

    Accept 'Nan' coordinates in WKT input, to allow for round-tripping of oddball bad geometry.
    Closes #4827

diff --git a/liblwgeom/cunit/cu_in_wkt.c b/liblwgeom/cunit/cu_in_wkt.c
index 5df57ca..dc25093 100644
--- a/liblwgeom/cunit/cu_in_wkt.c
+++ b/liblwgeom/cunit/cu_in_wkt.c
@@ -66,6 +66,14 @@ static char* cu_wkt_in(char *wkt, uint8_t variant)
 	return s;
 }
 
+#include <ctype.h>
+static void cu_strtolower(char* str)
+{
+	size_t i;
+	for (i = 0; i < strlen(str); ++i) {
+		str[i] = tolower(str[i]);
+	}
+}
 
 static void test_wkt_in_point(void)
 {
@@ -94,7 +102,13 @@ static void test_wkt_in_point(void)
 	CU_ASSERT_STRING_EQUAL(r,s);
 	lwfree(r);
 
-	//printf("\nIN:  %s\nOUT: %s\n",s,r);
+	s = "point(nan 10)";
+	r = cu_wkt_in(s, WKT_ISO);
+	cu_strtolower(r);
+	CU_ASSERT_STRING_EQUAL(r,s);
+	lwfree(r);
+
+	// printf("\nIN:  %s\nOUT: %s\n",s,r);
 }
 
 static void test_wkt_in_linestring(void)
diff --git a/liblwgeom/lwin_wkt_lex.c b/liblwgeom/lwin_wkt_lex.c
index 9d918ae..6cd2fe2 100644
--- a/liblwgeom/lwin_wkt_lex.c
+++ b/liblwgeom/lwin_wkt_lex.c
@@ -1,6 +1,6 @@
-#line 1 "lwin_wkt_lex.c"
+#line 2 "lwin_wkt_lex.c"
 
-#line 3 "lwin_wkt_lex.c"
+#line 4 "lwin_wkt_lex.c"
 
 #define  YY_INT_ALIGNED short int
 
@@ -8,17 +8,11 @@
 
 #define yy_create_buffer wkt_yy_create_buffer
 #define yy_delete_buffer wkt_yy_delete_buffer
-#define yy_scan_buffer wkt_yy_scan_buffer
-#define yy_scan_string wkt_yy_scan_string
-#define yy_scan_bytes wkt_yy_scan_bytes
+#define yy_flex_debug wkt_yy_flex_debug
 #define yy_init_buffer wkt_yy_init_buffer
 #define yy_flush_buffer wkt_yy_flush_buffer
 #define yy_load_buffer_state wkt_yy_load_buffer_state
 #define yy_switch_to_buffer wkt_yy_switch_to_buffer
-#define yypush_buffer_state wkt_yypush_buffer_state
-#define yypop_buffer_state wkt_yypop_buffer_state
-#define yyensure_buffer_stack wkt_yyensure_buffer_stack
-#define yy_flex_debug wkt_yy_flex_debug
 #define yyin wkt_yyin
 #define yyleng wkt_yyleng
 #define yylex wkt_yylex
@@ -33,246 +27,12 @@
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 4
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 
-#ifdef yy_create_buffer
-#define wkt_yy_create_buffer_ALREADY_DEFINED
-#else
-#define yy_create_buffer wkt_yy_create_buffer
-#endif
-
-#ifdef yy_delete_buffer
-#define wkt_yy_delete_buffer_ALREADY_DEFINED
-#else
-#define yy_delete_buffer wkt_yy_delete_buffer
-#endif
-
-#ifdef yy_scan_buffer
-#define wkt_yy_scan_buffer_ALREADY_DEFINED
-#else
-#define yy_scan_buffer wkt_yy_scan_buffer
-#endif
-
-#ifdef yy_scan_string
-#define wkt_yy_scan_string_ALREADY_DEFINED
-#else
-#define yy_scan_string wkt_yy_scan_string
-#endif
-
-#ifdef yy_scan_bytes
-#define wkt_yy_scan_bytes_ALREADY_DEFINED
-#else
-#define yy_scan_bytes wkt_yy_scan_bytes
-#endif
-
-#ifdef yy_init_buffer
-#define wkt_yy_init_buffer_ALREADY_DEFINED
-#else
-#define yy_init_buffer wkt_yy_init_buffer
-#endif
-
-#ifdef yy_flush_buffer
-#define wkt_yy_flush_buffer_ALREADY_DEFINED
-#else
-#define yy_flush_buffer wkt_yy_flush_buffer
-#endif
-
-#ifdef yy_load_buffer_state
-#define wkt_yy_load_buffer_state_ALREADY_DEFINED
-#else
-#define yy_load_buffer_state wkt_yy_load_buffer_state
-#endif
-
-#ifdef yy_switch_to_buffer
-#define wkt_yy_switch_to_buffer_ALREADY_DEFINED
-#else
-#define yy_switch_to_buffer wkt_yy_switch_to_buffer
-#endif
-
-#ifdef yypush_buffer_state
-#define wkt_yypush_buffer_state_ALREADY_DEFINED
-#else
-#define yypush_buffer_state wkt_yypush_buffer_state
-#endif
-
-#ifdef yypop_buffer_state
-#define wkt_yypop_buffer_state_ALREADY_DEFINED
-#else
-#define yypop_buffer_state wkt_yypop_buffer_state
-#endif
-
-#ifdef yyensure_buffer_stack
-#define wkt_yyensure_buffer_stack_ALREADY_DEFINED
-#else
-#define yyensure_buffer_stack wkt_yyensure_buffer_stack
-#endif
-
-#ifdef yylex
-#define wkt_yylex_ALREADY_DEFINED
-#else
-#define yylex wkt_yylex
-#endif
-
-#ifdef yyrestart
-#define wkt_yyrestart_ALREADY_DEFINED
-#else
-#define yyrestart wkt_yyrestart
-#endif
-
-#ifdef yylex_init
-#define wkt_yylex_init_ALREADY_DEFINED
-#else
-#define yylex_init wkt_yylex_init
-#endif
-
-#ifdef yylex_init_extra
-#define wkt_yylex_init_extra_ALREADY_DEFINED
-#else
-#define yylex_init_extra wkt_yylex_init_extra
-#endif
-
-#ifdef yylex_destroy
-#define wkt_yylex_destroy_ALREADY_DEFINED
-#else
-#define yylex_destroy wkt_yylex_destroy
-#endif
-
-#ifdef yyget_debug
-#define wkt_yyget_debug_ALREADY_DEFINED
-#else
-#define yyget_debug wkt_yyget_debug
-#endif
-
-#ifdef yyset_debug
-#define wkt_yyset_debug_ALREADY_DEFINED
-#else
-#define yyset_debug wkt_yyset_debug
-#endif
-
-#ifdef yyget_extra
-#define wkt_yyget_extra_ALREADY_DEFINED
-#else
-#define yyget_extra wkt_yyget_extra
-#endif
-
-#ifdef yyset_extra
-#define wkt_yyset_extra_ALREADY_DEFINED
-#else
-#define yyset_extra wkt_yyset_extra
-#endif
-
-#ifdef yyget_in
-#define wkt_yyget_in_ALREADY_DEFINED
-#else
-#define yyget_in wkt_yyget_in
-#endif
-
-#ifdef yyset_in
-#define wkt_yyset_in_ALREADY_DEFINED
-#else
-#define yyset_in wkt_yyset_in
-#endif
-
-#ifdef yyget_out
-#define wkt_yyget_out_ALREADY_DEFINED
-#else
-#define yyget_out wkt_yyget_out
-#endif
-
-#ifdef yyset_out
-#define wkt_yyset_out_ALREADY_DEFINED
-#else
-#define yyset_out wkt_yyset_out
-#endif
-
-#ifdef yyget_leng
-#define wkt_yyget_leng_ALREADY_DEFINED
-#else
-#define yyget_leng wkt_yyget_leng
-#endif
-
-#ifdef yyget_text
-#define wkt_yyget_text_ALREADY_DEFINED
-#else
-#define yyget_text wkt_yyget_text
-#endif
-
-#ifdef yyget_lineno
-#define wkt_yyget_lineno_ALREADY_DEFINED
-#else
-#define yyget_lineno wkt_yyget_lineno
-#endif
-
-#ifdef yyset_lineno
-#define wkt_yyset_lineno_ALREADY_DEFINED
-#else
-#define yyset_lineno wkt_yyset_lineno
-#endif
-
-#ifdef yywrap
-#define wkt_yywrap_ALREADY_DEFINED
-#else
-#define yywrap wkt_yywrap
-#endif
-
-#ifdef yyalloc
-#define wkt_yyalloc_ALREADY_DEFINED
-#else
-#define yyalloc wkt_yyalloc
-#endif
-
-#ifdef yyrealloc
-#define wkt_yyrealloc_ALREADY_DEFINED
-#else
-#define yyrealloc wkt_yyrealloc
-#endif
-
-#ifdef yyfree
-#define wkt_yyfree_ALREADY_DEFINED
-#else
-#define yyfree wkt_yyfree
-#endif
-
-#ifdef yytext
-#define wkt_yytext_ALREADY_DEFINED
-#else
-#define yytext wkt_yytext
-#endif
-
-#ifdef yyleng
-#define wkt_yyleng_ALREADY_DEFINED
-#else
-#define yyleng wkt_yyleng
-#endif
-
-#ifdef yyin
-#define wkt_yyin_ALREADY_DEFINED
-#else
-#define yyin wkt_yyin
-#endif
-
-#ifdef yyout
-#define wkt_yyout_ALREADY_DEFINED
-#else
-#define yyout wkt_yyout
-#endif
-
-#ifdef yy_flex_debug
-#define wkt_yy_flex_debug_ALREADY_DEFINED
-#else
-#define yy_flex_debug wkt_yy_flex_debug
-#endif
-
-#ifdef yylineno
-#define wkt_yylineno_ALREADY_DEFINED
-#else
-#define yylineno wkt_yylineno
-#endif
-
 /* First, we deal with  platform-specific or compiler-specific issues. */
 
 /* begin standard C headers. */
@@ -306,6 +66,7 @@ typedef int16_t flex_int16_t;
 typedef uint16_t flex_uint16_t;
 typedef int32_t flex_int32_t;
 typedef uint32_t flex_uint32_t;
+typedef uint64_t flex_uint64_t;
 #else
 typedef signed char flex_int8_t;
 typedef short int flex_int16_t;
@@ -313,6 +74,7 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -343,61 +105,63 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#ifndef SIZE_MAX
-#define SIZE_MAX               (~(size_t)0)
-#endif
+#endif /* ! FLEXINT_H */
 
-#endif /* ! C99 */
+#ifdef __cplusplus
 
-#endif /* ! FLEXINT_H */
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
 
-/* begin standard C++ headers. */
+#else	/* ! __cplusplus */
 
-/* TODO: this is always defined, so inline it */
-#define yyconst const
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
 
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define yynoreturn __attribute__((__noreturn__))
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
 #else
-#define yynoreturn
+#define yyconst
 #endif
 
 /* Returned upon end-of-file. */
 #define YY_NULL 0
 
-/* Promotes a possibly negative, possibly signed char to an
- *   integer in range [0..255] for use as an array index.
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
  */
-#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
 
 /* Enter a start condition.  This macro really ought to take a parameter,
  * but we do it the disgusting crufty way forced on us by the ()-less
  * definition of BEGIN.
  */
 #define BEGIN (yy_start) = 1 + 2 *
+
 /* Translate the current start state into a value that can be later handed
  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  * compatibility.
  */
 #define YY_START (((yy_start) - 1) / 2)
 #define YYSTATE YY_START
+
 /* Action number for EOF rule of a given start state. */
 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
 /* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin  )
+#define YY_NEW_FILE wkt_yyrestart(wkt_yyin  )
+
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -414,30 +178,30 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
 typedef size_t yy_size_t;
 #endif
 
-extern int yyleng;
+extern yy_size_t wkt_yyleng;
 
-extern FILE *yyin, *yyout;
+extern FILE *wkt_yyin, *wkt_yyout;
 
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
-    
+
     #define YY_LESS_LINENO(n)
-    #define YY_LINENO_REWIND_TO(ptr)
     
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
 	do \
 		{ \
-		/* Undo effects of setting up yytext. */ \
+		/* Undo effects of setting up wkt_yytext. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
 		*yy_cp = (yy_hold_char); \
 		YY_RESTORE_YY_MORE_OFFSET \
 		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		YY_DO_BEFORE_ACTION; /* set up wkt_yytext again */ \
 		} \
 	while ( 0 )
+
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -452,12 +216,12 @@ struct yy_buffer_state
 	/* Size of input buffer in bytes, not including room for EOB
 	 * characters.
 	 */
-	int yy_buf_size;
+	yy_size_t yy_buf_size;
 
 	/* Number of characters read into yy_ch_buf, not including EOB
 	 * characters.
 	 */
-	int yy_n_chars;
+	yy_size_t yy_n_chars;
 
 	/* Whether we "own" the buffer - i.e., we know we created it,
 	 * and can realloc() it to grow it, and should free() it to
@@ -480,7 +244,7 @@ struct yy_buffer_state
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-
+    
 	/* Whether to try to fill the input buffer when we reach the
 	 * end of it.
 	 */
@@ -497,8 +261,8 @@ struct yy_buffer_state
 	 * possible backing-up.
 	 *
 	 * When we actually see the EOF, we change the status to "new"
-	 * (via yyrestart()), so that the user can continue scanning by
-	 * just pointing yyin at a new input file.
+	 * (via wkt_yyrestart()), so that the user can continue scanning by
+	 * just pointing wkt_yyin at a new input file.
 	 */
 #define YY_BUFFER_EOF_PENDING 2
 
@@ -508,7 +272,7 @@ struct yy_buffer_state
 /* Stack of input buffers. */
 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* We provide macros for accessing buffer states in case in the
  * future we want to put the buffer states in a more general
@@ -519,103 +283,108 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                           : NULL)
+
 /* Same as previous macro, but useful when we know that the buffer stack is not
  * NULL or when we need an lvalue. For internal use only.
  */
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
 
-/* yy_hold_char holds the character lost when yytext is formed. */
+/* yy_hold_char holds the character lost when wkt_yytext is formed. */
 static char yy_hold_char;
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-int yyleng;
+static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
+yy_size_t wkt_yyleng;
 
 /* Points to current character in buffer. */
-static char *yy_c_buf_p = NULL;
+static char *yy_c_buf_p = (char *) 0;
 static int yy_init = 0;		/* whether we need to initialize */
 static int yy_start = 0;	/* start state number */
 
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
+/* Flag which is used to allow wkt_yywrap()'s to do buffer switches
+ * instead of setting up a fresh wkt_yyin.  A bit of a hack ...
  */
 static int yy_did_buffer_switch_on_eof;
 
-void yyrestart ( FILE *input_file  );
-void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
-void yy_delete_buffer ( YY_BUFFER_STATE b  );
-void yy_flush_buffer ( YY_BUFFER_STATE b  );
-void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
-void yypop_buffer_state ( void );
+void wkt_yyrestart (FILE *input_file  );
+void wkt_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE wkt_yy_create_buffer (FILE *file,int size  );
+void wkt_yy_delete_buffer (YY_BUFFER_STATE b  );
+void wkt_yy_flush_buffer (YY_BUFFER_STATE b  );
+void wkt_yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void wkt_yypop_buffer_state (void );
+
+static void wkt_yyensure_buffer_stack (void );
+static void wkt_yy_load_buffer_state (void );
+static void wkt_yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
-static void yyensure_buffer_stack ( void );
-static void yy_load_buffer_state ( void );
-static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
-#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
+#define YY_FLUSH_BUFFER wkt_yy_flush_buffer(YY_CURRENT_BUFFER )
 
-YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
-YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
+YY_BUFFER_STATE wkt_yy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE wkt_yy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE wkt_yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
 
-void *yyalloc ( yy_size_t  );
-void *yyrealloc ( void *, yy_size_t  );
-void yyfree ( void *  );
+void *wkt_yyalloc (yy_size_t  );
+void *wkt_yyrealloc (void *,yy_size_t  );
+void wkt_yyfree (void *  );
+
+#define yy_new_buffer wkt_yy_create_buffer
 
-#define yy_new_buffer yy_create_buffer
 #define yy_set_interactive(is_interactive) \
 	{ \
 	if ( ! YY_CURRENT_BUFFER ){ \
-        yyensure_buffer_stack (); \
+        wkt_yyensure_buffer_stack (); \
 		YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+            wkt_yy_create_buffer(wkt_yyin,YY_BUF_SIZE ); \
 	} \
 	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
 	}
+
 #define yy_set_bol(at_bol) \
 	{ \
 	if ( ! YY_CURRENT_BUFFER ){\
-        yyensure_buffer_stack (); \
+        wkt_yyensure_buffer_stack (); \
 		YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+            wkt_yy_create_buffer(wkt_yyin,YY_BUF_SIZE ); \
 	} \
 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
 	}
+
 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
 /* Begin user sect3 */
 
-#define wkt_yywrap() (/*CONSTCOND*/1)
+#define wkt_yywrap(n) 1
 #define YY_SKIP_YYWRAP
-typedef flex_uint8_t YY_CHAR;
 
-FILE *yyin = NULL, *yyout = NULL;
+typedef unsigned char YY_CHAR;
+
+FILE *wkt_yyin = (FILE *) 0, *wkt_yyout = (FILE *) 0;
 
 typedef int yy_state_type;
 
-extern int yylineno;
-int yylineno = 1;
+extern int wkt_yylineno;
 
-extern char *yytext;
-#ifdef yytext_ptr
-#undef yytext_ptr
-#endif
-#define yytext_ptr yytext
+int wkt_yylineno = 1;
+
+extern char *wkt_yytext;
+#define yytext_ptr wkt_yytext
 
-static yy_state_type yy_get_previous_state ( void );
-static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
-static int yy_get_next_buffer ( void );
-static void yynoreturn yy_fatal_error ( const char* msg  );
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
 
 /* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
+ * corresponding action - sets up wkt_yytext.
  */
 #define YY_DO_BEFORE_ACTION \
 	(yytext_ptr) = yy_bp; \
-	yyleng = (int) (yy_cp - yy_bp); \
+	wkt_yyleng = (yy_size_t) (yy_cp - yy_bp); \
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 26
-#define YY_END_OF_BUFFER 27
+
+#define YY_NUM_RULES 27
+#define YY_END_OF_BUFFER 28
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -623,30 +392,30 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static const flex_int16_t yy_accept[173] =
+static yyconst flex_int16_t yy_accept[177] =
     {   0,
-        0,    0,   27,   25,   24,   24,   20,   21,   22,   25,
-       25,   25,   23,   25,   25,   25,   25,   19,   25,   25,
-       25,   19,   24,    0,    0,    0,    1,    0,    0,    0,
+        0,    0,   28,   26,   25,   25,   21,   22,   23,   26,
+       26,   26,   24,   26,   26,   26,   26,   20,   26,   26,
+       26,   26,   20,   25,    0,    0,    0,    1,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       19,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   16,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   18,
-        0,    0,    0,   17,    0,    0,    0,    0,    0,    0,
+        0,    0,   20,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   17,    0,    0,    0,
+        0,    0,    0,    0,    0,    2,    0,    0,    0,    0,
+        0,    0,    0,   19,    0,    0,    0,   18,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        2,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    3,    0,    0,    0,    0,    0,
 
-        0,   10,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   15,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   11,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   14,    7,    0,    9,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   13,    6,    0,    8,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    9,    0,
-        0,    5,    4,    0,    0,   11,    0,    0,    0,   12,
-        0,    0,    0,    0,    7,    0,    0,    0,    0,   14,
-        3,    0
+        0,    0,   10,    0,    0,    6,    5,    0,    0,   12,
+        0,    0,    0,   13,    0,    0,    0,    0,    8,    0,
+        0,    0,    0,   15,    4,    0
     } ;
 
-static const YY_CHAR yy_ec[256] =
+static yyconst flex_int32_t yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
@@ -678,7 +447,7 @@ static const YY_CHAR yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static const YY_CHAR yy_meta[53] =
+static yyconst flex_int32_t yy_meta[53] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -688,105 +457,106 @@ static const YY_CHAR yy_meta[53] =
         1,    1
     } ;
 
-static const flex_int16_t yy_base[173] =
+static yyconst flex_int16_t yy_base[177] =
     {   0,
-        0,    0,  202,  384,   51,   53,  384,  384,  384,   48,
-      190,   57,  384,   41,   41,   52,   49,   42,   48,   48,
-       56,   53,   75,  186,    0,   96,  384,  106,  109,   54,
-       62,   61,   80,   86,   91,   97,  100,  102,  100,  104,
-      384,  179,  126,  112,  102,  105,  109,  117,  129,  120,
-      126,  119,  136,  384,  139,  124,  130,  140,  127,  144,
-      134,  142,  135,  148,   85,  141,  154,  148,  154,  384,
-      157,  160,  195,  384,  166,  175,  184,  175,  185,  178,
-      179,  178,  180,  178,  192,  190,  186,  194,  204,   76,
-       69,  204,  202,  215,  210,  202,  218,  215,  220,  226,
-
-      218,  384,  223,  236,  227,  241,  225,  243,  236,  230,
-      246,  242,  237,  253,  258,  384,  245,  249,  263,  259,
-      266,  270,  260,  261,  274,  281,  274,  270,  271,  275,
-      279,  384,  384,  274,  384,  281,  294,  283,  291,  283,
-      295,  300,  297,  301,  310,  298,  306,  316,  384,  318,
-      315,  384,  384,  310,  319,  384,  325,  317,  325,  384,
-      317,  330,  337,  331,  384,  339,  334,  345,  340,  384,
-      384,  384
+        0,    0,  374,  391,   51,   53,  391,  391,  391,   48,
+      362,   57,  391,   41,   41,   52,   49,   42,   59,   50,
+       49,   56,   55,   76,  361,    0,   96,  391,  106,  109,
+       54,   62,   61,   80,   86,   91,   97,   97,  101,  103,
+      101,  106,  391,  193,  126,  113,  110,  107,  111,  123,
+      132,  121,  149,  127,  122,  143,  391,  147,  132,  138,
+      147,  133,  150,  140,  151,  391,  144,  156,  189,  153,
+      156,  150,  160,  391,  160,  161,  196,  391,  169,  182,
+      192,  186,  193,  184,  187,  186,  188,  186,  196,  195,
+      191,  199,  210,  180,   76,  207,  203,  218,  217,  213,
+
+      226,  221,  227,  231,  228,  391,  229,  240,  230,  245,
+      229,  247,  239,  233,  249,  245,  238,  256,  265,  391,
+      256,  257,  269,  266,  273,  276,  267,  267,  278,  284,
+      278,  274,  275,  278,  282,  391,  391,  277,  391,  284,
+      295,  286,  298,  294,  303,  306,  304,  308,  316,  305,
+      312,  320,  391,  321,  319,  391,  391,  314,  323,  391,
+      328,  320,  328,  391,  320,  331,  340,  338,  391,  350,
+      342,  351,  347,  391,  391,  391
     } ;
 
-static const flex_int16_t yy_def[173] =
+static yyconst flex_int16_t yy_def[177] =
     {   0,
-      172,    1,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,   12,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,    0
+      176,    1,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,   12,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,    0
     } ;
 
-static const flex_int16_t yy_nxt[437] =
+static yyconst flex_int16_t yy_nxt[444] =
     {   0,
         4,    5,    6,    7,    8,    4,    9,   10,   11,   12,
        13,    4,    4,   14,    4,   15,    4,   16,    4,    4,
-       17,   18,    4,    4,   19,    4,   20,   21,    4,    4,
-        4,   22,    4,   14,    4,   15,    4,   16,    4,    4,
-       17,   18,    4,    4,   19,    4,   20,   21,    4,    4,
-        4,   22,   23,   23,   23,   23,   24,   25,   27,   27,
-       30,   27,   33,   27,   31,   28,   25,   34,   35,   32,
-       36,   37,   29,   38,   41,   39,   23,   23,   91,   44,
-       30,   40,   33,   45,   31,   91,   46,   34,   35,   32,
-       36,   37,   29,   38,   41,   39,   77,   27,   27,   44,
-
-       27,   40,   27,   45,   47,   26,   46,   27,   27,   48,
-       27,   29,   27,   49,   42,   26,   42,   50,   43,   51,
-       52,   53,   54,   55,   47,   56,   57,   27,   27,   48,
-       27,   29,   27,   49,   58,   43,   59,   50,   60,   51,
-       52,   53,   54,   55,   61,   56,   57,   62,   63,   64,
-       65,   66,   67,   68,   58,   69,   59,   70,   60,   71,
-       72,   73,   74,   78,   61,   75,   76,   62,   63,   64,
-       65,   66,   67,   68,   79,   69,   80,   70,   81,   71,
-       72,   73,   74,   78,   82,   75,   76,   83,   43,   88,
-       89,   90,   92,   91,   79,   26,   80,   93,   81,   26,
-
-       94,  172,   95,   96,   82,   97,   98,   83,   84,   88,
-       89,   99,   92,  100,  101,   85,  102,   93,  103,   86,
-       94,   87,   95,   96,  104,   97,   98,  105,   84,  106,
-      107,   99,  108,  100,  101,   85,  102,  109,  103,   86,
-      110,   87,  111,  114,  104,  112,  113,  105,  115,  106,
-      107,  116,  108,  117,  118,  119,  120,  109,  121,  122,
-      110,  123,  111,  114,  124,  112,  113,  125,  115,  126,
-      127,  116,  128,  117,  118,  119,  120,  129,  121,  122,
-      130,  123,  131,  132,  124,  133,  134,  125,  135,  126,
-      127,  136,  128,  137,  138,  139,  140,  129,  141,  142,
-
-      130,  143,  131,  132,  144,  133,  134,  145,  135,  146,
-      147,  136,  148,  137,  138,  139,  140,  149,  141,  142,
-      150,  143,  151,  152,  144,  153,  154,  145,  155,  146,
-      147,  156,  148,  157,  158,  159,  160,  149,  161,  162,
-      150,  163,  151,  152,  164,  153,  154,  165,  155,  166,
-      167,  156,  168,  157,  158,  159,  160,  169,  161,  162,
-      170,  163,  171,  172,  164,  172,  172,  165,  172,  166,
-      167,  172,  168,  172,  172,  172,  172,  169,  172,  172,
-      170,  172,  171,    3,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172
+       17,   18,   19,    4,   20,    4,   21,   22,    4,    4,
+        4,   23,    4,   14,    4,   15,    4,   16,    4,    4,
+       17,   18,   19,    4,   20,    4,   21,   22,    4,    4,
+        4,   23,   24,   24,   24,   24,   25,   26,   28,   28,
+       31,   28,   34,   28,   32,   29,   26,   35,   36,   33,
+       37,   38,   30,   39,   40,   41,   43,   24,   24,   46,
+       31,   42,   34,   47,   32,   95,   48,   35,   36,   33,
+       37,   38,   30,   39,   40,   41,   43,   28,   28,   46,
+
+       28,   42,   28,   47,   49,   27,   48,   28,   28,   50,
+       28,   30,   28,   51,   44,   27,   44,   52,   45,   53,
+       54,   55,   56,   57,   49,   58,   59,   28,   28,   50,
+       28,   30,   28,   51,   60,   45,   61,   52,   62,   53,
+       54,   55,   56,   57,   63,   58,   59,   64,   65,   67,
+       66,   66,   68,   66,   60,   66,   61,   69,   62,   70,
+       71,   72,   73,   74,   63,   75,   76,   64,   65,   67,
+       77,   78,   68,   79,   80,   82,   83,   69,   84,   70,
+       71,   72,   73,   74,   85,   75,   76,   86,   87,   95,
+       77,   78,   92,   79,   80,   82,   83,   93,   84,   94,
+
+       81,   95,   45,   96,   85,   97,   98,   86,   87,   88,
+       99,  100,   92,  101,  102,  103,   89,   93,  104,  105,
+       90,  106,   91,   96,  107,   97,   98,  108,  109,   88,
+       99,  100,  110,  101,  102,  103,   89,  111,  104,  105,
+       90,  106,   91,  112,  107,  113,  114,  108,  109,  115,
+      116,  117,  110,  118,  119,  120,  121,  111,  122,  123,
+      124,  125,  126,  112,  127,  113,  114,  128,  129,  115,
+      116,  117,  130,  118,  119,  120,  121,  131,  122,  123,
+      124,  125,  126,  132,  127,  133,  134,  128,  129,  135,
+      136,  137,  130,  138,  139,  140,  141,  131,  142,  143,
+
+      144,  145,  146,  132,  147,  133,  134,  148,  149,  135,
+      136,  137,  150,  138,  139,  140,  141,  151,  142,  143,
+      144,  145,  146,  152,  147,  153,  154,  148,  149,  155,
+      156,  157,  150,  158,  159,  160,  161,  151,  162,  163,
+      164,  165,  166,  152,  167,  153,  154,  168,  169,  155,
+      156,  157,  170,  158,  159,  160,  161,  171,  162,  163,
+      164,  165,  166,  172,  167,  173,  174,  168,  169,  175,
+       27,   27,  170,  176,  176,  176,  176,  171,  176,  176,
+      176,  176,  176,  172,  176,  173,  174,  176,  176,  175,
+        3,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176
     } ;
 
-static const flex_int16_t yy_chk[437] =
+static yyconst flex_int16_t yy_chk[444] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -795,54 +565,55 @@ static const flex_int16_t yy_chk[437] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    5,    5,    6,    6,   10,   10,   12,   12,
        14,   12,   15,   12,   14,   12,   12,   16,   17,   14,
-       18,   19,   12,   20,   22,   21,   23,   23,   91,   30,
-       14,   21,   15,   31,   14,   90,   32,   16,   17,   14,
-       18,   19,   12,   20,   22,   21,   65,   26,   26,   30,
-
-       26,   21,   26,   31,   33,   26,   32,   28,   28,   34,
-       28,   26,   28,   35,   29,   28,   29,   36,   29,   37,
-       37,   38,   39,   40,   33,   44,   45,   43,   43,   34,
-       43,   26,   43,   35,   46,   43,   47,   36,   48,   37,
-       37,   38,   39,   40,   49,   44,   45,   50,   51,   52,
-       53,   55,   56,   57,   46,   58,   47,   59,   48,   60,
-       61,   62,   63,   66,   49,   64,   64,   50,   51,   52,
-       53,   55,   56,   57,   67,   58,   68,   59,   69,   60,
-       61,   62,   63,   66,   71,   64,   64,   72,   42,   75,
-       76,   77,   78,   77,   67,   24,   68,   79,   69,   11,
-
-       80,    3,   81,   82,   71,   83,   84,   72,   73,   75,
-       76,   85,   78,   86,   87,   73,   88,   79,   89,   73,
-       80,   73,   81,   82,   92,   83,   84,   93,   73,   94,
-       95,   85,   96,   86,   87,   73,   88,   97,   89,   73,
-       98,   73,   99,  101,   92,  100,  100,   93,  103,   94,
-       95,  104,   96,  105,  106,  107,  108,   97,  109,  110,
-       98,  111,   99,  101,  112,  100,  100,  113,  103,  114,
-      115,  104,  117,  105,  106,  107,  108,  118,  109,  110,
-      119,  111,  120,  121,  112,  122,  123,  113,  124,  114,
-      115,  125,  117,  126,  127,  128,  129,  118,  130,  131,
-
-      119,  134,  120,  121,  136,  122,  123,  137,  124,  138,
-      139,  125,  140,  126,  127,  128,  129,  141,  130,  131,
-      142,  134,  143,  144,  136,  145,  146,  137,  147,  138,
-      139,  148,  140,  150,  151,  154,  155,  141,  157,  158,
-      142,  159,  143,  144,  161,  145,  146,  162,  147,  163,
-      164,  148,  166,  150,  151,  154,  155,  167,  157,  158,
-      168,  159,  169,    0,  161,    0,    0,  162,    0,  163,
-      164,    0,  166,    0,    0,    0,    0,  167,    0,    0,
-      168,    0,  169,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172
+       18,   19,   12,   20,   21,   22,   23,   24,   24,   31,
+       14,   22,   15,   32,   14,   95,   33,   16,   17,   14,
+       18,   19,   12,   20,   21,   22,   23,   27,   27,   31,
+
+       27,   22,   27,   32,   34,   27,   33,   29,   29,   35,
+       29,   27,   29,   36,   30,   29,   30,   37,   30,   38,
+       39,   39,   40,   41,   34,   42,   46,   45,   45,   35,
+       45,   27,   45,   36,   47,   45,   48,   37,   49,   38,
+       39,   39,   40,   41,   50,   42,   46,   51,   52,   54,
+       53,   53,   55,   53,   47,   53,   48,   56,   49,   58,
+       59,   60,   61,   62,   50,   63,   64,   51,   52,   54,
+       65,   67,   55,   68,   68,   70,   71,   56,   72,   58,
+       59,   60,   61,   62,   73,   63,   64,   75,   76,   94,
+       65,   67,   79,   68,   68,   70,   71,   80,   72,   81,
+
+       69,   81,   44,   82,   73,   83,   84,   75,   76,   77,
+       85,   86,   79,   87,   88,   89,   77,   80,   90,   91,
+       77,   92,   77,   82,   93,   83,   84,   96,   97,   77,
+       85,   86,   98,   87,   88,   89,   77,   99,   90,   91,
+       77,   92,   77,  100,   93,  101,  102,   96,   97,  103,
+      104,  104,   98,  105,  107,  108,  109,   99,  110,  111,
+      112,  113,  114,  100,  115,  101,  102,  116,  117,  103,
+      104,  104,  118,  105,  107,  108,  109,  119,  110,  111,
+      112,  113,  114,  121,  115,  122,  123,  116,  117,  124,
+      125,  126,  118,  127,  128,  129,  130,  119,  131,  132,
+
+      133,  134,  135,  121,  138,  122,  123,  140,  141,  124,
+      125,  126,  142,  127,  128,  129,  130,  143,  131,  132,
+      133,  134,  135,  144,  138,  145,  146,  140,  141,  147,
+      148,  149,  142,  150,  151,  152,  154,  143,  155,  158,
+      159,  161,  162,  144,  163,  145,  146,  165,  166,  147,
+      148,  149,  167,  150,  151,  152,  154,  168,  155,  158,
+      159,  161,  162,  170,  163,  171,  172,  165,  166,  173,
+       25,   11,  167,    3,    0,    0,    0,  168,    0,    0,
+        0,    0,    0,  170,    0,  171,  172,    0,    0,  173,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176
     } ;
 
 static yy_state_type yy_last_accepting_state;
 static char *yy_last_accepting_cpos;
 
-extern int yy_flex_debug;
-int yy_flex_debug = 0;
+extern int wkt_yy_flex_debug;
+int wkt_yy_flex_debug = 0;
 
 /* The intent behind this definition is that it'll catch
  * any uses of REJECT which flex missed.
@@ -851,7 +622,7 @@ int yy_flex_debug = 0;
 #define yymore() yymore_used_but_not_detected
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
+char *wkt_yytext;
 #line 1 "lwin_wkt_lex.l"
 #line 2 "lwin_wkt_lex.l"
 
@@ -883,17 +654,16 @@ static void wkt_lexer_unknown()
 * debugging info.
 */
 #define YY_USER_ACTION do { \
-	wkt_yylloc.first_line = wkt_yylloc.last_line = yylineno; \
+	wkt_yylloc.first_line = wkt_yylloc.last_line = wkt_yylineno; \
 	wkt_yylloc.first_column = wkt_yylloc.last_column; \
-	wkt_yylloc.last_column += yyleng; \
+	wkt_yylloc.last_column += wkt_yyleng; \
 	LWDEBUGF(5,"lex: %s", wkt_yytext); \
 	} while (0);
 
 
-#line 893 "lwin_wkt_lex.c"
 #define YY_NO_INPUT 1
 /* Suppress the default implementations. */
-#line 896 "lwin_wkt_lex.c"
+#line 667 "lwin_wkt_lex.c"
 
 #define INITIAL 0
 
@@ -909,36 +679,36 @@ static void wkt_lexer_unknown()
 #define YY_EXTRA_TYPE void *
 #endif
 
-static int yy_init_globals ( void );
+static int yy_init_globals (void );
 
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int yylex_destroy ( void );
+int wkt_yylex_destroy (void );
 
-int yyget_debug ( void );
+int wkt_yyget_debug (void );
 
-void yyset_debug ( int debug_flag  );
+void wkt_yyset_debug (int debug_flag  );
 
-YY_EXTRA_TYPE yyget_extra ( void );
+YY_EXTRA_TYPE wkt_yyget_extra (void );
 
-void yyset_extra ( YY_EXTRA_TYPE user_defined  );
+void wkt_yyset_extra (YY_EXTRA_TYPE user_defined  );
 
-FILE *yyget_in ( void );
+FILE *wkt_yyget_in (void );
 
-void yyset_in  ( FILE * _in_str  );
+void wkt_yyset_in  (FILE * in_str  );
 
-FILE *yyget_out ( void );
+FILE *wkt_yyget_out (void );
 
-void yyset_out  ( FILE * _out_str  );
+void wkt_yyset_out  (FILE * out_str  );
 
-			int yyget_leng ( void );
+yy_size_t wkt_yyget_leng (void );
 
-char *yyget_text ( void );
+char *wkt_yyget_text (void );
 
-int yyget_lineno ( void );
+int wkt_yyget_lineno (void );
 
-void yyset_lineno ( int _line_number  );
+void wkt_yyset_lineno (int line_number  );
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -946,41 +716,33 @@ void yyset_lineno ( int _line_number  );
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int yywrap ( void );
+extern "C" int wkt_yywrap (void );
 #else
-extern int yywrap ( void );
+extern int wkt_yywrap (void );
 #endif
 #endif
 
-#ifndef YY_NO_UNPUT
-    
-#endif
-
 #ifndef yytext_ptr
-static void yy_flex_strncpy ( char *, const char *, int );
+static void yy_flex_strncpy (char *,yyconst char *,int );
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen ( const char * );
+static int yy_flex_strlen (yyconst char * );
 #endif
 
 #ifndef YY_NO_INPUT
+
 #ifdef __cplusplus
-static int yyinput ( void );
+static int yyinput (void );
 #else
-static int input ( void );
+static int input (void );
 #endif
 
 #endif
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -988,7 +750,7 @@ static int input ( void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
+#define ECHO fwrite( wkt_yytext, wkt_yyleng, 1, wkt_yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -999,20 +761,20 @@ static int input ( void );
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		int n; \
+		yy_size_t n; \
 		for ( n = 0; n < max_size && \
-			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			     (c = getc( wkt_yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
 		if ( c == '\n' ) \
 			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( yyin ) ) \
+		if ( c == EOF && ferror( wkt_yyin ) ) \
 			YY_FATAL_ERROR( "input in flex scanner failed" ); \
 		result = n; \
 		} \
 	else \
 		{ \
 		errno=0; \
-		while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
+		while ( (result = fread(buf, 1, max_size, wkt_yyin))==0 && ferror(wkt_yyin)) \
 			{ \
 			if( errno != EINTR) \
 				{ \
@@ -1020,7 +782,7 @@ static int input ( void );
 				break; \
 				} \
 			errno=0; \
-			clearerr(yyin); \
+			clearerr(wkt_yyin); \
 			} \
 		}\
 \
@@ -1053,12 +815,12 @@ static int input ( void );
 #ifndef YY_DECL
 #define YY_DECL_IS_OURS 1
 
-extern int yylex (void);
+extern int wkt_yylex (void);
 
-#define YY_DECL int yylex (void)
+#define YY_DECL int wkt_yylex (void)
 #endif /* !YY_DECL */
 
-/* Code executed at the beginning of each rule, after yytext and yyleng
+/* Code executed at the beginning of each rule, after wkt_yytext and wkt_yyleng
  * have been set up.
  */
 #ifndef YY_USER_ACTION
@@ -1067,7 +829,7 @@ extern int yylex (void);
 
 /* Code executed at the end of each rule. */
 #ifndef YY_BREAK
-#define YY_BREAK /*LINTED*/break;
+#define YY_BREAK break;
 #endif
 
 #define YY_RULE_SETUP \
@@ -1077,10 +839,15 @@ extern int yylex (void);
  */
 YY_DECL
 {
-	yy_state_type yy_current_state;
-	char *yy_cp, *yy_bp;
-	int yy_act;
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
     
+#line 49 "lwin_wkt_lex.l"
+
+
+#line 850 "lwin_wkt_lex.c"
+
 	if ( !(yy_init) )
 		{
 		(yy_init) = 1;
@@ -1092,32 +859,26 @@ YY_DECL
 		if ( ! (yy_start) )
 			(yy_start) = 1;	/* first start state */
 
-		if ( ! yyin )
-			yyin = stdin;
+		if ( ! wkt_yyin )
+			wkt_yyin = stdin;
 
-		if ( ! yyout )
-			yyout = stdout;
+		if ( ! wkt_yyout )
+			wkt_yyout = stdout;
 
 		if ( ! YY_CURRENT_BUFFER ) {
-			yyensure_buffer_stack ();
+			wkt_yyensure_buffer_stack ();
 			YY_CURRENT_BUFFER_LVALUE =
-				yy_create_buffer( yyin, YY_BUF_SIZE );
+				wkt_yy_create_buffer(wkt_yyin,YY_BUF_SIZE );
 		}
 
-		yy_load_buffer_state(  );
+		wkt_yy_load_buffer_state( );
 		}
 
-	{
-#line 49 "lwin_wkt_lex.l"
-
-
-#line 1114 "lwin_wkt_lex.c"
-
-	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
+	while ( 1 )		/* loops until end-of-file is reached */
 		{
 		yy_cp = (yy_c_buf_p);
 
-		/* Support of yytext. */
+		/* Support of wkt_yytext. */
 		*yy_cp = (yy_hold_char);
 
 		/* yy_bp points to the position in yy_ch_buf of the start of
@@ -1129,7 +890,7 @@ YY_DECL
 yy_match:
 		do
 			{
-			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
 			if ( yy_accept[yy_current_state] )
 				{
 				(yy_last_accepting_state) = yy_current_state;
@@ -1138,13 +899,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 173 )
-					yy_c = yy_meta[yy_c];
+				if ( yy_current_state >= 177 )
+					yy_c = yy_meta[(unsigned int) yy_c];
 				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 172 );
+		while ( yy_current_state != 176 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1176,144 +937,155 @@ YY_RULE_SETUP
 	}
 	YY_BREAK
 case 2:
+/* rule 2 can match eol */
 YY_RULE_SETUP
 #line 58 "lwin_wkt_lex.l"
 {
+	LWDEBUG(5,"DOUBLE NAN");
+	wkt_yylval.doublevalue = atof(wkt_yytext);
+	yyless(wkt_yyleng-1);
+	return DOUBLE_TOK;
+}
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 65 "lwin_wkt_lex.l"
+{
 	LWDEBUG(5,"SRID");
 	wkt_yylval.integervalue = wkt_lexer_read_srid(wkt_yytext);
 	return SRID_TOK;
 	}
 	YY_BREAK
-case 3:
+case 4:
 YY_RULE_SETUP
-#line 64 "lwin_wkt_lex.l"
+#line 71 "lwin_wkt_lex.l"
 { return COLLECTION_TOK; }
 	YY_BREAK
-case 4:
+case 5:
 YY_RULE_SETUP
-#line 65 "lwin_wkt_lex.l"
+#line 72 "lwin_wkt_lex.l"
 { return MSURFACE_TOK; }
 	YY_BREAK
-case 5:
+case 6:
 YY_RULE_SETUP
-#line 66 "lwin_wkt_lex.l"
+#line 73 "lwin_wkt_lex.l"
 { return MPOLYGON_TOK; }
 	YY_BREAK
-case 6:
+case 7:
 YY_RULE_SETUP
-#line 67 "lwin_wkt_lex.l"
+#line 74 "lwin_wkt_lex.l"
 { return MCURVE_TOK; }
 	YY_BREAK
-case 7:
+case 8:
 YY_RULE_SETUP
-#line 68 "lwin_wkt_lex.l"
+#line 75 "lwin_wkt_lex.l"
 { return MLINESTRING_TOK; }
 	YY_BREAK
-case 8:
+case 9:
 YY_RULE_SETUP
-#line 69 "lwin_wkt_lex.l"
+#line 76 "lwin_wkt_lex.l"
 { return MPOINT_TOK; }
 	YY_BREAK
-case 9:
+case 10:
 YY_RULE_SETUP
-#line 70 "lwin_wkt_lex.l"
+#line 77 "lwin_wkt_lex.l"
 { return CURVEPOLYGON_TOK; }
 	YY_BREAK
-case 10:
+case 11:
 YY_RULE_SETUP
-#line 71 "lwin_wkt_lex.l"
+#line 78 "lwin_wkt_lex.l"
 { return POLYGON_TOK; }
 	YY_BREAK
-case 11:
+case 12:
 YY_RULE_SETUP
-#line 72 "lwin_wkt_lex.l"
+#line 79 "lwin_wkt_lex.l"
 { return COMPOUNDCURVE_TOK; }
 	YY_BREAK
-case 12:
+case 13:
 YY_RULE_SETUP
-#line 73 "lwin_wkt_lex.l"
+#line 80 "lwin_wkt_lex.l"
 { return CIRCULARSTRING_TOK; }
 	YY_BREAK
-case 13:
+case 14:
 YY_RULE_SETUP
-#line 74 "lwin_wkt_lex.l"
+#line 81 "lwin_wkt_lex.l"
 { return LINESTRING_TOK; }
 	YY_BREAK
-case 14:
+case 15:
 YY_RULE_SETUP
-#line 75 "lwin_wkt_lex.l"
+#line 82 "lwin_wkt_lex.l"
 { return POLYHEDRALSURFACE_TOK; }
 	YY_BREAK
-case 15:
+case 16:
 YY_RULE_SETUP
-#line 76 "lwin_wkt_lex.l"
+#line 83 "lwin_wkt_lex.l"
 { return TRIANGLE_TOK; }
 	YY_BREAK
-case 16:
+case 17:
 YY_RULE_SETUP
-#line 77 "lwin_wkt_lex.l"
+#line 84 "lwin_wkt_lex.l"
 { return TIN_TOK; }
 	YY_BREAK
-case 17:
+case 18:
 YY_RULE_SETUP
-#line 78 "lwin_wkt_lex.l"
+#line 85 "lwin_wkt_lex.l"
 { return POINT_TOK; }
 	YY_BREAK
-case 18:
+case 19:
 YY_RULE_SETUP
-#line 79 "lwin_wkt_lex.l"
+#line 86 "lwin_wkt_lex.l"
 { return EMPTY_TOK; }
 	YY_BREAK
-case 19:
+case 20:
 YY_RULE_SETUP
-#line 81 "lwin_wkt_lex.l"
+#line 88 "lwin_wkt_lex.l"
 {
 	LWDEBUG(5,"DIMENSIONALITY");
 	wkt_yylval.stringvalue = wkt_yytext;
 	return DIMENSIONALITY_TOK;
 	}
 	YY_BREAK
-case 20:
+case 21:
 YY_RULE_SETUP
-#line 87 "lwin_wkt_lex.l"
+#line 94 "lwin_wkt_lex.l"
 { LWDEBUG(5,"LBRACKET"); return LBRACKET_TOK; }
 	YY_BREAK
-case 21:
+case 22:
 YY_RULE_SETUP
-#line 88 "lwin_wkt_lex.l"
+#line 95 "lwin_wkt_lex.l"
 { LWDEBUG(5,"RBRACKET"); return RBRACKET_TOK; }
 	YY_BREAK
-case 22:
+case 23:
 YY_RULE_SETUP
-#line 89 "lwin_wkt_lex.l"
+#line 96 "lwin_wkt_lex.l"
 { LWDEBUG(5,"COMMA"); return COMMA_TOK; }
 	YY_BREAK
-case 23:
+case 24:
 YY_RULE_SETUP
-#line 90 "lwin_wkt_lex.l"
+#line 97 "lwin_wkt_lex.l"
 { LWDEBUG(5,"SEMICOLON"); return SEMICOLON_TOK; }
 	YY_BREAK
-case 24:
-/* rule 24 can match eol */
+case 25:
+/* rule 25 can match eol */
 YY_RULE_SETUP
-#line 92 "lwin_wkt_lex.l"
+#line 99 "lwin_wkt_lex.l"
 { /* ignore whitespace */ LWDEBUG(5,"WHITESPACE"); }
 	YY_BREAK
-case 25:
+case 26:
 YY_RULE_SETUP
-#line 94 "lwin_wkt_lex.l"
+#line 101 "lwin_wkt_lex.l"
 { /* Error out and stop parsing on unknown/unexpected characters */
 	LWDEBUG(5,"UNKNOWN");
 	wkt_lexer_unknown();
 	yyterminate();
 	}
 	YY_BREAK
-case 26:
+case 27:
 YY_RULE_SETUP
-#line 100 "lwin_wkt_lex.l"
+#line 107 "lwin_wkt_lex.l"
 ECHO;
 	YY_BREAK
-#line 1316 "lwin_wkt_lex.c"
+#line 1089 "lwin_wkt_lex.c"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1330,15 +1102,15 @@ case YY_STATE_EOF(INITIAL):
 			{
 			/* We're scanning a new file or input source.  It's
 			 * possible that this happened because the user
-			 * just pointed yyin at a new source and called
-			 * yylex().  If so, then we have to assure
+			 * just pointed wkt_yyin at a new source and called
+			 * wkt_yylex().  If so, then we have to assure
 			 * consistency between YY_CURRENT_BUFFER and our
 			 * globals.  Here is the right place to do so, because
 			 * this is the first action (other than possibly a
 			 * back-up) that will match for the new input source.
 			 */
 			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+			YY_CURRENT_BUFFER_LVALUE->yy_input_file = wkt_yyin;
 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
 			}
 
@@ -1392,11 +1164,11 @@ case YY_STATE_EOF(INITIAL):
 				{
 				(yy_did_buffer_switch_on_eof) = 0;
 
-				if ( yywrap(  ) )
+				if ( wkt_yywrap( ) )
 					{
 					/* Note: because we've taken care in
 					 * yy_get_next_buffer() to have set up
-					 * yytext, we can now set up
+					 * wkt_yytext, we can now set up
 					 * yy_c_buf_p so that if some total
 					 * hoser (like flex itself) wants to
 					 * call the scanner after we return the
@@ -1445,8 +1217,7 @@ case YY_STATE_EOF(INITIAL):
 			"fatal flex scanner internal error--no action found" );
 	} /* end of action switch */
 		} /* end of scanning one token */
-	} /* end of user's declarations */
-} /* end of yylex */
+} /* end of wkt_yylex */
 
 /* yy_get_next_buffer - try to read in a new buffer
  *
@@ -1457,9 +1228,9 @@ case YY_STATE_EOF(INITIAL):
  */
 static int yy_get_next_buffer (void)
 {
-    	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	char *source = (yytext_ptr);
-	int number_to_move, i;
+    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = (yytext_ptr);
+	register int number_to_move, i;
 	int ret_val;
 
 	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -1488,7 +1259,7 @@ static int yy_get_next_buffer (void)
 	/* Try to read more data. */
 
 	/* First move last chars to start of buffer. */
-	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
+	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
 
 	for ( i = 0; i < number_to_move; ++i )
 		*(dest++) = *(source++);
@@ -1501,21 +1272,21 @@ static int yy_get_next_buffer (void)
 
 	else
 		{
-			int num_to_read =
+			yy_size_t num_to_read =
 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
 		while ( num_to_read <= 0 )
 			{ /* Not enough room in the buffer - grow it. */
 
 			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
 
 			int yy_c_buf_p_offset =
 				(int) ((yy_c_buf_p) - b->yy_ch_buf);
 
 			if ( b->yy_is_our_buffer )
 				{
-				int new_size = b->yy_buf_size * 2;
+				yy_size_t new_size = b->yy_buf_size * 2;
 
 				if ( new_size <= 0 )
 					b->yy_buf_size += b->yy_buf_size / 8;
@@ -1524,12 +1295,11 @@ static int yy_get_next_buffer (void)
 
 				b->yy_ch_buf = (char *)
 					/* Include room in for 2 EOB chars. */
-					yyrealloc( (void *) b->yy_ch_buf,
-							 (yy_size_t) (b->yy_buf_size + 2)  );
+					wkt_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
 				}
 			else
 				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = NULL;
+				b->yy_ch_buf = 0;
 
 			if ( ! b->yy_ch_buf )
 				YY_FATAL_ERROR(
@@ -1557,7 +1327,7 @@ static int yy_get_next_buffer (void)
 		if ( number_to_move == YY_MORE_ADJ )
 			{
 			ret_val = EOB_ACT_END_OF_FILE;
-			yyrestart( yyin  );
+			wkt_yyrestart(wkt_yyin  );
 			}
 
 		else
@@ -1571,15 +1341,12 @@ static int yy_get_next_buffer (void)
 	else
 		ret_val = EOB_ACT_CONTINUE_SCAN;
 
-	if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
 		/* Extend the array by 50%, plus the number we really need. */
-		int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
-			(void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
+		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) wkt_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-		/* "- 2" to take care of EOB's */
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
 	}
 
 	(yy_n_chars) += number_to_move;
@@ -1595,14 +1362,14 @@ static int yy_get_next_buffer (void)
 
     static yy_state_type yy_get_previous_state (void)
 {
-	yy_state_type yy_current_state;
-	char *yy_cp;
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
     
 	yy_current_state = (yy_start);
 
 	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
 		{
-		YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
 		if ( yy_accept[yy_current_state] )
 			{
 			(yy_last_accepting_state) = yy_current_state;
@@ -1611,10 +1378,10 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 173 )
-				yy_c = yy_meta[yy_c];
+			if ( yy_current_state >= 177 )
+				yy_c = yy_meta[(unsigned int) yy_c];
 			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 		}
 
 	return yy_current_state;
@@ -1627,10 +1394,10 @@ static int yy_get_next_buffer (void)
  */
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 {
-	int yy_is_jam;
-    	char *yy_cp = (yy_c_buf_p);
+	register int yy_is_jam;
+    	register char *yy_cp = (yy_c_buf_p);
 
-	YY_CHAR yy_c = 1;
+	register YY_CHAR yy_c = 1;
 	if ( yy_accept[yy_current_state] )
 		{
 		(yy_last_accepting_state) = yy_current_state;
@@ -1639,19 +1406,15 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 173 )
-			yy_c = yy_meta[yy_c];
+		if ( yy_current_state >= 177 )
+			yy_c = yy_meta[(unsigned int) yy_c];
 		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-	yy_is_jam = (yy_current_state == 172);
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 176);
 
-		return yy_is_jam ? 0 : yy_current_state;
+	return yy_is_jam ? 0 : yy_current_state;
 }
 
-#ifndef YY_NO_UNPUT
-
-#endif
-
 #ifndef YY_NO_INPUT
 #ifdef __cplusplus
     static int yyinput (void)
@@ -1676,7 +1439,7 @@ static int yy_get_next_buffer (void)
 
 		else
 			{ /* need more input */
-			int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
+			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
 			++(yy_c_buf_p);
 
 			switch ( yy_get_next_buffer(  ) )
@@ -1693,13 +1456,13 @@ static int yy_get_next_buffer (void)
 					 */
 
 					/* Reset buffer status. */
-					yyrestart( yyin );
+					wkt_yyrestart(wkt_yyin );
 
 					/*FALLTHROUGH*/
 
 				case EOB_ACT_END_OF_FILE:
 					{
-					if ( yywrap(  ) )
+					if ( wkt_yywrap( ) )
 						return 0;
 
 					if ( ! (yy_did_buffer_switch_on_eof) )
@@ -1719,7 +1482,7 @@ static int yy_get_next_buffer (void)
 		}
 
 	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
-	*(yy_c_buf_p) = '\0';	/* preserve yytext */
+	*(yy_c_buf_p) = '\0';	/* preserve wkt_yytext */
 	(yy_hold_char) = *++(yy_c_buf_p);
 
 	return c;
@@ -1731,32 +1494,32 @@ static int yy_get_next_buffer (void)
  * 
  * @note This function does not reset the start condition to @c INITIAL .
  */
-    void yyrestart  (FILE * input_file )
+    void wkt_yyrestart  (FILE * input_file )
 {
     
 	if ( ! YY_CURRENT_BUFFER ){
-        yyensure_buffer_stack ();
+        wkt_yyensure_buffer_stack ();
 		YY_CURRENT_BUFFER_LVALUE =
-            yy_create_buffer( yyin, YY_BUF_SIZE );
+            wkt_yy_create_buffer(wkt_yyin,YY_BUF_SIZE );
 	}
 
-	yy_init_buffer( YY_CURRENT_BUFFER, input_file );
-	yy_load_buffer_state(  );
+	wkt_yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+	wkt_yy_load_buffer_state( );
 }
 
 /** Switch to a different input buffer.
  * @param new_buffer The new input buffer.
  * 
  */
-    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+    void wkt_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
 {
     
 	/* TODO. We should be able to replace this entire function body
 	 * with
-	 *		yypop_buffer_state();
-	 *		yypush_buffer_state(new_buffer);
+	 *		wkt_yypop_buffer_state();
+	 *		wkt_yypush_buffer_state(new_buffer);
      */
-	yyensure_buffer_stack ();
+	wkt_yyensure_buffer_stack ();
 	if ( YY_CURRENT_BUFFER == new_buffer )
 		return;
 
@@ -1769,21 +1532,21 @@ static int yy_get_next_buffer (void)
 		}
 
 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-	yy_load_buffer_state(  );
+	wkt_yy_load_buffer_state( );
 
 	/* We don't actually know whether we did this switch during
-	 * EOF (yywrap()) processing, but the only time this flag
-	 * is looked at is after yywrap() is called, so it's safe
+	 * EOF (wkt_yywrap()) processing, but the only time this flag
+	 * is looked at is after wkt_yywrap() is called, so it's safe
 	 * to go ahead and always set it.
 	 */
 	(yy_did_buffer_switch_on_eof) = 1;
 }
 
-static void yy_load_buffer_state  (void)
+static void wkt_yy_load_buffer_state  (void)
 {
     	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
 	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+	wkt_yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
 	(yy_hold_char) = *(yy_c_buf_p);
 }
 
@@ -1793,35 +1556,35 @@ static void yy_load_buffer_state  (void)
  * 
  * @return the allocated buffer state.
  */
-    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
+    YY_BUFFER_STATE wkt_yy_create_buffer  (FILE * file, int  size )
 {
 	YY_BUFFER_STATE b;
     
-	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
+	b = (YY_BUFFER_STATE) wkt_yyalloc(sizeof( struct yy_buffer_state )  );
 	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+		YY_FATAL_ERROR( "out of dynamic memory in wkt_yy_create_buffer()" );
 
 	b->yy_buf_size = size;
 
 	/* yy_ch_buf has to be 2 characters longer than the size given because
 	 * we need to put in 2 end-of-buffer characters.
 	 */
-	b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
+	b->yy_ch_buf = (char *) wkt_yyalloc(b->yy_buf_size + 2  );
 	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+		YY_FATAL_ERROR( "out of dynamic memory in wkt_yy_create_buffer()" );
 
 	b->yy_is_our_buffer = 1;
 
-	yy_init_buffer( b, file );
+	wkt_yy_init_buffer(b,file );
 
 	return b;
 }
 
 /** Destroy the buffer.
- * @param b a buffer created with yy_create_buffer()
+ * @param b a buffer created with wkt_yy_create_buffer()
  * 
  */
-    void yy_delete_buffer (YY_BUFFER_STATE  b )
+    void wkt_yy_delete_buffer (YY_BUFFER_STATE  b )
 {
     
 	if ( ! b )
@@ -1831,27 +1594,27 @@ static void yy_load_buffer_state  (void)
 		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
 	if ( b->yy_is_our_buffer )
-		yyfree( (void *) b->yy_ch_buf  );
+		wkt_yyfree((void *) b->yy_ch_buf  );
 
-	yyfree( (void *) b  );
+	wkt_yyfree((void *) b  );
 }
 
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
- * such as during a yyrestart() or at EOF.
+ * such as during a wkt_yyrestart() or at EOF.
  */
-    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+    static void wkt_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
 
 {
 	int oerrno = errno;
     
-	yy_flush_buffer( b );
+	wkt_yy_flush_buffer(b );
 
 	b->yy_input_file = file;
 	b->yy_fill_buffer = 1;
 
-    /* If b is the current buffer, then yy_init_buffer was _probably_
-     * called from yyrestart() or through yy_get_next_buffer.
+    /* If b is the current buffer, then wkt_yy_init_buffer was _probably_
+     * called from wkt_yyrestart() or through yy_get_next_buffer.
      * In that case, we don't want to reset the lineno or column.
      */
     if (b != YY_CURRENT_BUFFER){
@@ -1868,7 +1631,7 @@ static void yy_load_buffer_state  (void)
  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
  * 
  */
-    void yy_flush_buffer (YY_BUFFER_STATE  b )
+    void wkt_yy_flush_buffer (YY_BUFFER_STATE  b )
 {
     	if ( ! b )
 		return;
@@ -1888,7 +1651,7 @@ static void yy_load_buffer_state  (void)
 	b->yy_buffer_status = YY_BUFFER_NEW;
 
 	if ( b == YY_CURRENT_BUFFER )
-		yy_load_buffer_state(  );
+		wkt_yy_load_buffer_state( );
 }
 
 /** Pushes the new state onto the stack. The new state becomes
@@ -1897,14 +1660,14 @@ static void yy_load_buffer_state  (void)
  *  @param new_buffer The new state.
  *  
  */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+void wkt_yypush_buffer_state (YY_BUFFER_STATE new_buffer )
 {
     	if (new_buffer == NULL)
 		return;
 
-	yyensure_buffer_stack();
+	wkt_yyensure_buffer_stack();
 
-	/* This block is copied from yy_switch_to_buffer. */
+	/* This block is copied from wkt_yy_switch_to_buffer. */
 	if ( YY_CURRENT_BUFFER )
 		{
 		/* Flush out information for old buffer. */
@@ -1918,8 +1681,8 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
 		(yy_buffer_stack_top)++;
 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
-	/* copied from yy_switch_to_buffer. */
-	yy_load_buffer_state(  );
+	/* copied from wkt_yy_switch_to_buffer. */
+	wkt_yy_load_buffer_state( );
 	(yy_did_buffer_switch_on_eof) = 1;
 }
 
@@ -1927,18 +1690,18 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
  *  The next element becomes the new top.
  *  
  */
-void yypop_buffer_state (void)
+void wkt_yypop_buffer_state (void)
 {
     	if (!YY_CURRENT_BUFFER)
 		return;
 
-	yy_delete_buffer(YY_CURRENT_BUFFER );
+	wkt_yy_delete_buffer(YY_CURRENT_BUFFER );
 	YY_CURRENT_BUFFER_LVALUE = NULL;
 	if ((yy_buffer_stack_top) > 0)
 		--(yy_buffer_stack_top);
 
 	if (YY_CURRENT_BUFFER) {
-		yy_load_buffer_state(  );
+		wkt_yy_load_buffer_state( );
 		(yy_did_buffer_switch_on_eof) = 1;
 	}
 }
@@ -1946,7 +1709,7 @@ void yypop_buffer_state (void)
 /* Allocates the stack if it does not exist.
  *  Guarantees space for at least one push.
  */
-static void yyensure_buffer_stack (void)
+static void wkt_yyensure_buffer_stack (void)
 {
 	yy_size_t num_to_alloc;
     
@@ -1956,15 +1719,15 @@ static void yyensure_buffer_stack (void)
 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
 		 * immediate realloc on the next call.
          */
-      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
-		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+		num_to_alloc = 1;
+		(yy_buffer_stack) = (struct yy_buffer_state**)wkt_yyalloc
 								(num_to_alloc * sizeof(struct yy_buffer_state*)
 								);
 		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
+			YY_FATAL_ERROR( "out of dynamic memory in wkt_yyensure_buffer_stack()" );
+								  
 		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
+				
 		(yy_buffer_stack_max) = num_to_alloc;
 		(yy_buffer_stack_top) = 0;
 		return;
@@ -1973,15 +1736,15 @@ static void yyensure_buffer_stack (void)
 	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 
 		/* Increase the buffer to prepare for a possible push. */
-		yy_size_t grow_size = 8 /* arbitrary grow size */;
+		int grow_size = 8 /* arbitrary grow size */;
 
 		num_to_alloc = (yy_buffer_stack_max) + grow_size;
-		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+		(yy_buffer_stack) = (struct yy_buffer_state**)wkt_yyrealloc
 								((yy_buffer_stack),
 								num_to_alloc * sizeof(struct yy_buffer_state*)
 								);
 		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+			YY_FATAL_ERROR( "out of dynamic memory in wkt_yyensure_buffer_stack()" );
 
 		/* zero only the new slots.*/
 		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -1993,9 +1756,9 @@ static void yyensure_buffer_stack (void)
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * 
- * @return the newly allocated buffer state object.
+ * @return the newly allocated buffer state object. 
  */
-YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
+YY_BUFFER_STATE wkt_yy_scan_buffer  (char * base, yy_size_t  size )
 {
 	YY_BUFFER_STATE b;
     
@@ -2003,69 +1766,68 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
 		/* They forgot to leave room for the EOB's. */
-		return NULL;
+		return 0;
 
-	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
+	b = (YY_BUFFER_STATE) wkt_yyalloc(sizeof( struct yy_buffer_state )  );
 	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+		YY_FATAL_ERROR( "out of dynamic memory in wkt_yy_scan_buffer()" );
 
-	b->yy_buf_size = (int) (size - 2);	/* "- 2" to take care of EOB's */
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
 	b->yy_buf_pos = b->yy_ch_buf = base;
 	b->yy_is_our_buffer = 0;
-	b->yy_input_file = NULL;
+	b->yy_input_file = 0;
 	b->yy_n_chars = b->yy_buf_size;
 	b->yy_is_interactive = 0;
 	b->yy_at_bol = 1;
 	b->yy_fill_buffer = 0;
 	b->yy_buffer_status = YY_BUFFER_NEW;
 
-	yy_switch_to_buffer( b  );
+	wkt_yy_switch_to_buffer(b  );
 
 	return b;
 }
 
-/** Setup the input buffer state to scan a string. The next call to yylex() will
+/** Setup the input buffer state to scan a string. The next call to wkt_yylex() will
  * scan from a @e copy of @a str.
  * @param yystr a NUL-terminated string to scan
  * 
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
- *       yy_scan_bytes() instead.
+ *       wkt_yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE yy_scan_string (const char * yystr )
+YY_BUFFER_STATE wkt_yy_scan_string (yyconst char * yystr )
 {
     
-	return yy_scan_bytes( yystr, (int) strlen(yystr) );
+	return wkt_yy_scan_bytes(yystr,strlen(yystr) );
 }
 
-/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+/** Setup the input buffer state to scan the given bytes. The next call to wkt_yylex() will
  * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE wkt_yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 {
 	YY_BUFFER_STATE b;
 	char *buf;
-	yy_size_t n;
-	int i;
+	yy_size_t n, i;
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = (yy_size_t) (_yybytes_len + 2);
-	buf = (char *) yyalloc( n  );
+	n = _yybytes_len + 2;
+	buf = (char *) wkt_yyalloc(n  );
 	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+		YY_FATAL_ERROR( "out of dynamic memory in wkt_yy_scan_bytes()" );
 
 	for ( i = 0; i < _yybytes_len; ++i )
 		buf[i] = yybytes[i];
 
 	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
-	b = yy_scan_buffer( buf, n );
+	b = wkt_yy_scan_buffer(buf,n );
 	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+		YY_FATAL_ERROR( "bad buffer in wkt_yy_scan_bytes()" );
 
 	/* It's okay to grow etc. this buffer, and we should throw it
 	 * away when we're done.
@@ -2079,9 +1841,9 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yynoreturn yy_fatal_error (const char* msg )
+static void yy_fatal_error (yyconst char* msg )
 {
-			fprintf( stderr, "%s\n", msg );
+    	(void) fprintf( stderr, "%s\n", msg );
 	exit( YY_EXIT_FAILURE );
 }
 
@@ -2091,14 +1853,14 @@ static void yynoreturn yy_fatal_error (const char* msg )
 #define yyless(n) \
 	do \
 		{ \
-		/* Undo effects of setting up yytext. */ \
+		/* Undo effects of setting up wkt_yytext. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
-		yytext[yyleng] = (yy_hold_char); \
-		(yy_c_buf_p) = yytext + yyless_macro_arg; \
+		wkt_yytext[wkt_yyleng] = (yy_hold_char); \
+		(yy_c_buf_p) = wkt_yytext + yyless_macro_arg; \
 		(yy_hold_char) = *(yy_c_buf_p); \
 		*(yy_c_buf_p) = '\0'; \
-		yyleng = yyless_macro_arg; \
+		wkt_yyleng = yyless_macro_arg; \
 		} \
 	while ( 0 )
 
@@ -2107,126 +1869,126 @@ static void yynoreturn yy_fatal_error (const char* msg )
 /** Get the current line number.
  * 
  */
-int yyget_lineno  (void)
+int wkt_yyget_lineno  (void)
 {
-    
-    return yylineno;
+        
+    return wkt_yylineno;
 }
 
 /** Get the input stream.
  * 
  */
-FILE *yyget_in  (void)
+FILE *wkt_yyget_in  (void)
 {
-        return yyin;
+        return wkt_yyin;
 }
 
 /** Get the output stream.
  * 
  */
-FILE *yyget_out  (void)
+FILE *wkt_yyget_out  (void)
 {
-        return yyout;
+        return wkt_yyout;
 }
 
 /** Get the length of the current token.
  * 
  */
-int yyget_leng  (void)
+yy_size_t wkt_yyget_leng  (void)
 {
-        return yyleng;
+        return wkt_yyleng;
 }
 
 /** Get the current token.
  * 
  */
 
-char *yyget_text  (void)
+char *wkt_yyget_text  (void)
 {
-        return yytext;
+        return wkt_yytext;
 }
 
 /** Set the current line number.
- * @param _line_number line number
+ * @param line_number
  * 
  */
-void yyset_lineno (int  _line_number )
+void wkt_yyset_lineno (int  line_number )
 {
     
-    yylineno = _line_number;
+    wkt_yylineno = line_number;
 }
 
 /** Set the input stream. This does not discard the current
  * input buffer.
- * @param _in_str A readable stream.
+ * @param in_str A readable stream.
  * 
- * @see yy_switch_to_buffer
+ * @see wkt_yy_switch_to_buffer
  */
-void yyset_in (FILE *  _in_str )
+void wkt_yyset_in (FILE *  in_str )
 {
-        yyin = _in_str ;
+        wkt_yyin = in_str ;
 }
 
-void yyset_out (FILE *  _out_str )
+void wkt_yyset_out (FILE *  out_str )
 {
-        yyout = _out_str ;
+        wkt_yyout = out_str ;
 }
 
-int yyget_debug  (void)
+int wkt_yyget_debug  (void)
 {
-        return yy_flex_debug;
+        return wkt_yy_flex_debug;
 }
 
-void yyset_debug (int  _bdebug )
+void wkt_yyset_debug (int  bdebug )
 {
-        yy_flex_debug = _bdebug ;
+        wkt_yy_flex_debug = bdebug ;
 }
 
 static int yy_init_globals (void)
 {
         /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from yylex_destroy(), so don't allocate here.
+     * This function is called from wkt_yylex_destroy(), so don't allocate here.
      */
 
-    (yy_buffer_stack) = NULL;
+    (yy_buffer_stack) = 0;
     (yy_buffer_stack_top) = 0;
     (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = NULL;
+    (yy_c_buf_p) = (char *) 0;
     (yy_init) = 0;
     (yy_start) = 0;
 
 /* Defined in main.c */
 #ifdef YY_STDINIT
-    yyin = stdin;
-    yyout = stdout;
+    wkt_yyin = stdin;
+    wkt_yyout = stdout;
 #else
-    yyin = NULL;
-    yyout = NULL;
+    wkt_yyin = (FILE *) 0;
+    wkt_yyout = (FILE *) 0;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
-     * yylex_init()
+     * wkt_yylex_init()
      */
     return 0;
 }
 
-/* yylex_destroy is for both reentrant and non-reentrant scanners. */
-int yylex_destroy  (void)
+/* wkt_yylex_destroy is for both reentrant and non-reentrant scanners. */
+int wkt_yylex_destroy  (void)
 {
     
     /* Pop the buffer stack, destroying each element. */
 	while(YY_CURRENT_BUFFER){
-		yy_delete_buffer( YY_CURRENT_BUFFER  );
+		wkt_yy_delete_buffer(YY_CURRENT_BUFFER  );
 		YY_CURRENT_BUFFER_LVALUE = NULL;
-		yypop_buffer_state();
+		wkt_yypop_buffer_state();
 	}
 
 	/* Destroy the stack itself. */
-	yyfree((yy_buffer_stack) );
+	wkt_yyfree((yy_buffer_stack) );
 	(yy_buffer_stack) = NULL;
 
     /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * yylex() is called, initialization will occur. */
+     * wkt_yylex() is called, initialization will occur. */
     yy_init_globals( );
 
     return 0;
@@ -2237,19 +1999,18 @@ int yylex_destroy  (void)
  */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, const char * s2, int n )
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 {
-		
-	int i;
+	register int i;
 	for ( i = 0; i < n; ++i )
 		s1[i] = s2[i];
 }
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (const char * s )
+static int yy_flex_strlen (yyconst char * s )
 {
-	int n;
+	register int n;
 	for ( n = 0; s[n]; ++n )
 		;
 
@@ -2259,7 +2020,8 @@ static int yy_flex_strlen (const char * s )
 
 #define YYTABLES_NAME "yytables"
 
-#line 100 "lwin_wkt_lex.l"
+#line 107 "lwin_wkt_lex.l"
+
 
 
 void *wkt_yyalloc (yy_size_t  size )
diff --git a/liblwgeom/lwin_wkt_lex.l b/liblwgeom/lwin_wkt_lex.l
index 9ea931e..273a979 100644
--- a/liblwgeom/lwin_wkt_lex.l
+++ b/liblwgeom/lwin_wkt_lex.l
@@ -55,6 +55,13 @@ static void wkt_lexer_unknown()
 	return DOUBLE_TOK;
 	}
 
+([Nn][Aa][Nn])[ \,\)\t\n\r] {
+	LWDEBUG(5,"DOUBLE NAN");
+	wkt_yylval.doublevalue = atof(wkt_yytext);
+	yyless(wkt_yyleng-1);
+	return DOUBLE_TOK;
+}
+
 SRID=-?[0-9]+ {
 	LWDEBUG(5,"SRID");
 	wkt_yylval.integervalue = wkt_lexer_read_srid(wkt_yytext);

-----------------------------------------------------------------------

Summary of changes:
 NEWS                        |    1 +
 liblwgeom/cunit/cu_in_wkt.c |   16 +-
 liblwgeom/lwin_wkt_lex.c    | 1280 ++++++++++++++++++-------------------------
 liblwgeom/lwin_wkt_lex.l    |    7 +
 4 files changed, 544 insertions(+), 760 deletions(-)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list