2
* Written by Ralph Mason ralph.mason<at>telogis.com
4
* Copyright Telogis 2004
11
#include "wktparse.tab.h"
12
#include <stdlib.h> /* need stdlib for atof() definition */
14
void init_parser(const char *src);
15
void close_parser(void);
16
int lwg_parse_yywrap(void);
17
int lwg_parse_yylex(void);
19
static YY_BUFFER_STATE buf_state;
20
void init_parser(const char *src) { BEGIN(0);buf_state = lwg_parse_yy_scan_string(src); }
21
void close_parser() { lwg_parse_yy_delete_buffer(buf_state); }
22
int lwg_parse_yywrap(void){ return 1; }
24
/* Macro to keep track of the current parse position */
25
#define UPDATE_YYLLOC() (lwg_parse_yylloc.last_column += yyleng)
31
<vals_ok>[-|\+]?[0-9]+(\.[0-9]+)?([Ee](\+|-)?[0-9]+)? { lwg_parse_yylval.value=atof(lwg_parse_yytext); UPDATE_YYLLOC(); return VALUE; }
32
<vals_ok>[-|\+]?(\.[0-9]+)([Ee](\+|-)?[0-9]+)? { lwg_parse_yylval.value=atof(lwg_parse_yytext); UPDATE_YYLLOC(); return VALUE; }
34
<INITIAL>00[0-9A-F]* { lwg_parse_yylval.wkb=lwg_parse_yytext; return WKB;}
35
<INITIAL>01[0-9A-F]* { lwg_parse_yylval.wkb=lwg_parse_yytext; return WKB;}
37
<*>POINT { UPDATE_YYLLOC(); return POINT; }
38
<*>POINTM { UPDATE_YYLLOC(); return POINTM; }
39
<*>LINESTRING { UPDATE_YYLLOC(); return LINESTRING; }
40
<*>LINESTRINGM { UPDATE_YYLLOC(); return LINESTRINGM; }
41
<*>CIRCULARSTRING { UPDATE_YYLLOC(); return CIRCULARSTRING; }
42
<*>CIRCULARSTRINGM { UPDATE_YYLLOC(); return CIRCULARSTRINGM; }
43
<*>POLYGON { UPDATE_YYLLOC(); return POLYGON; }
44
<*>POLYGONM { UPDATE_YYLLOC(); return POLYGONM; }
45
<*>COMPOUNDCURVE { UPDATE_YYLLOC(); return COMPOUNDCURVE; }
46
<*>COMPOUNDCURVEM { UPDATE_YYLLOC(); return COMPOUNDCURVEM; }
47
<*>CURVEPOLYGON { UPDATE_YYLLOC(); return CURVEPOLYGON; }
48
<*>CURVEPOLYGONM { UPDATE_YYLLOC(); return CURVEPOLYGONM; }
49
<*>MULTIPOINT { UPDATE_YYLLOC(); return MULTIPOINT; }
50
<*>MULTIPOINTM { UPDATE_YYLLOC(); return MULTIPOINTM; }
51
<*>MULTILINESTRING { UPDATE_YYLLOC(); return MULTILINESTRING; }
52
<*>MULTILINESTRINGM { UPDATE_YYLLOC(); return MULTILINESTRINGM; }
53
<*>MULTICURVE { UPDATE_YYLLOC(); return MULTICURVE; }
54
<*>MULTICURVEM { UPDATE_YYLLOC(); return MULTICURVEM; }
55
<*>MULTIPOLYGON { UPDATE_YYLLOC(); return MULTIPOLYGON; }
56
<*>MULTIPOLYGONM { UPDATE_YYLLOC(); return MULTIPOLYGONM; }
57
<*>MULTISURFACE { UPDATE_YYLLOC(); return MULTISURFACE; }
58
<*>MULTISURFACEM { UPDATE_YYLLOC(); return MULTISURFACEM; }
59
<*>GEOMETRYCOLLECTION { UPDATE_YYLLOC(); return GEOMETRYCOLLECTION; }
60
<*>GEOMETRYCOLLECTIONM { UPDATE_YYLLOC(); return GEOMETRYCOLLECTIONM; }
61
<*>SRID { BEGIN(vals_ok); UPDATE_YYLLOC(); return SRID; }
62
<*>EMPTY { UPDATE_YYLLOC(); return EMPTY; }
64
<*>\( { BEGIN(vals_ok); UPDATE_YYLLOC(); return LPAREN; }
65
<*>\) { UPDATE_YYLLOC(); return RPAREN; }
66
<*>, { UPDATE_YYLLOC(); return COMMA ; }
67
<*>= { UPDATE_YYLLOC(); return EQUALS ; }
68
<*>; { BEGIN(0); UPDATE_YYLLOC(); return SEMICOLON; }
69
<*>[ \t\n\r]+ /*eat whitespace*/ { UPDATE_YYLLOC(); }
70
<*>. { return lwg_parse_yytext[0]; }