| 1 | /* -------------------------------------------------------------- XIS_COMP.H */ |
|---|
| 2 | |
|---|
| 3 | /* ------------------------------------------------------------------ define */ |
|---|
| 4 | #define PATH_NAME_LEN 512 /* path name lenght */ |
|---|
| 5 | /* ------------------------------------------------------------- enumeration */ |
|---|
| 6 | typedef enum { |
|---|
| 7 | CPL_ERROR_OK, |
|---|
| 8 | CPL_ERROR_ALLOC, |
|---|
| 9 | CPL_ERROR_INVALID, |
|---|
| 10 | CPL_ERROR_MISSING, |
|---|
| 11 | CPL_ERROR_PATHNAMELEN, |
|---|
| 12 | CPL_ERROR_NOTFOUND, |
|---|
| 13 | CPL_ERROR_FILE, |
|---|
| 14 | CPL_ERROR_WRITE, |
|---|
| 15 | CPL_ERROR_READ, |
|---|
| 16 | CPL_ERROR_LIST_QTT |
|---|
| 17 | } CPL_ERROR; /* error code */ |
|---|
| 18 | |
|---|
| 19 | typedef enum { |
|---|
| 20 | TOKEN_ASSIGN, |
|---|
| 21 | TOKEN_ATTRIBUTE, |
|---|
| 22 | TOKEN_ELCLOSE, |
|---|
| 23 | TOKEN_ELEMENT, |
|---|
| 24 | TOKEN_ELEND, |
|---|
| 25 | TOKEN_END, |
|---|
| 26 | TOKEN_SEPARATOR, |
|---|
| 27 | TOKEN_LIST_QTT |
|---|
| 28 | } CPL_TOKEN; /* token */ |
|---|
| 29 | |
|---|
| 30 | typedef enum { |
|---|
| 31 | ELEMENT_0, |
|---|
| 32 | ELEMENT_CALL, |
|---|
| 33 | ELEMENT_CGITABLE, |
|---|
| 34 | ELEMENT_DEFINE, |
|---|
| 35 | ELEMENT_DISPLAY, |
|---|
| 36 | ELEMENT_DISPL, |
|---|
| 37 | ELEMENT_DO, |
|---|
| 38 | ELEMENT_EXPORT, |
|---|
| 39 | ELEMENT_EXTRACT, |
|---|
| 40 | ELEMENT_FIELD, |
|---|
| 41 | ELEMENT_FILE, |
|---|
| 42 | ELEMENT_FLOW, |
|---|
| 43 | ELEMENT_FUNCTION, |
|---|
| 44 | ELEMENT_HL, |
|---|
| 45 | ELEMENT_HTMLPFT, |
|---|
| 46 | ELEMENT_INCLUDE, |
|---|
| 47 | ELEMENT_ISISSCRIPT, |
|---|
| 48 | ELEMENT_LABEL, |
|---|
| 49 | ELEMENT_LIST, |
|---|
| 50 | ELEMENT_LOOP, |
|---|
| 51 | ELEMENT_PARM, |
|---|
| 52 | ELEMENT_PFT, |
|---|
| 53 | ELEMENT_PROC, |
|---|
| 54 | ELEMENT_RETURN, |
|---|
| 55 | ELEMENT_SECTION, |
|---|
| 56 | ELEMENT_TRACE, |
|---|
| 57 | ELEMENT_UPDATE, |
|---|
| 58 | ELEMENT_WRITE, |
|---|
| 59 | |
|---|
| 60 | ELEMENT_ISISXML, /* 22.Feb.2001 */ |
|---|
| 61 | |
|---|
| 62 | ELEMENT_LIST_QTT |
|---|
| 63 | } CPL_ELEMENT; /* element */ |
|---|
| 64 | |
|---|
| 65 | typedef enum { |
|---|
| 66 | ATTRIBUTE_0, |
|---|
| 67 | ATTRIBUTE_ACTION, |
|---|
| 68 | ATTRIBUTE_FROM, |
|---|
| 69 | ATTRIBUTE_NAME, |
|---|
| 70 | ATTRIBUTE_PREVIOUS, |
|---|
| 71 | ATTRIBUTE_SPLIT, |
|---|
| 72 | ATTRIBUTE_TAG, |
|---|
| 73 | ATTRIBUTE_TASK, |
|---|
| 74 | ATTRIBUTE_TYPE, |
|---|
| 75 | ATTRIBUTE_AUX1, |
|---|
| 76 | ATTRIBUTE_AUX2, |
|---|
| 77 | ATTRIBUTE_LIST_QTT |
|---|
| 78 | } CPL_ATTRIBUTE; /* attribute */ |
|---|
| 79 | |
|---|
| 80 | typedef enum { |
|---|
| 81 | ATVALUE_0, |
|---|
| 82 | ATVALUE_ACTAB, |
|---|
| 83 | ATVALUE_ADD, |
|---|
| 84 | ATVALUE_APPEND, |
|---|
| 85 | ATVALUE_BUFFERSIZE, |
|---|
| 86 | ATVALUE_CGI, |
|---|
| 87 | ATVALUE_CGISFT, |
|---|
| 88 | ATVALUE_CGISFU, |
|---|
| 89 | ATVALUE_CGISFW, |
|---|
| 90 | ATVALUE_CHECK, |
|---|
| 91 | ATVALUE_CIPAR, |
|---|
| 92 | ATVALUE_CLOSE, |
|---|
| 93 | ATVALUE_CONVERT, |
|---|
| 94 | ATVALUE_COPY, |
|---|
| 95 | ATVALUE_COUNT, |
|---|
| 96 | ATVALUE_CREATE, |
|---|
| 97 | ATVALUE_DATABASE, |
|---|
| 98 | ATVALUE_DB, |
|---|
| 99 | ATVALUE_DECOD, |
|---|
| 100 | ATVALUE_DEFINE, |
|---|
| 101 | ATVALUE_DELETE, |
|---|
| 102 | ATVALUE_DELIMITER, |
|---|
| 103 | ATVALUE_DISPLAY, |
|---|
| 104 | ATVALUE_EXIT, |
|---|
| 105 | ATVALUE_EXPIRE, |
|---|
| 106 | ATVALUE_EXPORT, |
|---|
| 107 | ATVALUE_EXPRESSION, |
|---|
| 108 | ATVALUE_EXTRACT, |
|---|
| 109 | ATVALUE_FILE, |
|---|
| 110 | ATVALUE_FLAG, |
|---|
| 111 | ATVALUE_FLDDIR, |
|---|
| 112 | ATVALUE_FREQ, |
|---|
| 113 | ATVALUE_FREQSUM, |
|---|
| 114 | ATVALUE_FROM, |
|---|
| 115 | ATVALUE_FST, |
|---|
| 116 | ATVALUE_FULLINV, |
|---|
| 117 | ATVALUE_GIZMO, |
|---|
| 118 | ATVALUE_HL, |
|---|
| 119 | ATVALUE_IMPORT, |
|---|
| 120 | ATVALUE_INDEXLIST, |
|---|
| 121 | ATVALUE_INVERTED, |
|---|
| 122 | ATVALUE_INVLOAD, |
|---|
| 123 | ATVALUE_JUMP, |
|---|
| 124 | ATVALUE_KEY, |
|---|
| 125 | ATVALUE_KEYFIELD, |
|---|
| 126 | ATVALUE_KEYLENGTH, |
|---|
| 127 | ATVALUE_KEYRANGE, |
|---|
| 128 | ATVALUE_KEYS, |
|---|
| 129 | ATVALUE_KEYSDB, |
|---|
| 130 | ATVALUE_LIST, |
|---|
| 131 | ATVALUE_LOAD, |
|---|
| 132 | ATVALUE_LOCKID, |
|---|
| 133 | ATVALUE_MASTER, |
|---|
| 134 | ATVALUE_MAXLK, |
|---|
| 135 | ATVALUE_MFN, |
|---|
| 136 | ATVALUE_MFNRANGE, |
|---|
| 137 | ATVALUE_MSTSORT, |
|---|
| 138 | ATVALUE_OCC, |
|---|
| 139 | ATVALUE_OUTPUT, |
|---|
| 140 | ATVALUE_POSTING, |
|---|
| 141 | ATVALUE_POSTTAG, |
|---|
| 142 | ATVALUE_PREFIX, |
|---|
| 143 | ATVALUE_RELOAD, |
|---|
| 144 | ATVALUE_REPLACE, |
|---|
| 145 | ATVALUE_RESET, |
|---|
| 146 | ATVALUE_REVERSE, |
|---|
| 147 | ATVALUE_SEARCH, |
|---|
| 148 | ATVALUE_SKIP, |
|---|
| 149 | ATVALUE_SORT, |
|---|
| 150 | ATVALUE_STATUSDB, |
|---|
| 151 | ATVALUE_STATUSFILE, |
|---|
| 152 | ATVALUE_STW, |
|---|
| 153 | ATVALUE_SUFFIX, |
|---|
| 154 | ATVALUE_TEMPFILE, |
|---|
| 155 | ATVALUE_TASK, |
|---|
| 156 | ATVALUE_TO, |
|---|
| 157 | ATVALUE_TYPE, |
|---|
| 158 | ATVALUE_UCTAB, |
|---|
| 159 | ATVALUE_UNLOCK, |
|---|
| 160 | ATVALUE_UPDATE, |
|---|
| 161 | ATVALUE_WRITE, |
|---|
| 162 | /* 27.Nov.2000 */ |
|---|
| 163 | ATVALUE_PREFIX_HTMLPFT, |
|---|
| 164 | ATVALUE_SUFFIX_HTMLPFT, |
|---|
| 165 | /* 28.Nov.2000 */ |
|---|
| 166 | ATVALUE_FIRST_LINE, |
|---|
| 167 | /* 22.Feb.2001 */ |
|---|
| 168 | ATVALUE_ISISXML_STYLE, |
|---|
| 169 | ATVALUE_ISISXML_TABLE, |
|---|
| 170 | /* 05.Apr.2001 */ |
|---|
| 171 | ATVALUE_LOG, |
|---|
| 172 | |
|---|
| 173 | ATVALUE_LIST_QTT |
|---|
| 174 | } CPL_ATVALUE; /* attribute value */ |
|---|
| 175 | |
|---|
| 176 | typedef enum { |
|---|
| 177 | COMMENT_NORMAL, /* <!-- comment --> */ |
|---|
| 178 | COMMENT_PROCESS, /* <?xml version="1.0" ?> */ |
|---|
| 179 | COMMENT_DECLARE, /* <!DOCTYPE type SYSTEM "type.dtd"> */ |
|---|
| 180 | COMMENT_LIST_QTT |
|---|
| 181 | } CPL_COMMENT; /* comment */ |
|---|
| 182 | |
|---|
| 183 | typedef enum { |
|---|
| 184 | PART_HEADER, |
|---|
| 185 | PART_COMMAND, |
|---|
| 186 | PART_TEXT, |
|---|
| 187 | PART_LIST_QTT |
|---|
| 188 | } CPL_COMPILED_PART; /* compiled block */ |
|---|
| 189 | /* -------------------------------------------------------------- structures */ |
|---|
| 190 | typedef struct { |
|---|
| 191 | char *text; |
|---|
| 192 | int len; |
|---|
| 193 | } CPL_IDENTIFIER; /* identifier */ |
|---|
| 194 | |
|---|
| 195 | typedef union { |
|---|
| 196 | CPL_ELEMENT element; |
|---|
| 197 | CPL_ATTRIBUTE attribute; |
|---|
| 198 | } CPL_INDEX; /* index */ |
|---|
| 199 | |
|---|
| 200 | typedef struct { |
|---|
| 201 | CPL_TOKEN type; |
|---|
| 202 | CPL_INDEX index; |
|---|
| 203 | char *statment; |
|---|
| 204 | char *text; |
|---|
| 205 | } CPL_TOKEN_STRU; /* token */ |
|---|
| 206 | |
|---|
| 207 | typedef struct { |
|---|
| 208 | char *text; |
|---|
| 209 | CPL_ATVALUE atValue; |
|---|
| 210 | } CMD_ATTRIBUTE_STRU; /* attribute structure */ |
|---|
| 211 | |
|---|
| 212 | typedef struct command_stru { |
|---|
| 213 | CPL_ELEMENT element; /* CPL_CMD_COMPILED */ |
|---|
| 214 | CMD_ATTRIBUTE_STRU attributeList[ATTRIBUTE_LIST_QTT]; /* CPL_CMD_COMPILED */ |
|---|
| 215 | char *text; /* CPL_CMD_COMPILED */ |
|---|
| 216 | struct command_stru *sub; /* CPL_CMD_COMPILED */ |
|---|
| 217 | struct command_stru *prev; /* CPL_CMD_COMPILED */ |
|---|
| 218 | struct command_stru *next; /* CPL_CMD_COMPILED */ |
|---|
| 219 | struct command_stru *func; |
|---|
| 220 | void *altn; |
|---|
| 221 | BOOLEAN isCompiled; |
|---|
| 222 | } CPL_COMMAND; /* command */ |
|---|
| 223 | |
|---|
| 224 | typedef struct save_command_stru { |
|---|
| 225 | CPL_ELEMENT element; |
|---|
| 226 | CMD_ATTRIBUTE_STRU attributeList[ATTRIBUTE_LIST_QTT]; |
|---|
| 227 | char *text; |
|---|
| 228 | struct command_stru *sub; |
|---|
| 229 | struct command_stru *prev; |
|---|
| 230 | struct command_stru *next; |
|---|
| 231 | } CPL_CMD_COMPILED; /* command compiled */ |
|---|
| 232 | |
|---|
| 233 | typedef struct { |
|---|
| 234 | CPL_COMMAND *first; |
|---|
| 235 | CPL_COMMAND *last; |
|---|
| 236 | } CPL_CMD_LIST; /* command list */ |
|---|
| 237 | |
|---|
| 238 | typedef struct { |
|---|
| 239 | EFC_ERROR error; |
|---|
| 240 | BOOLEAN printSource; |
|---|
| 241 | char *pathSource; |
|---|
| 242 | char *compiledExt; |
|---|
| 243 | BOOLEAN cplStarted; |
|---|
| 244 | CPL_COMMAND *cmd; |
|---|
| 245 | } CPL_STRUCT; /* compiler */ |
|---|
| 246 | |
|---|
| 247 | typedef struct { |
|---|
| 248 | long versionNumber; |
|---|
| 249 | long aux1; |
|---|
| 250 | long aux2; |
|---|
| 251 | } CPL_COMPILED_HEADER; /* compiled header */ |
|---|
| 252 | /* -------------------------------------------------------------- prototypes */ |
|---|
| 253 | CPL_ERROR cplCompile (char *script,CPL_STRUCT *program); |
|---|
| 254 | BOOLEAN cplIsCompiled (CPL_STRUCT *program,char *scriptName); |
|---|
| 255 | CPL_ERROR cplLoadCompiled (char *loadFileName,CPL_STRUCT *program,CPL_COMMAND **cmd,CPL_CMD_LIST *cmdList); |
|---|
| 256 | CPL_ERROR cplSaveCompiled (CPL_STRUCT *program,char *saveFileName); |
|---|
| 257 | void cplFree (CPL_COMMAND *first); |
|---|
| 258 | int cplIdentifier (CPL_IDENTIFIER identList[],int listQtt,char *p); |
|---|
| 259 | void cplPrintCommandClose (CPL_COMMAND *cmd,BOOLEAN convLT); |
|---|
| 260 | void cplPrintCommand (CPL_COMMAND *cmd,BOOLEAN convLT); |
|---|
| 261 | void cplPrintScope (int scope); |
|---|