1/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc.
2   See the COPYRIGHT file for more information. */
3
4#ifndef DCEPARSELEX_H
5#define DCEPARSELEX_H
6
7#include "config.h"
8
9/* Forward */
10struct DCEparsestate;
11typedef struct DCEparsestate DCEparsestate;
12
13#include "dcetab.h"
14
15#ifdef WIN32
16
17
18#endif
19
20/* For consistency with Java parser */
21#ifndef null
22#define null NULL
23#endif
24
25typedef void* Object;
26
27#define YYSTYPE Object
28
29#define MAX_TOKEN_LENGTH 1024
30
31/*! Specifies DCElexstate. */
32typedef struct DCElexstate {
33    char* input;
34    char* next; /* next char in uri.query */
35    NCbytesyytext;
36    /*! Specifies the Lasttoken. */
37    int lasttoken;
38    char lasttokentext[MAX_TOKEN_LENGTH+1]; /* leave room for trailing null */
39    NClistreclaim; /* reclaim SCAN_WORD instances */
40DCElexstate;
41
42/*! Specifies DCEparsestate. */
43struct DCEparsestate {
44    DCEconstraintconstraint;
45    char errorbuf[1024];
46    int errorcode;
47    DCElexstatelexstate;
48};
49
50/* Define a generic object carrier; this serves
51   essentially the same role as the typical bison %union
52   declaration
53*/
54
55
56extern int ceerror(DCEparsestate*,char*);
57extern void ce_parse_error(DCEparsestate*,const char *fmt, ...);
58
59/* bison parse entry point */
60extern int dceparse(DCEparsestate*);
61
62extern int dceerror(DCEparsestatestate, char* msg);
63extern void projections(DCEparsestatestateObject list0);
64extern void selections(DCEparsestatestateObject list0);
65extern Object projectionlist(DCEparsestatestateObject list0Object decl);
66extern Object projection(DCEparsestatestateObject segmentlist);
67extern Object segmentlist(DCEparsestatestateObject list0Object decl);
68extern Object segment(DCEparsestatestateObject nameObject slices0);
69extern Object array_indices(DCEparsestatestateObject list0Object decl);
70extern Object range(DCEparsestatestateObjectObjectObject);
71extern Object selectionlist(DCEparsestatestateObject list0Object decl);
72extern Object sel_clause(DCEparsestatestate, int selcaseObject path0Object relop0Object values);
73extern Object selectionpath(DCEparsestatestateObject list0Object text);
74extern Object arrayelement(DCEparsestatestateObject nameObject index);
75extern Object function(DCEparsestatestateObject fcnnameObject args);
76extern Object arg_list(DCEparsestatestateObject list0Object decl);
77extern Object value_list(DCEparsestatestateObject list0Object decl);
78extern Object value(DCEparsestatestateObject value);
79extern Object makeselectiontag(CEsort);
80extern Object indexer(DCEparsestatestateObject nameObject indices);
81extern Object indexpath(DCEparsestatestateObject list0Object index);
82extern Object var(DCEparsestatestateObject indexpath);
83extern Object constant(DCEparsestatestateObject val, int tag);
84extern Object clauselist(DCEparsestatestateObject list0Object decl);
85extern Object range1(DCEparsestatestateObject rangenumber);
86extern Object rangelist(DCEparsestatestateObject list0Object decl);
87
88/* lexer interface */
89extern int dcelex(YYSTYPE*, DCEparsestate*);
90extern void dcelexinit(char* inputDCElexstate** lexstatep);
91extern void dcelexcleanup(DCElexstate** lexstatep);
92
93extern int dcedebug;
94
95#ifdef PARSEDEBUG
96extern Object debugobject(Object);
97#define checkobject(xdebugobject(x)
98#else
99#define checkobject(x) (x)
100#endif
101
102extern int dapceparse(char* inputDCEconstraint*, char**);
103
104#endif /*DCEPARSELEX_H*/
105


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed