1/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc.
2   See the COPYRIGHT file for more information. */
3
4#ifndef DAPPARSELEX_H
5#define DAPPARSELEX_H 1
6
7#include "ocinternal.h"
8#include "ocdebug.h"
9
10/* For consistency with Java parser */
11#define null NULL
12
13typedef void* Object;
14
15#define YYSTYPE Object
16
17#define MAX_TOKEN_LENGTH 1024
18
19/*! Specifies the Lexstate. */
20typedef struct DAPlexstate {
21    char* input;
22    char* next; /* next char in uri.query*/
23    OCbytesyytext;
24    int lineno;
25    /*! Specifies the Lasttoken. */
26    int lasttoken;
27    char lasttokentext[MAX_TOKEN_LENGTH+1];
28    char* wordchars1;
29    char* wordcharsn;
30    char* worddelims;
31    OClistreclaim; /* reclaim WORD_WORD instances */
32DAPlexstate;
33
34/*! Specifies the DAPparsestate. */
35typedef struct DAPparsestate {
36    struct OCnoderoot;
37    DAPlexstatelexstate;
38    OClistocnodes;
39    struct OCstateconn;
40    /* Provide a flag for semantic failures during parse */
41    OCerror error; /* OC_EDAPSVC=> we had a server failure; else we had a semantic error */
42    char* code;
43    char* message;
44    char* progtype;
45    char* progname;
46    /* State for constraint expressions */
47    struct CEstatecestate;
48DAPparsestate;
49
50extern int dapdebug; /* global state */
51
52extern int daperror(DAPparsestate*, const char*);
53extern int dapsemanticerror(DAPparsestatestateOCerror, const char* msg);
54extern void dap_parse_error(DAPparsestate*,const char *fmt, ...);
55/* bison parse entry point */
56extern int dapparse(DAPparsestate*);
57
58extern Object dap_datasetbody(DAPparsestate*,Object declsObject name);
59extern Object dap_declarations(DAPparsestate*,Object declsObject decl);
60extern Object dap_arraydecls(DAPparsestate*,Object arraydeclsObject arraydecl);
61extern Object dap_arraydecl(DAPparsestate*,Object nameObject size);
62
63extern void dap_dassetup(DAPparsestate*);
64extern Object dap_attributebody(DAPparsestate*,Object attrlist);
65extern Object dap_attrlist(DAPparsestate*,Object attrlistObject attrtuple);
66extern Object dap_attribute(DAPparsestate*,Object nameObject valueObject etype);
67extern Object dap_attrset(DAPparsestate*,Object nameObject attributes);
68extern Object dap_attrvalue(DAPparsestate*,Object valuelistObject valueObject etype);
69
70extern Object dap_makebase(DAPparsestate*,Object nameObject etypeObject dimensions);
71extern Object dap_makestructure(DAPparsestate*,Object nameObject dimensionsObject fields);
72extern Object dap_makesequence(DAPparsestate*,Object nameObject members);
73extern Object dap_makegrid(DAPparsestate*,Object nameObject arraydeclObject mapdecls);
74
75extern void dap_errorbody(DAPparsestate*, ObjectObjectObjectObject);
76extern void dap_unrecognizedresponse(DAPparsestate*);
77
78extern void dap_tagparse(DAPparsestate*,int);
79
80/* Lexer entry points */
81extern int daplex(YYSTYPE*, DAPparsestate*);
82extern void daplexinit(char* inputDAPlexstate** lexstatep);
83extern void daplexcleanup(DAPlexstate** lexstatep);
84extern void dapsetwordchars(DAPlexstatelexstate, int kind);
85extern char* dapdecode(DAPlexstate*,char*);
86
87extern OCerror DAPparse(OCstate*, struct OCtree*, char*);
88extern char* dimnameanon(char* basename, unsigned int index);
89
90#endif /*DAPPARSELEX_H*/


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