%{ /* WKT Parser */ #include #include #include #include "crs_internal.h" int yydebug=1; void yyerror(const char *str) { fprintf(stderr,"error: %s\n",str); } int yywrap() { return 1; } main() { yyparse(); } %} %union { double doublevalue; char *stringvalue; AUTHORITY *authvalue; } %token PROJCS_TOK GEOGCS_TOK PARAMETER_TOK AUTHORITY_TOK DATUM_TOK %token SPHEROID_TOK PRIMEM_TOK UNIT_TOK PROJECTION_TOK TOWGS84_TOK AXIS_TOK %token RBRACKET_TOK LBRACKET_TOK COMMA_TOK %token FLOAT_TOK %token STRING_TOK %type authority %% crs : projcrs | geogcrs ; geogcrs : GEOGCS_TOK LBRACKET_TOK STRING_TOK COMMA_TOK geogcrs_paramlist RBRACKET_TOK ; geogcrs_paramlist : geogcrs_paramlist COMMA_TOK geogcrs_param | geogcrs_param ; geogcrs_param : authority | primem | datum | unit | axis ; primem : PRIMEM_TOK LBRACKET_TOK STRING_TOK COMMA_TOK FLOAT_TOK RBRACKET_TOK | PRIMEM_TOK LBRACKET_TOK STRING_TOK COMMA_TOK FLOAT_TOK COMMA_TOK authority RBRACKET_TOK; datum : DATUM_TOK LBRACKET_TOK STRING_TOK COMMA_TOK datum_paramlist RBRACKET_TOK; datum_paramlist : datum_paramlist COMMA_TOK datum_param | datum_param; datum_param : spheroid | towgs84 | authority; spheroid : SPHEROID_TOK LBRACKET_TOK STRING_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK RBRACKET_TOK | SPHEROID_TOK LBRACKET_TOK STRING_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK COMMA_TOK authority RBRACKET_TOK; towgs84 : TOWGS84_TOK LBRACKET_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK RBRACKET_TOK | TOWGS84_TOK LBRACKET_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK RBRACKET_TOK | TOWGS84_TOK LBRACKET_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK COMMA_TOK FLOAT_TOK RBRACKET_TOK ; unit : UNIT_TOK LBRACKET_TOK STRING_TOK COMMA_TOK FLOAT_TOK RBRACKET_TOK | UNIT_TOK LBRACKET_TOK STRING_TOK COMMA_TOK FLOAT_TOK COMMA_TOK authority RBRACKET_TOK ; axis : AXIS_TOK LBRACKET_TOK STRING_TOK COMMA_TOK STRING_TOK RBRACKET_TOK | AXIS_TOK LBRACKET_TOK STRING_TOK COMMA_TOK STRING_TOK COMMA_TOK authority RBRACKET_TOK ; projcrs : PROJCS_TOK LBRACKET_TOK STRING_TOK COMMA_TOK geogcrs COMMA_TOK projection COMMA_TOK projcrs_paramlist RBRACKET_TOK; projcrs_paramlist : projcrs_paramlist COMMA_TOK projcrs_param | projcrs_param; projcrs_param : parameter | unit | axis | authority; projection : PROJECTION_TOK LBRACKET_TOK STRING_TOK RBRACKET_TOK { printf(">-- projection no auth\n"); }| PROJECTION_TOK LBRACKET_TOK STRING_TOK COMMA_TOK authority RBRACKET_TOK { printf(">-- projection auth_name = %s\n", ($5)->auth_name); }; parameter : PARAMETER_TOK LBRACKET_TOK STRING_TOK COMMA_TOK FLOAT_TOK RBRACKET_TOK { printf(">-- parameter\n"); } | PARAMETER_TOK LBRACKET_TOK STRING_TOK COMMA_TOK FLOAT_TOK COMMA_TOK authority RBRACKET_TOK | PARAMETER_TOK LBRACKET_TOK STRING_TOK COMMA_TOK STRING_TOK RBRACKET_TOK | PARAMETER_TOK LBRACKET_TOK STRING_TOK COMMA_TOK STRING_TOK COMMA_TOK authority RBRACKET_TOK ; authority : AUTHORITY_TOK LBRACKET_TOK STRING_TOK COMMA_TOK STRING_TOK RBRACKET_TOK { $$ = crs_make_authority($3,$5,NULL); printf(">-- authority\n"); }; %%