dapparselex.h 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc.
  2. See the COPYRIGHT file for more information. */
  3. #ifndef DAPPARSELEX_H
  4. #define DAPPARSELEX_H 1
  5. #include "ocinternal.h"
  6. #include "ocdebug.h"
  7. #ifdef USE_DAP
  8. /* To avoid "make distclean" wiping out dap.tab.h */
  9. #include "daptab.h"
  10. #else
  11. #include "daptab.h"
  12. #endif
  13. #ifdef WIN32
  14. #define strcasecmp stricmp
  15. #define snprintf _snprintf
  16. #endif
  17. /* For consistency with Java parser */
  18. #define null NULL
  19. typedef void* Object;
  20. #define YYSTYPE Object
  21. #define MAX_TOKEN_LENGTH 1024
  22. /*! Specifies the Lexstate. */
  23. typedef struct DAPlexstate {
  24. char* input;
  25. char* next; /* next char in uri.query*/
  26. OCbytes* yytext;
  27. int lineno;
  28. /*! Specifies the Lasttoken. */
  29. int lasttoken;
  30. char lasttokentext[MAX_TOKEN_LENGTH+1];
  31. char* wordchars1;
  32. char* wordcharsn;
  33. char* worddelims;
  34. OClist* reclaim; /* reclaim WORD_WORD instances */
  35. } DAPlexstate;
  36. /*! Specifies the DAPparsestate. */
  37. typedef struct DAPparsestate {
  38. struct OCnode* root;
  39. DAPlexstate* lexstate;
  40. OClist* ocnodes;
  41. struct OCstate* conn;
  42. /* For error returns from the server */
  43. int svcerror; /* 1 => we had an error from the server */
  44. char* code;
  45. char* message;
  46. char* progtype;
  47. char* progname;
  48. /* State for constraint expressions */
  49. struct CEstate* cestate;
  50. } DAPparsestate;
  51. extern int daperror(DAPparsestate* state, const char* msg);
  52. extern void dap_parse_error(DAPparsestate*,const char *fmt, ...);
  53. /* bison parse entry point */
  54. extern int dapparse(DAPparsestate*);
  55. extern Object dap_datasetbody(DAPparsestate*,Object decls, Object name);
  56. extern Object dap_declarations(DAPparsestate*,Object decls, Object decl);
  57. extern Object dap_arraydecls(DAPparsestate*,Object arraydecls, Object arraydecl);
  58. extern Object dap_arraydecl(DAPparsestate*,Object name, Object size);
  59. extern void dap_dassetup(DAPparsestate*);
  60. extern Object dap_attributebody(DAPparsestate*,Object attrlist);
  61. extern Object dap_attrlist(DAPparsestate*,Object attrlist, Object attrtuple);
  62. extern Object dap_attribute(DAPparsestate*,Object name, Object value, Object etype);
  63. extern Object dap_attrset(DAPparsestate*,Object name, Object attributes);
  64. extern Object dap_attrvalue(DAPparsestate*,Object valuelist, Object value, Object etype);
  65. extern Object dap_makebase(DAPparsestate*,Object name, Object etype, Object dimensions);
  66. extern Object dap_makestructure(DAPparsestate*,Object name, Object dimensions, Object fields);
  67. extern Object dap_makesequence(DAPparsestate*,Object name, Object members);
  68. extern Object dap_makegrid(DAPparsestate*,Object name, Object arraydecl, Object mapdecls);
  69. extern void dap_errorbody(DAPparsestate*, Object, Object, Object, Object);
  70. extern void dap_unrecognizedresponse(DAPparsestate*);
  71. extern void dap_tagparse(DAPparsestate*,int);
  72. /* Lexer entry points */
  73. extern int daplex(YYSTYPE*, DAPparsestate*);
  74. extern void daplexinit(char* input, DAPlexstate** lexstatep);
  75. extern void daplexcleanup(DAPlexstate** lexstatep);
  76. extern void dapsetwordchars(DAPlexstate* lexstate, int kind);
  77. extern char* dapdecode(DAPlexstate*,char*);
  78. #endif /*DAPPARSELEX_H*/