home *** CD-ROM | disk | FTP | other *** search
/ ftptest.leeds.ac.uk / 2015.02.ftptest.leeds.ac.uk.tar / ftptest.leeds.ac.uk / bionet / CAE-GROUP / SCL-WIN3x / FED_PLUS.EXE / EXPRESS.H < prev    next >
C/C++ Source or Header  |  1994-07-23  |  9KB  |  271 lines

  1. #ifndef EXPRESS_H
  2. #define EXPRESS_H
  3.  
  4. /* $Id: express.h,v 1.10 1994/05/11 19:51:05 libes Exp $ */
  5.  
  6. /*
  7.  * Express package manager.
  8.  *
  9.  * This software was developed by U.S. Government employees as part of
  10.  * their official duties and is not subject to copyright.
  11.  *
  12.  * $Log: express.h,v $
  13.  * Revision 1.10  1994/05/11  19:51:05  libes
  14.  * numerous fixes
  15.  *
  16.  * Revision 1.9  1993/10/15  18:48:24  libes
  17.  * CADDETC certified
  18.  *
  19.  * Revision 1.7  1993/02/16  03:19:56  libes
  20.  * added unwriteable error
  21.  *
  22.  * Revision 1.6  1993/01/19  22:44:17  libes
  23.  * *** empty log message ***
  24.  *
  25.  * Revision 1.5  1992/09/16  18:20:10  libes
  26.  * changed user-visible names
  27.  *
  28.  * Revision 1.4  1992/08/18  17:12:41  libes
  29.  * rm'd extraneous error messages
  30.  *
  31.  * Revision 1.3  1992/06/08  18:06:24  libes
  32.  * prettied up interface to print_objects_when_running
  33.  * 
  34.  */
  35.  
  36. /*************/
  37. /* constants */
  38. /*************/
  39.  
  40. #define EXPRESS_NULL    (struct Scope *)0
  41.  
  42. /*****************/
  43. /* packages used */
  44. /*****************/
  45.  
  46. #include "expbasic.h"    /* get basic definitions */
  47. #include <string.h>
  48. #include "scope.h"
  49. #include "type.h"
  50. #include "variable.h"
  51. #include "expr.h"
  52. #include "entity.h"
  53. #include "caseitem.h"
  54. #include "stmt.h"
  55. #include "alg.h"
  56. #include "schema.h"
  57. #include "lexact.h"
  58. #include "dict.h"
  59.  
  60. /************/
  61. /* typedefs */
  62. /************/
  63.  
  64. typedef struct Scope *Express;
  65.  
  66. /****************/
  67. /* modules used */
  68. /****************/
  69.  
  70. /***************************/
  71. /* hidden type definitions */
  72. /***************************/
  73.  
  74. struct Express {
  75.     FILE *file;
  76.     char *filename;
  77.     char *basename;    /* name of file but without directory or .exp suffix */
  78. };
  79.  
  80. /********************/
  81. /* global variables */
  82. /********************/
  83.  
  84. #ifdef EXPRESS_C
  85. # define GLOBAL
  86. # define INITIALLY(value) = value
  87. #else
  88. # define GLOBAL extern
  89. # define INITIALLY(value)
  90. #endif /*EXPRESS_C*/
  91.  
  92. GLOBAL Linked_List EXPRESS_path;
  93. GLOBAL int EXPRESSpass;
  94.  
  95. GLOBAL void (*EXPRESSinit_args) PROTO((int, char**))    INITIALLY(0);
  96. GLOBAL void (*EXPRESSinit_parse) PROTO((void))        INITIALLY(0);
  97. GLOBAL int  (*EXPRESSfail) PROTO((Express))        INITIALLY(0);
  98. GLOBAL int  (*EXPRESSsucceed) PROTO((Express))        INITIALLY(0);
  99. GLOBAL void (*EXPRESSbackend) PROTO((Express))        INITIALLY(0);
  100. GLOBAL char  *EXPRESSprogram_name;
  101. extern char   EXPRESSgetopt_options[];    /* initialized elsewhere */
  102. GLOBAL int  (*EXPRESSgetopt) PROTO((int,char *))    INITIALLY(0);
  103. GLOBAL int    EXPRESSignore_duplicate_schemas        INITIALLY(false);
  104.  
  105. GLOBAL Dictionary EXPRESSbuiltins;    /* procedures/functions */
  106.  
  107. GLOBAL Error ERROR_bail_out        INITIALLY(ERROR_none);
  108. GLOBAL Error ERROR_syntax        INITIALLY(ERROR_none);
  109. GLOBAL Error ERROR_file_unreadable;
  110. GLOBAL Error ERROR_file_unwriteable;
  111.  
  112. GLOBAL struct Scope *FUNC_NVL;
  113. GLOBAL struct Scope *FUNC_USEDIN;
  114.  
  115. GLOBAL char *KW_ABS        INITIALLY("ABS");
  116. GLOBAL char *KW_ABSTRACT    INITIALLY("ABSTRACT");
  117. GLOBAL char *KW_ACOS        INITIALLY("ACOS");
  118. GLOBAL char *KW_AGGREGATE    INITIALLY("AGGREGATE");
  119. GLOBAL char *KW_ALIAS        INITIALLY("ALIAS");
  120. GLOBAL char *KW_AND        INITIALLY("AND");
  121. GLOBAL char *KW_ANDOR        INITIALLY("ANDOR");
  122. GLOBAL char *KW_ARRAY        INITIALLY("ARRAY");
  123. GLOBAL char *KW_AS        INITIALLY("AS");
  124. GLOBAL char *KW_ASIN        INITIALLY("ASIN");
  125. GLOBAL char *KW_ATAN        INITIALLY("ATAN");
  126. GLOBAL char *KW_BAG        INITIALLY("BAG");
  127. GLOBAL char *KW_BEGIN        INITIALLY("BEGIN");
  128. GLOBAL char *KW_BINARY        INITIALLY("BINARY");
  129. GLOBAL char *KW_BLENGTH        INITIALLY("BLENGTH");
  130. GLOBAL char *KW_BOOLEAN        INITIALLY("BOOLEAN");
  131. GLOBAL char *KW_BY        INITIALLY("BY");
  132. GLOBAL char *KW_CASE        INITIALLY("CASE");
  133. GLOBAL char *KW_CONST_E        INITIALLY("CONST_E");
  134. GLOBAL char *KW_CONSTANT    INITIALLY("CONSTANT");
  135. GLOBAL char *KW_CONTEXT        INITIALLY("CONTEXT");
  136. GLOBAL char *KW_COS        INITIALLY("COS");
  137. GLOBAL char *KW_DERIVE        INITIALLY("DERIVE");
  138. GLOBAL char *KW_DIV        INITIALLY("DIV");
  139. GLOBAL char *KW_ELSE        INITIALLY("ELSE");
  140. GLOBAL char *KW_END        INITIALLY("END");
  141. GLOBAL char *KW_END_ALIAS    INITIALLY("END_ALIAS");
  142. GLOBAL char *KW_END_CASE    INITIALLY("END_CASE");
  143. GLOBAL char *KW_END_CONSTANT    INITIALLY("END_CONSTANT");
  144. GLOBAL char *KW_END_CONTEXT    INITIALLY("END_CONTEXT");
  145. GLOBAL char *KW_END_ENTITY    INITIALLY("END_ENTITY");
  146. GLOBAL char *KW_END_FUNCTION    INITIALLY("END_FUNCTION");
  147. GLOBAL char *KW_END_IF        INITIALLY("END_IF");
  148. GLOBAL char *KW_END_LOCAL    INITIALLY("END_LOCAL");
  149. GLOBAL char *KW_END_MODEL    INITIALLY("END_MODEL");
  150. GLOBAL char *KW_END_PROCEDURE    INITIALLY("END_PROCEDURE");
  151. GLOBAL char *KW_END_REPEAT    INITIALLY("END_REPEAT");
  152. GLOBAL char *KW_END_RULE    INITIALLY("END_RULE");
  153. GLOBAL char *KW_END_SCHEMA    INITIALLY("END_SCHEMA");
  154. GLOBAL char *KW_END_TYPE    INITIALLY("END_TYPE");
  155. GLOBAL char *KW_ENTITY        INITIALLY("ENTITY");
  156. GLOBAL char *KW_ENUMERATION    INITIALLY("ENUMERATION");
  157. GLOBAL char *KW_ESCAPE        INITIALLY("ESCAPE");
  158. GLOBAL char *KW_EXISTS        INITIALLY("EXISTS");
  159. GLOBAL char *KW_EXP        INITIALLY("EXP");
  160. GLOBAL char *KW_FALSE        INITIALLY("FALSE");
  161. GLOBAL char *KW_FIXED        INITIALLY("FIXED");
  162. GLOBAL char *KW_FOR        INITIALLY("FOR");
  163. GLOBAL char *KW_FORMAT        INITIALLY("FORMAT");
  164. GLOBAL char *KW_FROM        INITIALLY("FROM");
  165. GLOBAL char *KW_FUNCTION    INITIALLY("FUNCTION");
  166. GLOBAL char *KW_GENERIC        INITIALLY("GENERIC");
  167. GLOBAL char *KW_HIBOUND        INITIALLY("HIBOUND");
  168. GLOBAL char *KW_HIINDEX        INITIALLY("HIINDEX");
  169. GLOBAL char *KW_IF        INITIALLY("IF");
  170. GLOBAL char *KW_IN        INITIALLY("IN");
  171. GLOBAL char *KW_INCLUDE        INITIALLY("INCLUDE");
  172. GLOBAL char *KW_INSERT        INITIALLY("INSERT");
  173. GLOBAL char *KW_INTEGER        INITIALLY("INTEGER");
  174. GLOBAL char *KW_INVERSE        INITIALLY("INVERSE");
  175. GLOBAL char *KW_LENGTH        INITIALLY("LENGTH");
  176. GLOBAL char *KW_LIKE        INITIALLY("LIKE");
  177. GLOBAL char *KW_LIST        INITIALLY("LIST");
  178. GLOBAL char *KW_LOBOUND        INITIALLY("LOBOUND");
  179. GLOBAL char *KW_LOCAL        INITIALLY("LOCAL");
  180. GLOBAL char *KW_LOG        INITIALLY("LOG");
  181. GLOBAL char *KW_LOG10        INITIALLY("LOG10");
  182. GLOBAL char *KW_LOG2        INITIALLY("LOG2");
  183. GLOBAL char *KW_LOGICAL        INITIALLY("LOGICAL");
  184. GLOBAL char *KW_LOINDEX        INITIALLY("LOINDEX");
  185. GLOBAL char *KW_MOD        INITIALLY("MOD");
  186. GLOBAL char *KW_MODEL        INITIALLY("MODEL");
  187. GLOBAL char *KW_NOT        INITIALLY("NOT");
  188. GLOBAL char *KW_NUMBER        INITIALLY("NUMBER");
  189. GLOBAL char *KW_NVL        INITIALLY("NVL");
  190. GLOBAL char *KW_ODD        INITIALLY("ODD");
  191. GLOBAL char *KW_OF        INITIALLY("OF");
  192. GLOBAL char *KW_ONEOF        INITIALLY("ONEOF");
  193. GLOBAL char *KW_OPTIONAL    INITIALLY("OPTIONAL");
  194. GLOBAL char *KW_OR        INITIALLY("OR");
  195. GLOBAL char *KW_OTHERWISE    INITIALLY("OTHERWISE");
  196. GLOBAL char *KW_PI        INITIALLY("PI");
  197. GLOBAL char *KW_PROCEDURE    INITIALLY("PROCEDURE");
  198. GLOBAL char *KW_QUERY        INITIALLY("QUERY");
  199. GLOBAL char *KW_REAL        INITIALLY("REAL");
  200. GLOBAL char *KW_REFERENCE    INITIALLY("REFERENCE");
  201. GLOBAL char *KW_REMOVE        INITIALLY("REMOVE");
  202. GLOBAL char *KW_REPEAT        INITIALLY("REPEAT");
  203. GLOBAL char *KW_RETURN        INITIALLY("RETURN");
  204. GLOBAL char *KW_ROLESOF        INITIALLY("ROLESOF");
  205. GLOBAL char *KW_RULE        INITIALLY("RULE");
  206. GLOBAL char *KW_SCHEMA        INITIALLY("SCHEMA");
  207. GLOBAL char *KW_SELECT        INITIALLY("SELECT");
  208. GLOBAL char *KW_SELF        INITIALLY("SELF");
  209. GLOBAL char *KW_SET        INITIALLY("SET");
  210. GLOBAL char *KW_SIN        INITIALLY("SIN");
  211. GLOBAL char *KW_SIZEOF        INITIALLY("SIZEOF");
  212. GLOBAL char *KW_SKIP        INITIALLY("SKIP");
  213. GLOBAL char *KW_SQRT        INITIALLY("SQRT");
  214. GLOBAL char *KW_STRING        INITIALLY("STRING");
  215. GLOBAL char *KW_SUBTYPE        INITIALLY("SUBTYPE");
  216. GLOBAL char *KW_SUPERTYPE    INITIALLY("SUPERTYPE");
  217. GLOBAL char *KW_TAN        INITIALLY("TAN");
  218. GLOBAL char *KW_THEN        INITIALLY("THEN");
  219. GLOBAL char *KW_TO        INITIALLY("TO");
  220. GLOBAL char *KW_TRUE        INITIALLY("TRUE");
  221. GLOBAL char *KW_TYPE        INITIALLY("TYPE");
  222. GLOBAL char *KW_TYPEOF        INITIALLY("TYPEOF");
  223. GLOBAL char *KW_UNIQUE        INITIALLY("UNIQUE");
  224. GLOBAL char *KW_UNKNOWN        INITIALLY("UNKNOWN");
  225. GLOBAL char *KW_UNTIL        INITIALLY("UNTIL");
  226. GLOBAL char *KW_USE        INITIALLY("USE");
  227. GLOBAL char *KW_USEDIN        INITIALLY("USEDIN");
  228. GLOBAL char *KW_VALUE        INITIALLY("VALUE");
  229. GLOBAL char *KW_VAR        INITIALLY("VAR");
  230. GLOBAL char *KW_WHERE        INITIALLY("WHERE");
  231. GLOBAL char *KW_WHILE        INITIALLY("WHILE");
  232. GLOBAL char *KW_XOR        INITIALLY("XOR");
  233.  
  234. #undef GLOBAL
  235. #undef INITIALLY
  236.  
  237. /******************************/
  238. /* macro function definitions */
  239. /******************************/
  240.  
  241. #define EXPRESSget_basename(e)        ((e)->u.express->basename)
  242. #define EXPRESSget_filename(e)        ((e)->u.express->filename)
  243. #define EXPRESSput_basename(e,n)    ((e)->u.express->basename = (n))
  244. #define EXPRESSput_filename(e,n)    ((e)->u.express->filename = (n))
  245.  
  246. /********************/
  247. /* Inline functions */
  248. /********************/
  249.  
  250. #if supports_inline_functions || defined(EXPRESS_C)
  251.  
  252. #endif /*supports_inline_functions || defined(EXPRESS_C)*/
  253.  
  254. /***********************/
  255. /* function prototypes */
  256. /***********************/
  257.  
  258. extern Express         EXPRESScreate PROTO((void));
  259. extern void         EXPRESSparse PROTO((Express,FILE *,char *));
  260. extern void        EXPRESSinitialize PROTO((void));
  261. extern void         EXPRESSresolve PROTO((Express));
  262. extern char *        EXPRESSversion PROTO((void));
  263. extern int        EXPRESS_fail PROTO((Express));
  264. extern int        EXPRESS_succeed PROTO((Express));
  265. extern void        EXPRESSinit_init PROTO((void));
  266. #if 0
  267. extern void        EXPRESSdump_model PROTO((Express));
  268. #endif /*0*/
  269.  
  270. #endif /*EXPRESS_H*/
  271.