| 2694 | /* |
| 2695 | ** Any extra C functions |
| 2696 | */ |
| 2697 | |
| 2698 | int yylex(YYSTYPE *lvalp, parseObj *p) |
| 2699 | { |
| 2700 | int token; |
| 2701 | |
| 2702 | if(p->expr->curtoken == NULL) return(0); /* done */ |
| 2703 | |
| 2704 | // fprintf(stderr, "in yylex() - curtoken=%d...\n", p->expr->curtoken->token); |
| 2705 | |
| 2706 | token = p->expr->curtoken->token; /* may override */ |
| 2707 | switch(p->expr->curtoken->token) { |
| 2708 | case MS_TOKEN_LITERAL_NUMBER: |
| 2709 | token = NUMBER; |
| 2710 | (*lvalp).dblval = p->expr->curtoken->tokenval.dblval; |
| 2711 | break; |
| 2712 | case MS_TOKEN_LITERAL_SHAPE: |
| 2713 | token = SHAPE; |
| 2714 | // fprintf(stderr, "token value = %s\n", msShapeToWKT(p->expr->curtoken->tokenval.shpval)); |
| 2715 | (*lvalp).shpval = p->expr->curtoken->tokenval.shpval; |
| 2716 | break; |
| 2717 | case MS_TOKEN_LITERAL_STRING: |
| 2718 | // printf("token value = %s\n", p->expr->curtoken->tokenval.strval); |
| 2719 | token = STRING; |
| 2720 | (*lvalp).strval = strdup(p->expr->curtoken->tokenval.strval); |
| 2721 | break; |
| 2722 | case MS_TOKEN_LITERAL_TIME: |
| 2723 | token = TIME; |
| 2724 | (*lvalp).tmval = p->expr->curtoken->tokenval.tmval; |
| 2725 | break; |
| 2726 | |
| 2727 | case MS_TOKEN_COMPARISON_EQ: token = EQ; break; |
| 2728 | case MS_TOKEN_COMPARISON_IEQ: token = IEQ; break; |
| 2729 | case MS_TOKEN_COMPARISON_NE: token = NE; break; |
| 2730 | case MS_TOKEN_COMPARISON_LT: token = LT; break; |
| 2731 | case MS_TOKEN_COMPARISON_GT: token = GT; break; |
| 2732 | case MS_TOKEN_COMPARISON_LE: token = LE; break; |
| 2733 | case MS_TOKEN_COMPARISON_GE: token = GE; break; |
| 2734 | case MS_TOKEN_COMPARISON_RE: token = RE; break; |
| 2735 | case MS_TOKEN_COMPARISON_IRE: token = IRE; break; |
| 2736 | |
| 2737 | case MS_TOKEN_COMPARISON_INTERSECTS: token = INTERSECTS; break; |
| 2738 | case MS_TOKEN_COMPARISON_DISJOINT: token = DISJOINT; break; |
| 2739 | case MS_TOKEN_COMPARISON_TOUCHES: token = TOUCHES; break; |
| 2740 | case MS_TOKEN_COMPARISON_OVERLAPS: token = OVERLAPS; break; |
| 2741 | case MS_TOKEN_COMPARISON_CROSSES: token = CROSSES; break; |
| 2742 | case MS_TOKEN_COMPARISON_WITHIN: token = WITHIN; break; |
| 2743 | case MS_TOKEN_COMPARISON_CONTAINS: token = CONTAINS; break; |
| 2744 | case MS_TOKEN_COMPARISON_BEYOND: token = BEYOND; break; |
| 2745 | case MS_TOKEN_COMPARISON_DWITHIN: token = DWITHIN; break; |
| 2746 | |
| 2747 | case MS_TOKEN_LOGICAL_AND: token = AND; break; |
| 2748 | case MS_TOKEN_LOGICAL_OR: token = OR; break; |
| 2749 | case MS_TOKEN_LOGICAL_NOT: token = NOT; break; |
| 2750 | |
| 2751 | case MS_TOKEN_BINDING_DOUBLE: |
| 2752 | case MS_TOKEN_BINDING_INTEGER: |
| 2753 | token = NUMBER; |
nothing calls this directly
no test coverage detected