|
Packit |
a4aae4 |
/* A Bison parser, made by GNU Bison 3.0.4. */
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
/* Bison interface for Yacc-like parsers in C
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This program is free software: you can redistribute it and/or modify
|
|
Packit |
a4aae4 |
it under the terms of the GNU General Public License as published by
|
|
Packit |
a4aae4 |
the Free Software Foundation, either version 3 of the License, or
|
|
Packit |
a4aae4 |
(at your option) any later version.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This program is distributed in the hope that it will be useful,
|
|
Packit |
a4aae4 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
a4aae4 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
a4aae4 |
GNU General Public License for more details.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
You should have received a copy of the GNU General Public License
|
|
Packit |
a4aae4 |
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
/* As a special exception, you may create a larger work that contains
|
|
Packit |
a4aae4 |
part or all of the Bison parser skeleton and distribute that work
|
|
Packit |
a4aae4 |
under terms of your choice, so long as that work isn't itself a
|
|
Packit |
a4aae4 |
parser generator using the skeleton or a modified version thereof
|
|
Packit |
a4aae4 |
as a parser skeleton. Alternatively, if you modify or redistribute
|
|
Packit |
a4aae4 |
the parser skeleton itself, you may (at your option) remove this
|
|
Packit |
a4aae4 |
special exception, which will cause the skeleton and the resulting
|
|
Packit |
a4aae4 |
Bison output files to be licensed under the GNU General Public
|
|
Packit |
a4aae4 |
License without this special exception.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This special exception was added by the Free Software Foundation in
|
|
Packit |
a4aae4 |
version 2.2 of Bison. */
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#ifndef YY_CE_EXPR_CE_EXPR_TAB_HH_INCLUDED
|
|
Packit |
a4aae4 |
# define YY_CE_EXPR_CE_EXPR_TAB_HH_INCLUDED
|
|
Packit |
a4aae4 |
/* Debug traces. */
|
|
Packit |
a4aae4 |
#ifndef YYDEBUG
|
|
Packit |
a4aae4 |
# define YYDEBUG 1
|
|
Packit |
a4aae4 |
#endif
|
|
Packit |
a4aae4 |
#if YYDEBUG
|
|
Packit |
a4aae4 |
extern int ce_exprdebug;
|
|
Packit |
a4aae4 |
#endif
|
|
Packit |
a4aae4 |
/* "%code requires" blocks. */
|
|
Packit |
a4aae4 |
#line 41 "ce_expr.yy" /* yacc.c:1915 */
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "config.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include <cassert>
|
|
Packit |
a4aae4 |
#include <cstdlib>
|
|
Packit |
a4aae4 |
#include <cstring>
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include <iostream>
|
|
Packit |
a4aae4 |
#include <sstream>
|
|
Packit |
a4aae4 |
#include <iterator>
|
|
Packit |
a4aae4 |
#include <string>
|
|
Packit |
a4aae4 |
#include <stack>
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
//#define DODS_DEBUG
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "debug.h"
|
|
Packit |
a4aae4 |
#include "escaping.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "DDS.h"
|
|
Packit |
a4aae4 |
#include "ConstraintEvaluator.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "BaseType.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "Byte.h"
|
|
Packit |
a4aae4 |
#include "Int16.h"
|
|
Packit |
a4aae4 |
#include "UInt16.h"
|
|
Packit |
a4aae4 |
#include "Int32.h"
|
|
Packit |
a4aae4 |
#include "UInt32.h"
|
|
Packit |
a4aae4 |
#include "Float32.h"
|
|
Packit |
a4aae4 |
#include "Float64.h"
|
|
Packit |
a4aae4 |
#include "Str.h"
|
|
Packit |
a4aae4 |
#include "Url.h"
|
|
Packit |
a4aae4 |
#include "Array.h"
|
|
Packit |
a4aae4 |
#include "Structure.h"
|
|
Packit |
a4aae4 |
#include "Sequence.h"
|
|
Packit |
a4aae4 |
#include "Grid.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "Error.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "util.h"
|
|
Packit |
a4aae4 |
#include "parser.h"
|
|
Packit |
a4aae4 |
#include "ce_parser.h"
|
|
Packit |
a4aae4 |
#include "expr.h"
|
|
Packit |
a4aae4 |
#include "RValue.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
using std::cerr;
|
|
Packit |
a4aae4 |
using std::endl;
|
|
Packit |
a4aae4 |
using namespace libdap ;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#define EVALUATOR(arg) (static_cast<ce_parser_arg*>(arg)->get_eval())
|
|
Packit |
a4aae4 |
#define DDS(arg) (static_cast<ce_parser_arg*>(arg)->get_dds())
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
// #define YYPARSE_PARAM arg
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
int ce_exprlex(void); /* the scanner; see expr.lex */
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void ce_exprerror(ce_parser_arg *arg, const string &s);
|
|
Packit |
a4aae4 |
void ce_exprerror(ce_parser_arg *arg, const string &s, const string &s2;;
|
|
Packit |
a4aae4 |
void no_such_func(ce_parser_arg *arg, const string &name);
|
|
Packit |
a4aae4 |
void no_such_ident(ce_parser_arg *arg, const string &name, const string &word);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
int_list *make_array_index(value &i1, value &i2, value &i3;;
|
|
Packit |
a4aae4 |
int_list *make_array_index(value &i1, value &i2;;
|
|
Packit |
a4aae4 |
int_list *make_array_index(value &i1;;
|
|
Packit |
a4aae4 |
int_list_list *make_array_indices(int_list *index);
|
|
Packit |
a4aae4 |
int_list_list *append_array_index(int_list_list *indices, int_list *index);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void delete_array_indices(int_list_list *indices);
|
|
Packit |
a4aae4 |
bool bracket_projection(DDS &table, const char *name, int_list_list *indices);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void process_array_indices(BaseType *variable, int_list_list *indices);
|
|
Packit |
a4aae4 |
void process_grid_indices(BaseType *variable, int_list_list *indices);
|
|
Packit |
a4aae4 |
void process_sequence_indices(BaseType *variable, int_list_list *indices);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
/* Replace these with method calls. jhrg 8/31/06 */
|
|
Packit |
a4aae4 |
bool is_array_t(BaseType *variable);
|
|
Packit |
a4aae4 |
bool is_grid_t(BaseType *variable);
|
|
Packit |
a4aae4 |
bool is_sequence_t(BaseType *variable);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
BaseType *make_variable(ConstraintEvaluator &eval, const value &val;;
|
|
Packit |
a4aae4 |
bool_func get_function(const ConstraintEvaluator &eval, const char *name);
|
|
Packit |
a4aae4 |
btp_func get_btp_function(const ConstraintEvaluator &eval, const char *name);
|
|
Packit |
a4aae4 |
proj_func get_proj_function(const ConstraintEvaluator &eval, const char *name);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
template<class arg_list, class arg_type>
|
|
Packit |
a4aae4 |
arg_list make_fast_arg_list(unsigned long vector_size_hint, arg_type arg_value);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
template<class arg_list, class arg_type>
|
|
Packit |
a4aae4 |
arg_list make_fast_arg_list(arg_list int_values, arg_type arg_value);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
template<class t, class T>
|
|
Packit |
a4aae4 |
rvalue *build_constant_array(vector<t> *values, DDS *dds);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#line 140 "ce_expr.tab.hh" /* yacc.c:1915 */
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
/* Token type. */
|
|
Packit |
a4aae4 |
#ifndef YYTOKENTYPE
|
|
Packit |
a4aae4 |
# define YYTOKENTYPE
|
|
Packit |
a4aae4 |
enum yytokentype
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
SCAN_STR = 258,
|
|
Packit |
a4aae4 |
SCAN_WORD = 259,
|
|
Packit |
a4aae4 |
SCAN_EQUAL = 260,
|
|
Packit |
a4aae4 |
SCAN_NOT_EQUAL = 261,
|
|
Packit |
a4aae4 |
SCAN_GREATER = 262,
|
|
Packit |
a4aae4 |
SCAN_GREATER_EQL = 263,
|
|
Packit |
a4aae4 |
SCAN_LESS = 264,
|
|
Packit |
a4aae4 |
SCAN_LESS_EQL = 265,
|
|
Packit |
a4aae4 |
SCAN_REGEXP = 266,
|
|
Packit |
a4aae4 |
SCAN_STAR = 267,
|
|
Packit |
a4aae4 |
SCAN_HASH_BYTE = 268,
|
|
Packit |
a4aae4 |
SCAN_HASH_INT16 = 269,
|
|
Packit |
a4aae4 |
SCAN_HASH_UINT16 = 270,
|
|
Packit |
a4aae4 |
SCAN_HASH_INT32 = 271,
|
|
Packit |
a4aae4 |
SCAN_HASH_UINT32 = 272,
|
|
Packit |
a4aae4 |
SCAN_HASH_FLOAT32 = 273,
|
|
Packit |
a4aae4 |
SCAN_HASH_FLOAT64 = 274
|
|
Packit |
a4aae4 |
};
|
|
Packit |
a4aae4 |
#endif
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
/* Value type. */
|
|
Packit |
a4aae4 |
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
union YYSTYPE
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
#line 145 "ce_expr.yy" /* yacc.c:1915 */
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
bool boolean;
|
|
Packit |
a4aae4 |
int op;
|
|
Packit |
a4aae4 |
char id[ID_MAX];
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
libdap::dods_byte byte_value;
|
|
Packit |
a4aae4 |
libdap::dods_int16 int16_value;
|
|
Packit |
a4aae4 |
libdap::dods_uint16 uint16_value;
|
|
Packit |
a4aae4 |
libdap::dods_int32 int32_value;
|
|
Packit |
a4aae4 |
libdap::dods_uint32 uint32_value;
|
|
Packit |
a4aae4 |
libdap::dods_float32 float32_value;
|
|
Packit |
a4aae4 |
libdap::dods_float64 float64_value;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
libdap::byte_arg_list byte_values;
|
|
Packit |
a4aae4 |
libdap::int16_arg_list int16_values;
|
|
Packit |
a4aae4 |
libdap::uint16_arg_list uint16_values;
|
|
Packit |
a4aae4 |
libdap::int32_arg_list int32_values;
|
|
Packit |
a4aae4 |
libdap::uint32_arg_list uint32_values;
|
|
Packit |
a4aae4 |
libdap::float32_arg_list float32_values;
|
|
Packit |
a4aae4 |
libdap::float64_arg_list float64_values;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
libdap::value val; // value is defined in expr.h
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
libdap::bool_func b_func;
|
|
Packit |
a4aae4 |
libdap::btp_func bt_func;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
libdap::int_list *int_l_ptr;
|
|
Packit |
a4aae4 |
libdap::int_list_list *int_ll_ptr;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
libdap::rvalue *rval_ptr;
|
|
Packit |
a4aae4 |
libdap::rvalue_list *r_val_l_ptr;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#line 205 "ce_expr.tab.hh" /* yacc.c:1915 */
|
|
Packit |
a4aae4 |
};
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
typedef union YYSTYPE YYSTYPE;
|
|
Packit |
a4aae4 |
# define YYSTYPE_IS_TRIVIAL 1
|
|
Packit |
a4aae4 |
# define YYSTYPE_IS_DECLARED 1
|
|
Packit |
a4aae4 |
#endif
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
extern YYSTYPE ce_exprlval;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
int ce_exprparse (ce_parser_arg *arg);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#endif /* !YY_CE_EXPR_CE_EXPR_TAB_HH_INCLUDED */
|