public class SchemaParser extends antlr.LLkParser implements SchemaParserTokenTypes
ProgressLexer,
as part of the process of interpreting Progress schema dump (*.df
) files. Builds a normalized AST meant to be compatible in areas
which have similar options and structures as the AST created by the
ProgressParser from Progress 4GL source code.
NOTE:
DO NOT MAKE MODIFICATIONS TO THE SOURCE FILE FOR THIS CLASS DIRECTLY.
This class is generated by ANTLR, using the schema.g grammar.
All changes must be made at the grammar level.
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String[] |
_tokenNames |
static antlr.collections.impl.BitSet |
_tokenSet_0 |
static antlr.collections.impl.BitSet |
_tokenSet_1 |
static antlr.collections.impl.BitSet |
_tokenSet_10 |
static antlr.collections.impl.BitSet |
_tokenSet_11 |
static antlr.collections.impl.BitSet |
_tokenSet_12 |
static antlr.collections.impl.BitSet |
_tokenSet_13 |
static antlr.collections.impl.BitSet |
_tokenSet_14 |
static antlr.collections.impl.BitSet |
_tokenSet_15 |
static antlr.collections.impl.BitSet |
_tokenSet_16 |
static antlr.collections.impl.BitSet |
_tokenSet_17 |
static antlr.collections.impl.BitSet |
_tokenSet_18 |
static antlr.collections.impl.BitSet |
_tokenSet_2 |
static antlr.collections.impl.BitSet |
_tokenSet_3 |
static antlr.collections.impl.BitSet |
_tokenSet_4 |
static antlr.collections.impl.BitSet |
_tokenSet_5 |
static antlr.collections.impl.BitSet |
_tokenSet_6 |
static antlr.collections.impl.BitSet |
_tokenSet_7 |
static antlr.collections.impl.BitSet |
_tokenSet_8 |
static antlr.collections.impl.BitSet |
_tokenSet_9 |
static java.lang.Class |
AST_CLASS
Name of the specialized AST class to use when parsing
|
private java.lang.String |
currentTable
Track the name of the table currently being parsed
|
private antlr.TokenStreamHiddenTokenFilter |
hidden
Filter implementation to allow access to hidden tokens
|
private static ConversionStatus |
LOG
Logger.
|
private static boolean |
unixEsc
Remember our platform so that we can properly parse strings containing escapes.
|
astFactory, inputState, returnAST, tokenNames, tokenTypeToASTClassMap, traceDepthABBREVIATED, AGGREGATE, ALTER_TABLE, AMBIGUOUS, ANNOTATION, ANY_LOCK, AREA, ARGUMENTS, AS_BUTTON, ASSIGN, ASSIGNMENT, AST_NODE, AT, ATTR_CHAR, ATTR_CLASS, ATTR_COM_HANDLE, ATTR_DATE, ATTR_DATETIME, ATTR_DATETIME_TZ, ATTR_DEC, ATTR_HANDLE, ATTR_INT, ATTR_INT64, ATTR_LOGICAL, ATTR_LONGCHAR, ATTR_MEMPTR, ATTR_POLY, ATTR_RAW, ATTR_RECID, ATTR_ROWID, BACKSLASH, BEGIN_ATTR, BEGIN_ATTR_METH, BEGIN_BUFFERTYPES, BEGIN_CALLGRAPH, BEGIN_FIELDTYPES, BEGIN_FUNCTYPES, BEGIN_FWD_EXTENSION, BEGIN_INDEX_MATCH_TYPES, BEGIN_LVALUE, BEGIN_METATYPES, BEGIN_METH, BEGIN_MULTIWORD, BEGIN_NATIVE_VARTYPES, BEGIN_OO_METH, BEGIN_RECORDTYPES, BEGIN_RESERVED, BEGIN_SCHEMA, BEGIN_SCHEMAKW, BEGIN_UNRESERVED, BEGIN_VARTYPES, BEGIN_WIDGETS, BEGINS_MATCH, BITWISE_AND, BITWISE_NOT, BITWISE_OR, BITWISE_XOR, BLOCK, BOGUS, BOOL_FALSE, BOOL_TRUE, BROKEN_PREPROC_ARG, BUFFER, BUFFER_SCOPE, CARET, CATEGORY, CHILD_PROCESS, CLASS_DEF, CLASS_EVENT, CLASS_NAME, CLIENT_WHERE, CLIENT_WHERE_SUBST, CLOSE_CURSOR, CLOSE_QUERY, CLOSE_STORED_PROCEDURE, CMT_CLOSE, CMT_OPEN, COLON, COLOR_PHRASE, COLUMN_LIST, COLUMN_REF, COM_INVOCATION, COM_METHOD, COM_OBJECT, COM_PARAMETER, COM_PROPERTY, COMMA, COMMAND_TEXT, COMMAND_TOKENS, COMMENT, CONNECT_OPTIONS, CONNECT_TEXT, CONSTRUCTOR, CONTENT_ARRAY, COPY_FROM_SB, COPY_TO_SB, CREATE_ALIAS, CREATE_BROWSE, CREATE_BUFFER, CREATE_CALL, CREATE_CLIENT_PRINCIPAL, CREATE_DATA_SOURCE, CREATE_DATABASE, CREATE_DATASET, CREATE_GENERIC_OCX, CREATE_INDEX, CREATE_OBJECT, CREATE_QUERY, CREATE_REPORT, CREATE_SAX_ATTRIBUTES, CREATE_SAX_READER, CREATE_SAX_WRITER, CREATE_SERVER, CREATE_SMTP_EMAIL, CREATE_SOAP_HEADER, CREATE_SOAP_HEADER_ENTRYREF, CREATE_SOCKET, CREATE_SRV_SOCKET, CREATE_TABLE, CREATE_TEMP_TABLE, CREATE_TIMER, CREATE_VIEW, CREATE_WIDGET, CREATE_WIDGET_POOL, CREATE_X_DOCUMENT, CREATE_X_NODEREF, CUSTOMER_SPECIFIC, CYCLE_ON_LIMIT, DATA_RELATION, DATA_SET, DATA_SOURCE, DATA_SOURCE_BUFFER, DATA_SOURCE_QUERY, DATABASE, DATE_LITERAL, DATETIME_LITERAL, DATETIME_TZ_LITERAL, DB_EVENT, DB_REF_NON_STATIC, DB_SYMBOL, DDE_ADVISE, DDE_EXECUTE, DDE_GET, DDE_INITIATE, DDE_REQUEST, DDE_SEND, DDE_SERVER, DDE_TERMINATE, DEC_LITERAL, DECLARE_CURSOR, DEFINE_BROWSE, DEFINE_BUFFER, DEFINE_BUTTON, DEFINE_DATA_SOURCE, DEFINE_DATASET, DEFINE_ENUM, DEFINE_EVENT, DEFINE_FIELD, DEFINE_FRAME, DEFINE_IMAGE, DEFINE_MENU, DEFINE_PARAMETER, DEFINE_PROPERTY, DEFINE_PROPERTY_GET, DEFINE_PROPERTY_SET, DEFINE_QUERY, DEFINE_RECTANGLE, DEFINE_STREAM, DEFINE_SUB_MENU, DEFINE_TEMP_TABLE, DEFINE_VARIABLE, DEFINE_WORK_TABLE, DELETE_ALIAS, DELETE_FROM, DELETE_OBJECT, DELETE_PROCEDURE, DELETE_WIDGET, DELETE_WIDGET_POOL, DESCRIPTION, DESTRUCTOR, DIGIT, DISABLE_TRIGGERS, DIVIDE, DLL_CALL_TYPE_LITERAL, DOT, DOTNET_DELEGATE, DROP_INDEX, DROP_TABLE, DROP_VIEW, DSTRING, DUMP_NAME, DYNAMIC, EDITING_BLOCK, EMBEDDED_ASSIGNMENT, EMBEDDED_SQL, EMPTY_TEMP_TABLE, END_ATTR, END_ATTR_METH, END_BUFFERTYPES, END_CALLGRAPH, END_FIELDTYPES, END_FUNCTYPES, END_FWD_EXTENSION, END_INDEX_MATCH_TYPES, END_LVALUE, END_METATYPES, END_METH, END_MULTIWORD, END_NATIVE_VARTYPES, END_OO_METH, END_RECORDTYPES, END_RESERVED, END_SCHEMA, END_SCHEMAKW, END_UNRESERVED, END_VARTYPES, END_WIDGETS, ENUM_DEF, ENUM_VALUE, EOF, EQUALITY_MATCH, EQUALS, EVENT, EVENT_LIST, EVENT_SIGNATURE, EXCLUSIVE_LOCK_LITERAL, EXPANDED_SCOPE, EXPORT_FIELD, EXPRESSION, EXTERNAL_PROCEDURE, FIELD_BIGINT, FIELD_BLOB, FIELD_BYTE, FIELD_CHAR, FIELD_CLASS, FIELD_CLOB, FIELD_COM_HANDLE, FIELD_DATE, FIELD_DATETIME, FIELD_DATETIME_TZ, FIELD_DEC, FIELD_DOUBLE, FIELD_FIXCHAR, FIELD_FLOAT, FIELD_HANDLE, FIELD_INT, FIELD_INT64, FIELD_LOGICAL, FIELD_RAW, FIELD_RECID, FIELD_ROWID, FIELD_SHORT, FIELD_TIME, FIELD_TIMESTAMP, FILE_RESOURCE, FILENAME, FILEROOT, FILTER_SPEC, FORM_ITEM, FORMAT_PHRASE, FRAME_ALLOC, FRAME_ELEMENT, FRAME_LOCK, FRAME_PHRASE, FRAME_SCOPE, FRAME_UNLOCK, FREE_REFERENCE, FROZEN, FUNC_CALL_TYPE_LITERAL, FUNC_CHAR, FUNC_CLASS, FUNC_COM_HANDLE, FUNC_DATE, FUNC_DATETIME, FUNC_DATETIME_TZ, FUNC_DEC, FUNC_HANDLE, FUNC_INT, FUNC_INT64, FUNC_LOGICAL, FUNC_LONGCHAR, FUNC_MEMPTR, FUNC_POLY, FUNC_RAW, FUNC_RECID, FUNC_ROWID, FUNCTION, FUNCTION_CALL, GET_ATTR_CTYPE_LITERAL, GROUP_BY, GT, GTE, HANDLE_TO, HEX_DIGIT, HEX_LITERAL, HIDDEN, IMPORT_FIELD, IN_WIDGET_POOL, INCLUDE_FILE, INCLUDES, INCREMENT, INDEX, INDEX_FIELD, INLINE_VAR_DEF, INLINE_VAR_DEF_ARRAY, INNER_BLOCK, INNER_JOIN, INPUT_CLEAR, INPUT_CLOSE, INPUT_FROM, INPUT_OUTPUT_CLOSE, INPUT_OUTPUT_THRU, INPUT_THRU, INSERT_INTO, INT_PROC, INTERFACE_DEF, INTERNAL_PROCEDURE, IO_OPTIONS, IPC_RESOURCE, IS_NOT_NULL, IS_NULL, JUNK, KEY_FIELD, KEY_FUNCTION, KW_3D, KW_ABBV, KW_ABORT, KW_ABS, KW_ABSTRACT, KW_ACC_CHG, KW_ACC_RCHG, KW_ACCEL, KW_ACCUM, KW_ACT_FORM, KW_ACT_WIN, KW_ACTIVATE, KW_ACTIVE, KW_ACTOR, KW_ADD, KW_ADD_1ST, KW_ADD_BCCA, KW_ADD_BUF, KW_ADD_C_C, KW_ADD_C_F, KW_ADD_C_N, KW_ADD_CC_A, KW_ADD_EVTP, KW_ADD_F_F, KW_ADD_F_N, KW_ADD_HENT, KW_ADD_IDXF, KW_ADD_IMG, KW_ADD_INVL, KW_ADD_L_C, KW_ADD_L_N, KW_ADD_LAST, KW_ADD_LIKF, KW_ADD_LIKI, KW_ADD_N_N, KW_ADD_NEWF, KW_ADD_NEWI, KW_ADD_PREL, KW_ADD_REL, KW_ADD_SLOC, KW_ADD_SRCB, KW_ADD_SUP, KW_ADD_TAB, KW_ADD_TO_A, KW_ADM_DATA, KW_ADM_TO, KW_ADVISE, KW_AFT_BUFF, KW_AFT_FILL, KW_AFT_R_F, KW_AFT_ROID, KW_AFT_TBL, KW_ALERT_BX, KW_ALIAS, KW_ALIGN, KW_ALL, KW_ALLW_C_S, KW_ALLW_REP, KW_ALT_KEY, KW_ALTER, KW_ALW_ON_T, KW_AMBIG, KW_ANALYZ, KW_AND, KW_ANSI_ONL, KW_ANY, KW_ANY_KEY, KW_ANY_PRT, KW_ANYWHERE, KW_APP_INFO, KW_APP_PW, KW_APP_UID, KW_APPEND, KW_APPEND_C, KW_APPEND_L, KW_APPL, KW_APPL_A_B, KW_APPL_CBK, KW_APPL_CID, KW_APPLY, KW_AREA, KW_ARR_MSG, KW_AS, KW_AS_THRD, KW_ASC, KW_ASCEND, KW_ASCII_2H, KW_ASK_OVER, KW_ASSEMBLY, KW_ASSIGN, KW_AST_ACTI, KW_ASYNC, KW_ASYNC_RC, KW_ASYNC_RH, KW_AT, KW_AT_W_BRW, KW_ATT_DSRC, KW_ATT_FILE, KW_ATT_PLST, KW_ATT_URL, KW_ATTR, KW_ATTR_NAM, KW_AUD_CTRL, KW_AUD_ENAB, KW_AUD_EV_C, KW_AUD_POL, KW_AUTHBLOB, KW_AUTHEN_F, KW_AUTHORZN, KW_AUTO_COM, KW_AUTO_D_X, KW_AUTO_DEL, KW_AUTO_END, KW_AUTO_GO, KW_AUTO_IND, KW_AUTO_RES, KW_AUTO_RET, KW_AUTO_SYN, KW_AUTO_VAL, KW_AUTO_ZAP, KW_AUTOMATC, KW_AVAIL, KW_AVERAGE, KW_AVG, KW_AVL_FMTS, KW_AVL_MSGS, KW_B_ENDIAN, KW_B4_BUFF, KW_B4_FILL, KW_B4_HIDE, KW_B4_R_F, KW_B4_ROWID, KW_B4_TABLE, KW_BACK_TAB, KW_BACKGRND, KW_BACKSP, KW_BACKWARD, KW_BAS_LOGG, KW_BASE_ADE, KW_BASE_KEY, KW_BASE64_D, KW_BASE64_E, KW_BATCH_MO, KW_BATCH_SZ, KW_BEG_EV_G, KW_BEGINS, KW_BELL, KW_BETWEEN, KW_BGCOLOR, KW_BGCOLRGB, KW_BIGINT, KW_BINARY, KW_BIND, KW_BIND_WH, KW_BL_BTNFN, KW_BL_CGR_K, KW_BL_CURGR, KW_BL_G_KEY, KW_BL_GADD, KW_BL_GCLR, KW_BL_GIFP, KW_BL_GIKEY, KW_BL_IADD, KW_BL_ITMFN, KW_BLANK, KW_BLK_IT_D, KW_BLK_LVL, KW_BLOB, KW_BLOCK, KW_BORD_B_C, KW_BORD_B_P, KW_BORD_L_C, KW_BORD_L_P, KW_BORD_R_C, KW_BORD_R_P, KW_BORD_T_C, KW_BORD_T_P, KW_BOTH, KW_BOTTOM, KW_BOTTOM_C, KW_BOX, KW_BOX_SEL, KW_BR_AGENT, KW_BR_IP, KW_BR_PORT, KW_BR_TZ, KW_BREAK, KW_BREAK_L, KW_BROWSE, KW_BTN_LIST, KW_BTOS, KW_BUF_COMP, KW_BUF_COPY, KW_BUF_CREA, KW_BUF_DEL, KW_BUF_FLD, KW_BUF_GRPI, KW_BUF_GRPN, KW_BUF_HNDL, KW_BUF_NAME, KW_BUF_PARI, KW_BUF_REL, KW_BUF_TENI, KW_BUF_TENN, KW_BUF_VAL, KW_BUF_VLID, KW_BUFFER, KW_BUFFER_C, KW_BUFFER_L, KW_BUFPOOL, KW_BUFRPOOL, KW_BUILD_TR, KW_BUTTON, KW_BY, KW_BY_PTR, KW_BY_REF, KW_BY_VALUE, KW_BY_VAR_P, KW_BYTE, KW_BYTES_R, KW_BYTES_W, KW_C_NOD_D, KW_C_T_V_N, KW_CACHE, KW_CACHE_SZ, KW_CALBGCLR, KW_CALCUFMT, KW_CALENDAR, KW_CALFGCLR, KW_CALFMTST, KW_CALL, KW_CALL_NAM, KW_CALL_TYP, KW_CALLBACK, KW_CALTITBG, KW_CALTITFG, KW_CALTRLFG, KW_CALUPDWN, KW_CALVALUE, KW_CAN_CREA, KW_CAN_DEL, KW_CAN_DO, KW_CAN_DUMP, KW_CAN_FIND, KW_CAN_LOAD, KW_CAN_QRY, KW_CAN_READ, KW_CAN_SET, KW_CAN_WRT, KW_CANC_BRK, KW_CANCEL_B, KW_CANCEL_P, KW_CANCEL_R, KW_CANCELLD, KW_CAPFNT, KW_CAPFNTSZ, KW_CAPS, KW_CARE_PNT, KW_CASE, KW_CASE_SEN, KW_CAST, KW_CATCH, KW_CATEGORY, KW_CBIT, KW_CDECL, KW_CEASE, KW_CENTER, KW_CFG_NAME, KW_CHAINED, KW_CHAR, KW_CHAR_LEN, KW_CHARSET, KW_CHART, KW_CHECK, KW_CHECK_AM, KW_CHECK_BO, KW_CHECKED, KW_CHLD_BUF, KW_CHLD_NUM, KW_CHOICES, KW_CHOOSE, KW_CHR, KW_CLASS, KW_CLEA_TAB, KW_CLEA_WIN, KW_CLEAR, KW_CLIP, KW_CLN_IP, KW_CLN_PORT, KW_CLN_TIME, KW_CLN_TZ, KW_CLNT_C_I, KW_CLNT_DIS, KW_CLNT_PRL, KW_CLNT_TTY, KW_CLNT_TYP, KW_CLNT_WS, KW_CLOB, KW_CLOB_COL, KW_CLOB_CP, KW_CLOB_TYP, KW_CLONE_ND, KW_CLOSE, KW_CLOSE_AP, KW_CLOSE_LG, KW_CLR_ALL, KW_CLR_AP_C, KW_CLR_ATTL, KW_CLR_BCCL, KW_CLR_CC_L, KW_CLR_EMBL, KW_CLR_LOG, KW_CLR_NIML, KW_CLR_NODS, KW_CLR_S_AR, KW_CLR_SEL, KW_CLR_TABS, KW_CLR_TO_L, KW_CLS_TYPE, KW_CNCL_R_A, KW_CNTRL_BX, KW_CNTRL_FR, KW_CNTRL_NM, KW_CODE, KW_CODEBASE, KW_COL, KW_COL_BGC, KW_COL_CP, KW_COL_DC, KW_COL_FGC, KW_COL_FONT, KW_COL_L_SA, KW_COL_LAB, KW_COL_MOV, KW_COL_NODE, KW_COL_OF, KW_COL_PFC, KW_COL_R_O, KW_COL_RES, KW_COL_SCR, KW_COL_SRT, KW_COLL_A_E, KW_COLL_ALL, KW_COLLATE, KW_COLON, KW_COLON_AL, KW_COLOR, KW_COLR_TAB, KW_COLUMNS, KW_COM_DATA, KW_COM_HNDL, KW_COM_SELF, KW_COMBO_BX, KW_COMMAND, KW_COMPARE, KW_COMPARES, KW_COMPILE, KW_COMPILER, KW_COMPLETE, KW_CONN, KW_CONN_ED, KW_CONNTYPE, KW_CONSTRUC, KW_CONTAINS, KW_CONTENTS, KW_CONTROL, KW_CONTROLS, KW_CONVERT, KW_COOKIE_D, KW_COPY, KW_COUNT, KW_COUNT_OF, KW_COVERAGE, KW_CP, KW_CP_CVT, KW_CPCASE, KW_CPCOLL, KW_CPINTERN, KW_CPLOG, KW_CPPRINT, KW_CPRCODEI, KW_CPRCODEO, KW_CPSTREAM, KW_CPTERM, KW_CPY_DSET, KW_CPY_LOB, KW_CPY_SATR, KW_CPY_TTBL, KW_CR_LK_SQ, KW_CRC, KW_CRC_VAL, KW_CRE_IMAG, KW_CREAT_LK, KW_CREAT_ND, KW_CREAT_NN, KW_CREAT_OA, KW_CREAT_RL, KW_CREAT_SN, KW_CREAT_TF, KW_CREATE, KW_CRT_COL, KW_CRT_MIMG, KW_CTOS, KW_CTX, KW_CTX_H, KW_CTX_H_F, KW_CTX_H_ID, KW_CTX_PATH, KW_CTX_POP, KW_CUR_CHAR, KW_CUR_CHG, KW_CUR_COL, KW_CUR_DATE, KW_CUR_DOWN, KW_CUR_ENV, KW_CUR_ITER, KW_CUR_LANG, KW_CUR_LEFT, KW_CUR_LINE, KW_CUR_OFF, KW_CUR_QRY, KW_CUR_R_M, KW_CUR_RES, KW_CUR_RGHT, KW_CUR_RQI, KW_CUR_RSI, KW_CUR_UP, KW_CUR_VAL, KW_CUR_WIN, KW_CURR_TAB, KW_CURRENCY, KW_CURRENT, KW_CURSOR, KW_CUT, KW_CVT_2OFF, KW_CVT_3D_C, KW_CVT_DT, KW_CYCLE, KW_DATA_BND, KW_DATA_E_R, KW_DATA_REL, KW_DATA_SCM, KW_DATA_SM, KW_DATA_SRC, KW_DATA_SRI, KW_DATABASE, KW_DATASET, KW_DATASRV, KW_DATATYPE, KW_DATE, KW_DATE_FMT, KW_DATE_SEP, KW_DATE_TZ, KW_DATETIME, KW_DAY, KW_DB_CTXT, KW_DB_LIST, KW_DB_REF, KW_DB_REM_H, KW_DBCOLL, KW_DBCP, KW_DBG_ALRT, KW_DBG_LST, KW_DBNAME, KW_DBPARAM, KW_DBREST, KW_DBTASKID, KW_DBTYPE, KW_DBVERS, KW_DCLK_EXP, KW_DCOLOR, KW_DD_OTREE, KW_DDE, KW_DDE_ERR, KW_DDE_ID, KW_DDE_ITEM, KW_DDE_NAME, KW_DDE_NOTI, KW_DDE_TOPI, KW_DE_REGIS, KW_DEBLANK, KW_DEBUG, KW_DEBUGGER, KW_DEC, KW_DEC_SEP, KW_DECIMALS, KW_DECL_NSP, KW_DECLARE, KW_DECRYPT, KW_DEF_ACTN, KW_DEF_BUFH, KW_DEF_COMM, KW_DEF_EXTN, KW_DEF_NOXL, KW_DEF_POP, KW_DEF_STR, KW_DEF_UEVM, KW_DEF_VAL, KW_DEF_WIN, KW_DEFAULT, KW_DEFINE, KW_DEFLT_BN, KW_DEL_C_R, KW_DEL_CHAR, KW_DEL_COL, KW_DEL_COOK, KW_DEL_E_L, KW_DEL_FLD, KW_DEL_H_EN, KW_DEL_LINE, KW_DEL_NODE, KW_DEL_PROC, KW_DEL_R_L, KW_DEL_S_C, KW_DEL_S_R, KW_DEL_S_RS, KW_DEL_WORD, KW_DELEGATE, KW_DELETE, KW_DELIMIT, KW_DESCEND, KW_DESCR, KW_DESEL_FR, KW_DESEL_R, KW_DESEL_SR, KW_DESELCTN, KW_DESTRUCT, KW_DET_DSRC, KW_DEVICEID, KW_DIALOG, KW_DICT, KW_DIR, KW_DIRECTRY, KW_DIS_A_ZA, KW_DIS_CEDT, KW_DIS_D_TR, KW_DIS_L_TR, KW_DIS_REDR, KW_DIS_STRP, KW_DISABL_C, KW_DISABLE, KW_DISABLED, KW_DISCONN, KW_DISP, KW_DISP_MSG, KW_DISP_TYP, KW_DISP_TZ, KW_DISPATCH, KW_DISTINCT, KW_DLL_C_T, KW_DMP_NAME, KW_DO, KW_DOMAIN_D, KW_DOMAIN_N, KW_DOMAIN_T, KW_DOS, KW_DOUBLE, KW_DOWN, KW_DRAG_EN, KW_DRAG_NOD, KW_DRAG_OVR, KW_DRAGDROP, KW_DROP, KW_DROP_DWN, KW_DROP_FN, KW_DROP_LST, KW_DROP_TAR, KW_DSET_HND, KW_DSL_MGR, KW_DUMP, KW_DUMP_LGN, KW_DYN_CAST, KW_DYN_CURV, KW_DYN_ENUM, KW_DYN_FUNC, KW_DYN_INVK, KW_DYN_NEW, KW_DYN_NEXV, KW_DYN_PROP, KW_DYNAMIC, KW_E_PROC_C, KW_EACH, KW_ECHO, KW_EDGE_C, KW_EDGE_P, KW_EDIT_B_T, KW_EDIT_C_P, KW_EDIT_C_U, KW_EDIT_CLR, KW_EDIT_CPY, KW_EDIT_CUT, KW_EDIT_PAS, KW_EDIT_TAB, KW_EDIT_UND, KW_EDITING, KW_EDITOR, KW_EH_FL, KW_EH_SR, KW_ELSE, KW_EMB_FILE, KW_EMB_URL, KW_EMPTY, KW_EMPTY_DS, KW_EMPTY_SN, KW_EMPTY_TT, KW_ENABLE, KW_ENABLE_C, KW_ENABLE_E, KW_ENABLED, KW_ENC_AMK, KW_ENC_SALT, KW_ENCODE, KW_ENCODING, KW_ENCRYPT, KW_END, KW_END_B_SN, KW_END_DOC, KW_END_ELEM, KW_END_ERR, KW_END_EV_G, KW_END_F_D, KW_END_MOV, KW_END_RESZ, KW_END_RRES, KW_END_SEAR, KW_END_USER, KW_ENDKEY, KW_ENS_N_V, KW_ENT_EX_L, KW_ENT_TLST, KW_ENTER_MB, KW_ENTERED, KW_ENTRY, KW_ENUM, KW_EQ, KW_ERR_CODE, KW_ERR_COL, KW_ERR_OBJD, KW_ERR_ROW, KW_ERR_S_T, KW_ERR_STAT, KW_ERR_STR, KW_ERROR, KW_ESCAPE, KW_ETIME, KW_EVENTS, KW_EVT_ACTI, KW_EVT_GRID, KW_EVT_PROC, KW_EVT_TYPE, KW_EXC_LOCK, KW_EXCEPT, KW_EXCL_ID, KW_EXCL_WEB, KW_EXEC_LOG, KW_EXECUTE, KW_EXISTS, KW_EXIT, KW_EXITCODE, KW_EXP, KW_EXP_N_IC, KW_EXP_NODE, KW_EXP_ON_E, KW_EXP_SCLK, KW_EXPA_ALL, KW_EXPAND, KW_EXPANDBL, KW_EXPLICIT, KW_EXPORT, KW_EXPORT_P, KW_EXTENDED, KW_EXTENT, KW_EXTERN, KW_F_KEY_H, KW_FETCH, KW_FETCH_SR, KW_FGCOLOR, KW_FGCOLRGB, KW_FIELD, KW_FIL_C_D, KW_FIL_C_T, KW_FIL_INFO, KW_FIL_M_D, KW_FIL_M_T, KW_FIL_NAME, KW_FIL_OFF, KW_FIL_SIZE, KW_FIL_TYPE, KW_FILE, KW_FILL, KW_FILL_IN, KW_FILL_MOD, KW_FILL_WST, KW_FILLED, KW_FILTERS, KW_FINAL, KW_FINALLY, KW_FIND, KW_FIND_1ST, KW_FIND_BR, KW_FIND_CS, KW_FIND_CUR, KW_FIND_FD, KW_FIND_GLO, KW_FIND_LST, KW_FIND_NO, KW_FIND_NOD, KW_FIND_NXT, KW_FIND_PO, KW_FIND_PRV, KW_FIND_SEL, KW_FIND_UNI, KW_FIND_WA, KW_FINDER, KW_FIR_DSET, KW_FIRST, KW_FIRST_AR, KW_FIRST_BU, KW_FIRST_CH, KW_FIRST_CO, KW_FIRST_DS, KW_FIRST_FM, KW_FIRST_N, KW_FIRST_OB, KW_FIRST_OF, KW_FIRST_PR, KW_FIRST_QR, KW_FIRST_SO, KW_FIRST_SR, KW_FIRST_SS, KW_FIRST_TI, KW_FIT_LCOL, KW_FIX_C_L, KW_FIX_CP, KW_FIXCHAR, KW_FIXD_ONL, KW_FLAGS, KW_FLAT_BUT, KW_FLD_TRG, KW_FLOAT, KW_FLTR_MAP, KW_FMT_DT, KW_FMT_SA, KW_FNT_BOLD, KW_FNT_ITAL, KW_FNT_NAME, KW_FNT_SIZE, KW_FNT_UNDL, KW_FOC_ASEL, KW_FOC_NKEY, KW_FOC_NODE, KW_FOCUS, KW_FOCUS_R, KW_FOCUS_RS, KW_FONT, KW_FONT_TAB, KW_FOR, KW_FORCE_F, KW_FORE, KW_FORM, KW_FORM_INP, KW_FORM_LIN, KW_FORMAT, KW_FORMATTE, KW_FORWARD, KW_FR_COL, KW_FR_DB, KW_FR_DOWN, KW_FR_FIELD, KW_FR_FILE, KW_FR_INDEX, KW_FR_LINE, KW_FR_NAME, KW_FR_ROW, KW_FR_SPACE, KW_FR_VAL, KW_FR_X, KW_FR_Y, KW_FRAGMENT, KW_FRAME, KW_FREQ, KW_FROM, KW_FROM_CHR, KW_FROM_CUR, KW_FROM_PIX, KW_FROZEN, KW_FS_NKEY, KW_FS_NODE, KW_FULL_H_C, KW_FULL_H_P, KW_FULL_W_C, KW_FULL_W_P, KW_FULLPATH, KW_FUNC_C_T, KW_FUNCT, KW_FV_NODE, KW_FWD_DRIV, KW_FWD_LOGF, KW_FWD_ONLY, KW_G_C_BGCO, KW_G_C_FGCO, KW_G_COL_P, KW_G_COL_W, KW_GEN_MD5, KW_GEN_PBEK, KW_GEN_PBES, KW_GEN_RNDK, KW_GEN_UUID, KW_GET, KW_GET_1ST, KW_GET_A_CT, KW_GET_A_N, KW_GET_ATTL, KW_GET_ATTR, KW_GET_B_A, KW_GET_B_OR, KW_GET_BCCL, KW_GET_BDAT, KW_GET_BITS, KW_GET_BLUE, KW_GET_BR_C, KW_GET_BUFH, KW_GET_BYTE, KW_GET_BYTS, KW_GET_C_S, KW_GET_CBPC, KW_GET_CBPN, KW_GET_CC_L, KW_GET_CFG, KW_GET_CFGV, KW_GET_CGI, KW_GET_CGIL, KW_GET_CGIV, KW_GET_CGL, KW_GET_CGLV, KW_GET_CHG, KW_GET_CHLD, KW_GET_CLL, KW_GET_CLNT, KW_GET_CODP, KW_GET_COLL, KW_GET_COOK, KW_GET_CREL, KW_GET_CUR, KW_GET_D_E, KW_GET_D_F, KW_GET_DBCL, KW_GET_DBL, KW_GET_DIR, KW_GET_DS_B, KW_GET_DYN, KW_GET_EMBL, KW_GET_ERRC, KW_GET_ERRR, KW_GET_FCN, KW_GET_FILE, KW_GET_FLD, KW_GET_FLT, KW_GET_FNAM, KW_GET_FOFF, KW_GET_GRN, KW_GET_HD_E, KW_GET_I64, KW_GET_IBNN, KW_GET_IBQN, KW_GET_ITER, KW_GET_K_V, KW_GET_L_V, KW_GET_LAST, KW_GET_LIC, KW_GET_LNBI, KW_GET_LONG, KW_GET_LPRM, KW_GET_MOP, KW_GET_MSG, KW_GET_MSGG, KW_GET_MSGS, KW_GET_N_AT, KW_GET_N_BG, KW_GET_N_FG, KW_GET_N_HC, KW_GET_N_N, KW_GET_NEXT, KW_GET_NLEV, KW_GET_NODE, KW_GET_NSN, KW_GET_NTXT, KW_GET_NUM, KW_GET_NVV, KW_GET_PAR, KW_GET_PARN, KW_GET_PREV, KW_GET_PROP, KW_GET_PRT, KW_GET_PSN, KW_GET_PTR, KW_GET_QNBI, KW_GET_R_R, KW_GET_RED, KW_GET_REL, KW_GET_RGB, KW_GET_S_O, KW_GET_SELW, KW_GET_SER, KW_GET_SHRT, KW_GET_SIG, KW_GET_SIMG, KW_GET_SNC, KW_GET_SRCB, KW_GET_STR, KW_GET_SZ, KW_GET_T_S, KW_GET_TBI, KW_GET_TBNN, KW_GET_TBQN, KW_GET_THCH, KW_GET_THPX, KW_GET_TI, KW_GET_TNOD, KW_GET_TO_L, KW_GET_TOPB, KW_GET_TWCH, KW_GET_TWPX, KW_GET_U_F, KW_GET_UBI, KW_GET_UL, KW_GET_USHT, KW_GET_VAL, KW_GET_VBI, KW_GET_VBNN, KW_GET_VBQN, KW_GET_WAIT, KW_GET_WKDR, KW_GETATTRI, KW_GETCLASS, KW_GLOBAL, KW_GO, KW_GO_ON, KW_GO_PEND, KW_GOTO, KW_GRANT, KW_GRAPHIC, KW_GRD_F_H, KW_GRD_F_V, KW_GRD_SNAP, KW_GRD_UHC, KW_GRD_UHP, KW_GRD_UWC, KW_GRD_UWP, KW_GRD_VIS, KW_GROUP, KW_GROUP_BX, KW_GT, KW_GTE, KW_GUID, KW_GW, KW_H_SCRL_P, KW_HANDLE, KW_HANDLER, KW_HAS_LOBS, KW_HAS_REC, KW_HAVING, KW_HEADER, KW_HEIGHT_C, KW_HEIGHT_P, KW_HELP, KW_HELP_SA, KW_HELP_TOP, KW_HEX_DECD, KW_HEX_ENCD, KW_HID_FLD, KW_HID_FLDL, KW_HIDDEN, KW_HIDE, KW_HINT, KW_HIT_TEST, KW_HIT_TFWD, KW_HOME, KW_HONOR_PK, KW_HONOR_RK, KW_HORIZ, KW_HOST_B_O, KW_HTML_BWS, KW_HTML_CHS, KW_HTML_ENC, KW_HTML_EOL, KW_HTML_EOP, KW_HTML_FRB, KW_HTML_FRE, KW_HTML_H_B, KW_HTML_H_E, KW_HTML_T_B, KW_HTML_T_E, KW_HTMLERR, KW_HWND, KW_HYPERLNK, KW_ICFPARM, KW_ICON, KW_IDEPHWND, KW_IDEWNTYP, KW_IDX_FLD, KW_IDX_HINT, KW_IDX_INFO, KW_IDX_REPO, KW_IF, KW_IGN_CMOD, KW_IL_BGCOL, KW_IL_HEIGH, KW_IL_IMG, KW_IL_LIST, KW_IL_MASK, KW_IL_OVER, KW_IL_UMASK, KW_IL_WIDTH, KW_IMAGE, KW_IMG_DOWN, KW_IMG_INS, KW_IMG_LIST, KW_IMG_ONLY, KW_IMG_SZ, KW_IMG_SZ_C, KW_IMG_SZ_P, KW_IMG_UP, KW_IMM_DISP, KW_IMP_NODE, KW_IMP_PRNC, KW_IMPLEMTS, KW_IMPORT, KW_IN, KW_IN_HNDL, KW_IN_OUT, KW_INACTIVE, KW_INC_EX_I, KW_INCR, KW_INDENT, KW_INDEX, KW_INDICAT, KW_INFO, KW_INH_BGC, KW_INH_FGC, KW_INHERITS, KW_INIT, KW_INIT_C_P, KW_INIT_D_T, KW_INIT_DIR, KW_INIT_FLT, KW_INIT_SA, KW_INIT_SES, KW_INITIATE, KW_INNER, KW_INNER_C, KW_INNER_L, KW_INPT_VAL, KW_INPUT, KW_INS_ATTR, KW_INS_B4, KW_INS_BTAB, KW_INS_COL, KW_INS_FILE, KW_INS_FLD, KW_INS_FLDD, KW_INS_FLDL, KW_INS_MODE, KW_INS_ROW, KW_INS_STR, KW_INS_TAB, KW_INSERT, KW_INST_PRC, KW_INT, KW_INT_ENT, KW_INT64, KW_INTERFAC, KW_INTERVAL, KW_INTO, KW_INVOKE, KW_IP_TIME, KW_IS, KW_IS_ATTR, KW_IS_C_VIS, KW_IS_CLASS, KW_IS_COLCP, KW_IS_CP_FX, KW_IS_DB_MT, KW_IS_JSON, KW_IS_LEAD, KW_IS_M_TEN, KW_IS_MSEL, KW_IS_N_EXP, KW_IS_OPEN, KW_IS_P_SET, KW_IS_PART, KW_IS_R_SEL, KW_IS_SEL, KW_IS_XML, KW_ISO_DATE, KW_ITEM, KW_ITEM_ROW, KW_ITER_CHG, KW_IUNKNOWN, KW_JAVA, KW_JOIN, KW_JOIN_BY, KW_KBLABEL, KW_KEEP_CON, KW_KEEP_MSG, KW_KEEP_SEC, KW_KEEP_TAB, KW_KEEP_ZOR, KW_KEY, KW_KEYCODE, KW_KEYFUNC, KW_KEYLAB, KW_KEYS, KW_KPAD_CLE, KW_KPAD_HOT, KW_KPAD_QRY, KW_KW, KW_KW_ALL, KW_L_ENDIAN, KW_L_TRIM, KW_LAB_BGC, KW_LAB_DC, KW_LAB_FGC, KW_LAB_FONT, KW_LAB_H_C, KW_LAB_PFC, KW_LABEL, KW_LABEL_SA, KW_LABELS, KW_LANDSCAP, KW_LANGUAGE, KW_LARGE, KW_LAST, KW_LAST_AR, KW_LAST_BAT, KW_LAST_CH, KW_LAST_EVT, KW_LAST_FRM, KW_LAST_OBJ, KW_LAST_OF, KW_LAST_PRC, KW_LAST_SOC, KW_LAST_SRV, KW_LAST_SS, KW_LAST_TI, KW_LASTKEY, KW_LC, KW_LCD_REFR, KW_LCD_SWIN, KW_LCD_WSTR, KW_LCHR_2NV, KW_LDBNAME, KW_LEAVE, KW_LEFT, KW_LEFT_AL, KW_LEFT_END, KW_LEFT_MC, KW_LEFT_MD, KW_LEFT_MDC, KW_LEFT_MU, KW_LENGTH, KW_LG_2_SM, KW_LIB, KW_LIB_C_C, KW_LIKE, KW_LIKE_SEQ, KW_LINE, KW_LINE_CNT, KW_LIST_ITM, KW_LIST_PNM, KW_LISTING, KW_LISTINGS, KW_LIT_QSTN, KW_LOAD, KW_LOAD_DMN, KW_LOAD_I_D, KW_LOAD_I_I, KW_LOAD_I_U, KW_LOAD_ICO, KW_LOAD_IMG, KW_LOAD_M_P, KW_LOAD_PIC, KW_LOAD_S_I, KW_LOADCTRL, KW_LOB_AREA, KW_LOB_BYTE, KW_LOB_DIR, KW_LOB_SIZE, KW_LOC_C_N, KW_LOC_HOST, KW_LOC_L_N, KW_LOC_NAME, KW_LOC_P_ID, KW_LOC_PORT, KW_LOC_S_ID, KW_LOC_TYPE, KW_LOC_V_I, KW_LOCK_REG, KW_LOCKED, KW_LOG, KW_LOG_A_EV, KW_LOG_E_TS, KW_LOG_EN_T, KW_LOG_HOST, KW_LOG_ID, KW_LOG_MGR, KW_LOG_STAT, KW_LOG_THRS, KW_LOGF_NAM, KW_LOGG_LEV, KW_LOGICAL, KW_LOGOUT, KW_LONG, KW_LONGCHAR, KW_LOOKAHD, KW_LOOKUP, KW_LST_EVNT, KW_LST_PAIR, KW_LST_QRY, KW_LST_SET, KW_LST_WID, KW_LT, KW_LTE, KW_M_D_I_P, KW_M_U_I_P, KW_MACH_CLS, KW_MAINMENU, KW_MAN_HIGH, KW_MAND, KW_MAP, KW_MARG_EX, KW_MARG_H_C, KW_MARG_H_P, KW_MARG_W_C, KW_MARG_W_P, KW_MARK_NEW, KW_MARK_RS, KW_MATCHES, KW_MAX, KW_MAX_BTN, KW_MAX_CHAR, KW_MAX_D_G, KW_MAX_H_C, KW_MAX_H_P, KW_MAX_HT, KW_MAX_LVL, KW_MAX_ROWS, KW_MAX_SZ, KW_MAX_VAL, KW_MAX_W_C, KW_MAX_W_P, KW_MAX_WID, KW_MAXIMIZE, KW_MD5_DIG, KW_MD5_VAL, KW_MDL_MC, KW_MDL_MD, KW_MDL_MDC, KW_MDL_MU, KW_MEMBER, KW_MEMPTR, KW_MENU, KW_MENU_BAR, KW_MENU_DRP, KW_MENU_ITM, KW_MENU_KEY, KW_MENU_MOU, KW_MERGE_BF, KW_MERGE_CH, KW_MERGE_RC, KW_MESSAGES, KW_METHOD, KW_MF_DFR, KW_MF_DI, KW_MF_DIP, KW_MF_DL, KW_MF_DR, KW_MF_DT, KW_MF_DTAX, KW_MF_DTAXL, KW_MF_DTAXR, KW_MF_DTB, KW_MF_DTBL, KW_MF_DTBR, KW_MF_DTSX, KW_MF_GF, KW_MF_GFH, KW_MF_GFSD, KW_MF_GFSR, KW_MF_GPH, KW_MF_GPN, KW_MF_GPW, KW_MF_GTW, KW_MF_GXY, KW_MF_GZF, KW_MF_INIT, KW_MF_IR, KW_MF_MPDF, KW_MF_P2MU, KW_MF_RP, KW_MF_SF, KW_MF_SFC, KW_MF_SFH, KW_MF_SI, KW_MF_SIA, KW_MF_SLA, KW_MF_SLC, KW_MF_SLM, KW_MF_SLS, KW_MF_SNP, KW_MF_SNTL, KW_MF_SPF, KW_MF_SPN, KW_MF_SPNP, KW_MF_SPNT, KW_MF_SPO, KW_MF_SR, KW_MF_STA, KW_MF_STC, KW_MF_STS, KW_MF_SXY, KW_MF_SZF, KW_MIN, KW_MIN_BTN, KW_MIN_CWCH, KW_MIN_CWPX, KW_MIN_H_C, KW_MIN_H_P, KW_MIN_SCHM, KW_MIN_SZ, KW_MIN_VAL, KW_MIN_W_C, KW_MIN_W_P, KW_MNEMON, KW_MOD, KW_MODIFIED, KW_MODIFIRS, KW_MONTH, KW_MOU_MC, KW_MOU_MD, KW_MOU_MDC, KW_MOU_MU, KW_MOU_MVC, KW_MOU_MVD, KW_MOU_MVDC, KW_MOU_MVU, KW_MOU_PTR, KW_MOU_SC, KW_MOU_SD, KW_MOU_SDC, KW_MOU_SU, KW_MOU_XC, KW_MOU_XD, KW_MOU_XDC, KW_MOU_XU, KW_MOUSE, KW_MOV_2_B, KW_MOV_2_T, KW_MOV_2EOF, KW_MOV_A_T, KW_MOV_B_T, KW_MOV_COL, KW_MOVABLE, KW_MOVE, KW_MPE, KW_MPTR_2NV, KW_MS_CLICK, KW_MS_DBCLK, KW_MS_DOWN, KW_MS_MOVE, KW_MS_UP, KW_MSG, KW_MSG_AFNT, KW_MSG_AMSG, KW_MSG_AREA, KW_MSG_DIG, KW_MSG_LINE, KW_MSICON, KW_MSPNTNUM, KW_MTIME, KW_MULT_CMP, KW_MULT_KEY, KW_MULTI_IN, KW_MULTIPLE, KW_MUST_EXI, KW_MUST_UND, KW_N_AEDIT, KW_N_BEDIT, KW_N_CLICK, KW_N_COLED, KW_N_COLING, KW_N_EXPED, KW_N_EXPING, KW_N_HEIGHT, KW_N_KEY_ID, KW_NAME, KW_NAMESP_P, KW_NAMESP_U, KW_NATIVE, KW_NE, KW_NEEDS_AP, KW_NEEDS_PR, KW_NESTED, KW_NEW, KW_NEW_INST, KW_NEW_LBL, KW_NEW_LINE, KW_NEW_ROW, KW_NEW_SESS, KW_NEXT, KW_NEXT_COL, KW_NEXT_ERR, KW_NEXT_FR, KW_NEXT_PMT, KW_NEXT_RID, KW_NEXT_SIB, KW_NEXT_TAB, KW_NEXT_VAL, KW_NEXTWORD, KW_NNMSP_SL, KW_NO_APPLY, KW_NO_ARMSG, KW_NO_ASSGN, KW_NO_ATTR, KW_NO_ATTRL, KW_NO_AUTOV, KW_NO_BIND, KW_NO_BOX, KW_NO_COLS, KW_NO_CONS, KW_NO_CUR_V, KW_NO_CV_3D, KW_NO_CVT, KW_NO_DEBUG, KW_NO_DRAG, KW_NO_ECHO, KW_NO_EH_FL, KW_NO_EH_SR, KW_NO_EM_SP, KW_NO_EMBED, KW_NO_ERROR, KW_NO_FILL, KW_NO_FOCUS, KW_NO_HELP, KW_NO_HIDE, KW_NO_IDX_H, KW_NO_INHBG, KW_NO_INHFG, KW_NO_JOIN, KW_NO_LABEL, KW_NO_LOBS, KW_NO_LOCK, KW_NO_LOOKA, KW_NO_MAP, KW_NO_MSG, KW_NO_OVRRD, KW_NO_PAUSE, KW_NO_PRE, KW_NO_RET_V, KW_NO_ROW_M, KW_NO_SCH_M, KW_NO_SCR_V, KW_NO_SEP_C, KW_NO_SEPS, KW_NO_TAB_S, KW_NO_UNDL, KW_NO_UNDO, KW_NO_VALID, KW_NO_WAIT, KW_NO_WRAP, KW_NODE_BLD, KW_NODE_CHE, KW_NODE_CNT, KW_NODE_EXP, KW_NODE_ICO, KW_NODE_ID, KW_NODE_IDX, KW_NODE_KEY, KW_NODE_PAR, KW_NODE_TXT, KW_NODE_V2M, KW_NODE_VAL, KW_NODES, KW_NODV_2LC, KW_NON_SER, KW_NONE, KW_NORMAL, KW_NORMALZE, KW_NOT, KW_NOT_ACTV, KW_NOT_CS, KW_NOW, KW_NULL, KW_NULLALWD, KW_NUM_2RTN, KW_NUM_ALIA, KW_NUM_BUFF, KW_NUM_BUTT, KW_NUM_CH_R, KW_NUM_CHLN, KW_NUM_COL, KW_NUM_COPY, KW_NUM_D_P, KW_NUM_DBS, KW_NUM_DROP, KW_NUM_ENT, KW_NUM_FLD, KW_NUM_FMT, KW_NUM_FMTS, KW_NUM_HD_E, KW_NUM_ITER, KW_NUM_ITMS, KW_NUM_LK_C, KW_NUM_LNS, KW_NUM_LOGF, KW_NUM_MSG, KW_NUM_PARM, KW_NUM_PNTS, KW_NUM_REF, KW_NUM_REL, KW_NUM_REPL, KW_NUM_RES, KW_NUM_SEP, KW_NUM_SR, KW_NUM_SRCB, KW_NUM_SW, KW_NUM_TABS, KW_NUM_TOPB, KW_NUM_V_C, KW_NUMERIC, KW_OBJECT, KW_OCT_LEN, KW_OCX_MBTN, KW_OCX_MSHT, KW_OCX_MSX, KW_OCX_MSY, KW_OF, KW_OFF, KW_OFF_END, KW_OFF_HOME, KW_OK, KW_OK_CAN, KW_OLD, KW_OLE_AEFF, KW_OLE_CDRG, KW_OLE_DATF, KW_OLE_DD, KW_OLE_DEFC, KW_OLE_DGMD, KW_OLE_DGOV, KW_OLE_DRAG, KW_OLE_DRMD, KW_OLE_EFFE, KW_OLE_GIVF, KW_OLE_INVL, KW_OLE_NAML, KW_OLE_SETD, KW_OLE_STAT, KW_OLE_STDG, KW_OLE_X, KW_OLE_Y, KW_ON, KW_ON_FR_B, KW_ONLY, KW_OPEN, KW_OPEN_L_A, KW_OPEN_URL, KW_OPENHTML, KW_OPENMIME, KW_OPENPAGE, KW_OPENPOPU, KW_OPSYS, KW_OPTION, KW_OPTIONS, KW_OPTIONSF, KW_OR, KW_ORD_JOIN, KW_ORDER, KW_ORDINAL, KW_ORG_HAND, KW_ORG_ROID, KW_OS_APPND, KW_OS_CMD, KW_OS_COPY, KW_OS_DEL, KW_OS_DIR, KW_OS_DRV, KW_OS_ERR, KW_OS_G_ENV, KW_OS_MKDIR, KW_OS_REN, KW_OS_UID, KW_OS2, KW_OTHER, KW_OUT_HDR, KW_OUT_HH, KW_OUT_JOIN, KW_OUT_MSGS, KW_OUTER, KW_OUTPUT, KW_OUTPUTCT, KW_OVERLAY, KW_OVERRIDE, KW_OWN_DOC, KW_OWNER, KW_P2J_RC, KW_PAGE, KW_PAGE_B, KW_PAGE_DWN, KW_PAGE_LFT, KW_PAGE_NUM, KW_PAGE_RT, KW_PAGE_SZ, KW_PAGE_T, KW_PAGE_UP, KW_PAGE_WID, KW_PAGED, KW_PAR_BUFF, KW_PAR_FLDA, KW_PAR_FLDB, KW_PAR_IFLD, KW_PAR_IREL, KW_PAR_REL, KW_PAR_W_C, KW_PARENT, KW_PARM, KW_PARSE_ST, KW_PART_KEY, KW_PASCAL, KW_PASSWD_F, KW_PASTE, KW_PATHNAME, KW_PAUSE, KW_PB_APPEA, KW_PB_BRSTY, KW_PB_ENABL, KW_PB_MAX, KW_PB_MIN, KW_PB_ORIEN, KW_PB_SCROL, KW_PB_VALUE, KW_PBE_H_AL, KW_PBE_KEYR, KW_PDBNAME, KW_PERF, KW_PERSIST, KW_PFCOLOR, KW_PICK, KW_PICK_ARE, KW_PICK_BTH, KW_PIX_COL, KW_PIX_ROW, KW_PIXELS, KW_PK_PRIV, KW_PK_PROT, KW_POLY, KW_POP_MENU, KW_POP_ONLY, KW_PORTRAIT, KW_POS, KW_POSTMSG, KW_PRE_LBL, KW_PRECISN, KW_PREF_DS, KW_PREP_STR, KW_PREPARED, KW_PREPROC, KW_PRESEL, KW_PREV, KW_PREV_COL, KW_PREV_FR, KW_PREV_SIB, KW_PREV_T_I, KW_PREVWORD, KW_PRIM_P_P, KW_PRIMARY, KW_PRINT, KW_PRINTER, KW_PRIV_DAT, KW_PRIVATE, KW_PRIVILEG, KW_PRMT_FOR, KW_PRO_ARCH, KW_PROC, KW_PROC_C_T, KW_PROC_COM, KW_PROC_HND, KW_PROC_ST, KW_PROC_T_B, KW_PROC_TXT, KW_PROC_W_R, KW_PROCESS, KW_PROCNAME, KW_PROCTYPE, KW_PRODATAS, KW_PROFILER, KW_PROFILNG, KW_PROG_BAR, KW_PROG_SRC, KW_PROGNAME, KW_PROGRESS, KW_PROMPT, KW_PROMSGS, KW_PROPATH, KW_PROPERTY, KW_PROTECTD, KW_PROVER, KW_PROX_PWD, KW_PROX_UID, KW_PROXY, KW_PRS_C_D, KW_PRS_PROC, KW_PRT_C_H, KW_PRT_HDC, KW_PRT_NAME, KW_PRT_PORT, KW_PRT_SET, KW_PSC, KW_PUB_EVTS, KW_PUB_ID, KW_PUBLIC, KW_PUBLISH, KW_PUT, KW_PUT_BITS, KW_PUT_BYTE, KW_PUT_BYTS, KW_PUT_DBL, KW_PUT_FLT, KW_PUT_I64, KW_PUT_K_V, KW_PUT_LONG, KW_PUT_SHT, KW_PUT_STR, KW_PUT_UL, KW_PUT_USHT, KW_QRY_CLOS, KW_QRY_OFF, KW_QRY_OPEN, KW_QRY_PREP, KW_QRY_TUNE, KW_QUAL_UID, KW_QUE_MSG, KW_QUERY, KW_QUEST, KW_QUIT, KW_QUOTER, KW_R_INDEX, KW_R_TRIM, KW_RADIO_B, KW_RADIO_S, KW_RANDOM, KW_RAW, KW_RAW_TRAN, KW_RCOD_INF, KW_READ, KW_READ_AVL, KW_READ_E_N, KW_READ_FIL, KW_READ_JSN, KW_READ_ONL, KW_READ_RES, KW_READ_XML, KW_READ_XSC, KW_READKEY, KW_REAL, KW_REC_LEN, KW_RECALL, KW_RECID, KW_RECT, KW_RECURSE, KW_REF_ONLY, KW_REFR_A_P, KW_REFRABLE, KW_REFRESH, KW_REG_DMN, KW_REGISTER, KW_REJ_CHGS, KW_REJ_RCHG, KW_REJECTED, KW_REL_FLDS, KW_RELEASE, KW_RELS_ACT, KW_RELSESID, KW_REM_ATTR, KW_REM_CHLD, KW_REM_EVTP, KW_REM_HOST, KW_REM_NOCO, KW_REM_NODE, KW_REM_PORT, KW_REM_SUP, KW_REMOTE, KW_REP_CHLD, KW_REP_STXT, KW_REPEAT, KW_REPL_CRE, KW_REPL_DEL, KW_REPL_WRI, KW_REPLACE, KW_REPORT, KW_REPORTS, KW_REPOS, KW_REPOS_2I, KW_REPOS_2R, KW_REPOS_B, KW_REPOS_F, KW_REPOS_M, KW_REQ_INFO, KW_REQUEST, KW_RES_BASE, KW_RESET, KW_RESIZABL, KW_RESIZE, KW_RESORT, KW_REST_RID, KW_REST_ROW, KW_RESULT, KW_RESUME_D, KW_RET_2SD, KW_RET_INS, KW_RET_SHAP, KW_RET_VAL, KW_RET_VDT, KW_RET_VLT, KW_RETAIN, KW_RETRY, KW_RETRY_C, KW_RETURN, KW_RETURNS, KW_REV_FROM, KW_REVERT, KW_REVOKE, KW_RFRSH_UI, KW_RGB_VAL, KW_RIGHT, KW_RIGHT_AL, KW_ROLE, KW_ROLES, KW_ROUND, KW_ROUNDED, KW_ROUTINEL, KW_ROW, KW_ROW_CRT, KW_ROW_CRTD, KW_ROW_DEL, KW_ROW_DELD, KW_ROW_DISP, KW_ROW_ENTR, KW_ROW_H_C, KW_ROW_H_P, KW_ROW_LEAV, KW_ROW_MARK, KW_ROW_MODD, KW_ROW_OF, KW_ROW_RESZ, KW_ROW_STAT, KW_ROW_UMOD, KW_ROW_UPD, KW_ROWID, KW_RPT_ADDC, KW_RPT_CAP, KW_RPT_CSV, KW_RPT_DOCX, KW_RPT_DSGN, KW_RPT_GSRC, KW_RPT_GSRR, KW_RPT_HTML, KW_RPT_ICSV, KW_RPT_PDF, KW_RPT_RTF, KW_RPT_SRC, KW_RPT_XLS, KW_RPT_XLSX, KW_RSP_INFO, KW_RT_END, KW_RT_MC, KW_RT_MD, KW_RT_MDC, KW_RT_MU, KW_RTOPSYS, KW_RULE, KW_RULE_ROW, KW_RULE_Y, KW_RUN, KW_RUN_PROC, KW_RUN_W_O, KW_S_C_BGCO, KW_S_C_FGCO, KW_S_COL_C, KW_S_COL_W, KW_SAVE, KW_SAVE_AS, KW_SAVE_FIL, KW_SAVE_RCH, KW_SAVE_WST, KW_SAX_ATTR, KW_SAX_COMP, KW_SAX_PARE, KW_SAX_PARF, KW_SAX_PARN, KW_SAX_PARS, KW_SAX_READ, KW_SAX_RUNN, KW_SAX_UNIN, KW_SAX_WBEG, KW_SAX_WCOM, KW_SAX_WCON, KW_SAX_WELM, KW_SAX_WERR, KW_SAX_WIDL, KW_SAX_WRIT, KW_SAX_WTAG, KW_SCH_CHG, KW_SCH_LOC, KW_SCH_MARS, KW_SCH_PATH, KW_SCHEMA, KW_SCR_2CR, KW_SCR_2ITM, KW_SCR_2SR, KW_SCR_COL, KW_SCR_DELT, KW_SCR_HGHT, KW_SCR_LEFT, KW_SCR_MODE, KW_SCR_NODC, KW_SCR_NOT, KW_SCR_NTOP, KW_SCR_OFFS, KW_SCR_RPOS, KW_SCR_RT, KW_SCR_SCAL, KW_SCR_VERT, KW_SCR_WDTH, KW_SCR_WLNS, KW_SCREEN, KW_SCRN_IO, KW_SCRN_LNS, KW_SCRN_VAL, KW_SCROLL, KW_SCROLL_H, KW_SCROLL_V, KW_SCROLLBA, KW_SCROLLBL, KW_SCROLLIN, KW_SDBNAME, KW_SEAL, KW_SEAL_TST, KW_SEAR_SLF, KW_SEAR_TRG, KW_SEARCH, KW_SECTION, KW_SECUR_P, KW_SEEK, KW_SEL_ALL, KW_SEL_END, KW_SEL_FOCR, KW_SEL_LST, KW_SEL_NEXT, KW_SEL_NID, KW_SEL_NKEY, KW_SEL_NODE, KW_SEL_PREV, KW_SEL_ROW, KW_SEL_SFVN, KW_SEL_STRT, KW_SEL_TXT, KW_SELECT, KW_SELECTBL, KW_SELECTED, KW_SELECTN, KW_SELF, KW_SEND, KW_SEND_SQL, KW_SENSITIV, KW_SEP_CONN, KW_SEP_FGC, KW_SEPS, KW_SEQUENCE, KW_SERIALAB, KW_SERIALZH, KW_SERIALZN, KW_SERIALZR, KW_SERVER, KW_SESS_END, KW_SESSION, KW_SESSN_ID, KW_SET, KW_SET_A_CT, KW_SET_A_L, KW_SET_A_N, KW_SET_ACTR, KW_SET_ACTX, KW_SET_ATTR, KW_SET_B_OR, KW_SET_BLUE, KW_SET_BRK, KW_SET_BUF, KW_SET_C_IC, KW_SET_C_P, KW_SET_C_S, KW_SET_C_VI, KW_SET_CB_P, KW_SET_CBAC, KW_SET_CLNT, KW_SET_COMM, KW_SET_CONT, KW_SET_COOK, KW_SET_CPTM, KW_SET_DBCL, KW_SET_DYN, KW_SET_EVMO, KW_SET_F_D, KW_SET_GRN, KW_SET_IMGF, KW_SET_IMGH, KW_SET_IMGW, KW_SET_ISRC, KW_SET_JMOD, KW_SET_JSTX, KW_SET_JSTY, KW_SET_LSTK, KW_SET_M_UN, KW_SET_MSEL, KW_SET_N_BG, KW_SET_N_F, KW_SET_N_FG, KW_SET_N_HC, KW_SET_NODE, KW_SET_NTXT, KW_SET_ODST, KW_SET_OPT, KW_SET_PARM, KW_SET_PENW, KW_SET_PROP, KW_SET_PTR, KW_SET_R_P, KW_SET_RED, KW_SET_RGB, KW_SET_ROLL, KW_SET_RPOS, KW_SET_RRP, KW_SET_S_AR, KW_SET_S_O, KW_SET_SEL, KW_SET_SERD, KW_SET_SNC, KW_SET_SWIN, KW_SET_SZ, KW_SET_T_S, KW_SET_TBME, KW_SET_TN_I, KW_SET_TSTA, KW_SET_U_F, KW_SET_W_S, KW_SET_WAIT, KW_SET_WKDR, KW_SETTINGS, KW_SETUSER, KW_SH_LOCK, KW_SHA1_DIG, KW_SHARED, KW_SHORT, KW_SHOW_BUT, KW_SHOW_HDR, KW_SHOW_ITB, KW_SHOW_ST, KW_SHR_D_F, KW_SIDE_L, KW_SIDE_L_H, KW_SIGNATUR, KW_SILENT, KW_SIMPLE, KW_SING_RUN, KW_SINGLE, KW_SINGLTON, KW_SIZE, KW_SIZE_C, KW_SIZE_P, KW_SKIP, KW_SKIP_D_R, KW_SLIDER, KW_SMAL_ICO, KW_SMAL_TTL, KW_SMALLINT, KW_SMTP_EML, KW_SMTP_PW, KW_SMTP_VAL, KW_SMTPFROM, KW_SMTPHOST, KW_SMTPHTML, KW_SMTPPORT, KW_SMTPREPL, KW_SMTPSUBJ, KW_SMTPTEXT, KW_SMTPUSER, KW_SOAP_F, KW_SOAP_F_A, KW_SOAP_F_C, KW_SOAP_F_D, KW_SOAP_F_N, KW_SOAP_F_R, KW_SOAP_F_S, KW_SOAP_FMH, KW_SOAP_FSC, KW_SOAP_HDR, KW_SOAP_HER, KW_SOAP_VER, KW_SOCKET, KW_SOME, KW_SOR_C_C, KW_SOR_COLS, KW_SORT, KW_SORT_ASC, KW_SORT_MAP, KW_SORT_NUM, KW_SOURCE, KW_SPACE, KW_SPRSHEET, KW_SQL, KW_SQL_WID, KW_SQRT, KW_SRC_PROC, KW_SRV_C_B, KW_SRV_C_BR, KW_SRV_C_C, KW_SRV_C_I, KW_SRV_OP_M, KW_SRV_SOCK, KW_SSL_SRVN, KW_ST_2_FIT, KW_STANDALN, KW_START, KW_START_BS, KW_START_DC, KW_START_EL, KW_START_MV, KW_START_RR, KW_START_RS, KW_START_SC, KW_STARTING, KW_STAT_A_F, KW_STAT_DET, KW_STATIC, KW_STATUS, KW_STATUS_A, KW_STDCALL, KW_STOP, KW_STOP_AFT, KW_STOP_D, KW_STOP_PRS, KW_STOPPED, KW_STORPROC, KW_STR_VAL, KW_STR_XREF, KW_STREAM, KW_STRIC_ER, KW_STRICT, KW_STRING, KW_STRM_HND, KW_STRM_IO, KW_STUP_PAR, KW_SUB_AVG, KW_SUB_CNT, KW_SUB_M_H, KW_SUB_MAX, KW_SUB_MENU, KW_SUB_MIN, KW_SUB_TOT, KW_SUBSCRIB, KW_SUBSTIT, KW_SUBSTR, KW_SUBTYPE, KW_SUM, KW_SUP_NS_P, KW_SUP_PROC, KW_SUP_WARN, KW_SUPER, KW_SUPW_LST, KW_SYM_EN_A, KW_SYM_EN_I, KW_SYM_EN_K, KW_SYM_SUPP, KW_SYNCHRON, KW_SYS_A_B, KW_SYS_DLG, KW_SYS_HELP, KW_SYS_ID, KW_TAB, KW_TAB_CRCL, KW_TAB_HAND, KW_TAB_IDX, KW_TAB_LIST, KW_TAB_ML, KW_TAB_MOD, KW_TAB_NUM, KW_TAB_POS, KW_TAB_SCAN, KW_TAB_SHOW, KW_TAB_STOP, KW_TAB_TRG, KW_TABLE, KW_TABS, KW_TABSET, KW_TAG, KW_TAR_PROC, KW_TARGET, KW_TEMP_DIR, KW_TEMP_TAB, KW_TEN_ID, KW_TENNAME, KW_TERM, KW_TERM_HK, KW_TERMINAT, KW_TEXT, KW_TEXTEDIT, KW_THEN, KW_THIS_OBJ, KW_THIS_PRC, KW_THO_SEP, KW_THR_SAFE, KW_THROUGH, KW_THROW, KW_TIC_MARK, KW_TIME, KW_TIME_SRC, KW_TIMER, KW_TIMESTMP, KW_TIMEZONE, KW_TITL_BGC, KW_TITL_DC, KW_TITL_FGC, KW_TITL_FON, KW_TITLE, KW_TN_TOID, KW_TNOD_VAL, KW_TO, KW_TO_ROWID, KW_TODAY, KW_TOGGL_BX, KW_TOOLTIP, KW_TOOLTIPS, KW_TOP, KW_TOP_COL, KW_TOP_NAVQ, KW_TOP_ONLY, KW_TOPIC, KW_TOTAL, KW_TRAC_CHG, KW_TRACING, KW_TRAILING, KW_TRAN_I_P, KW_TRAN_MOD, KW_TRANS, KW_TRANSPAR, KW_TRC_FILT, KW_TREE_R_H, KW_TREELIST, KW_TREEVIEW, KW_TRIG_COL, KW_TRIG_NOD, KW_TRIGGER, KW_TRIGGERS, KW_TRIM, KW_TRUNC, KW_TT_PREP, KW_TTCP, KW_TXT_CURS, KW_TXT_SEG, KW_TXT_SEL, KW_TYPE, KW_TYPE_OF, KW_U_CTRL, KW_U_MSG, KW_U_PCTRL, KW_U_SERIAL, KW_UNBOX, KW_UNBUF, KW_UNDERLIN, KW_UNDO, KW_UNDO_T_S, KW_UNFORMAT, KW_UNION, KW_UNIQ_ID, KW_UNIQ_KEY, KW_UNIQ_MAT, KW_UNIQUE, KW_UNIX, KW_UNIX_END, KW_UNL_HID, KW_UNLOAD, KW_UNS_BYTE, KW_UNS_LONG, KW_UNS_SHRT, KW_UNSUBSCR, KW_UP, KW_UPD_ATTR, KW_UPDATE, KW_UPLOAD, KW_URL, KW_URL_DECO, KW_URL_ENCO, KW_URL_FLD, KW_URL_FLDL, KW_URL_FMT, KW_URL_PW, KW_URL_UID, KW_USE, KW_USE_DCT, KW_USE_FIL, KW_USE_IDX, KW_USE_REV, KW_USE_TXT, KW_USE_UND, KW_USE_WIDP, KW_USER_ID, KW_USERID, KW_USING, KW_USR_DATA, KW_UTC_OFF, KW_V_N_CNT, KW_V_R_CNT, KW_V_SCRL_P, KW_V6DISP, KW_V6FRAME, KW_VAL_CHG, KW_VAL_ENAB, KW_VAL_EVT, KW_VAL_EXPR, KW_VAL_HND, KW_VAL_MSG, KW_VAL_OBJ, KW_VAL_SEAL, KW_VAL_XML, KW_VALEXP, KW_VALIDATE, KW_VALMG_SA, KW_VALMSG, KW_VALUE, KW_VALUES, KW_VAR, KW_VERBOSE, KW_VERSION, KW_VERT, KW_VIEW, KW_VIEW_AS, KW_VIEW_FCR, KW_VIRT_HC, KW_VIRT_HP, KW_VIRT_WC, KW_VIRT_WP, KW_VISIBLE, KW_VMS, KW_VOID, KW_WA_H_P, KW_WA_W_P, KW_WA_X, KW_WA_Y, KW_WAIT, KW_WAIT_FOR, KW_WARN, KW_WC_AD_AP, KW_WEB, KW_WEB_CTX, KW_WEB_FUP, KW_WEB_OUT, KW_WEEK, KW_WHEN, KW_WHERE, KW_WHERE_ST, KW_WHILE, KW_WID_ENT, KW_WID_HAND, KW_WID_ID, KW_WID_LEAV, KW_WID_POOL, KW_WIDGET, KW_WIDTH, KW_WIDTH_C, KW_WIDTH_P, KW_WIN_CLOS, KW_WIN_DMIN, KW_WIN_MAX, KW_WIN_MIN, KW_WIN_NAME, KW_WIN_NORM, KW_WIN_RESI, KW_WIN_REST, KW_WIN_STAT, KW_WIN_SYS, KW_WINDOW, KW_WITH, KW_WORD_IDX, KW_WORD_WRP, KW_WORK_TAB, KW_WR_CDATA, KW_WR_CHARS, KW_WR_CMNT, KW_WR_D_ELM, KW_WR_DATA, KW_WR_E_ELM, KW_WR_ENT_R, KW_WR_EXDTD, KW_WR_FRAGM, KW_WR_JSON, KW_WR_MSG, KW_WR_PRINS, KW_WR_STAT, KW_WR_XML, KW_WR_XMLSC, KW_WRITE, KW_WUPL_ERR, KW_WUPL_FLS, KW_X, KW_X_DOC, KW_X_NODE, KW_X_OF, KW_XCODE, KW_XML_DTYP, KW_XML_E_EL, KW_XML_NNAM, KW_XML_NTYP, KW_XML_S_ER, KW_XML_SCHP, KW_XML_SNSP, KW_XOR, KW_XPR2PDF, KW_XREF, KW_XREF_XML, KW_Y, KW_Y_OF, KW_YEAR, KW_YEAR_OFF, KW_YES_NO, KW_YES_NO_C, LABEL, LABEL_DEF, LANGUAGES, LBRACKET, LEFT_OUTER_JOIN, LETTER, LIBRARY_PROCEDURE, LIBRARY_REF, LPARENS, LT, LTE, MANDATORY, MANY_TO_ONE, METH_CHAR, METH_CLASS, METH_COM_HANDLE, METH_DATE, METH_DATETIME, METH_DATETIME_TZ, METH_DEC, METH_HANDLE, METH_INT, METH_INT64, METH_LOGICAL, METH_LONGCHAR, METH_MEMPTR, METH_POLY, METH_RAW, METH_RECID, METH_ROWID, METH_VOID, METHOD_DEF, METHOD_INVOCATION, MINUS, MISSING, MONTH_TRASH_MODE, MORE, MULTIPLY, NATIVE_API, NATIVE_PROCESS, NATIVE_PROGRAM_RESOURCE, NETWORK_CONNECTION, NO_LOCK_LITERAL, NO_MATCH, NO_REFERENCE, NO_TRANSACTION, NO_WAIT_LITERAL, NOT_BETWEEN, NOT_ENTERED, NOT_EQ, NOT_EXISTS, NOT_IN, NOT_LIKE, NOT_NULL, NULL_TREE_LOOKAHEAD, NUM_LITERAL, OBJECT_INVOCATION, OCX_CONTROL, ONE_TO_MANY, ONE_TO_ONE, OO_METH_CHAR, OO_METH_CLASS, OO_METH_COM_HANDLE, OO_METH_DATE, OO_METH_DATETIME, OO_METH_DATETIME_TZ, OO_METH_DEC, OO_METH_HANDLE, OO_METH_INT, OO_METH_INT64, OO_METH_LOGICAL, OO_METH_LONGCHAR, OO_METH_MEMPTR, OO_METH_POLY, OO_METH_RAW, OO_METH_RECID, OO_METH_ROWID, OO_METH_VOID, OPEN_CURSOR, OPEN_QUERY, OPTION, ORDER, ORDER_BY, OUTPUT_CLOSE, OUTPUT_THRU, OUTPUT_TO, PARAMETER, PARENT_CHILD_RELATION, PARENT_ID_RELATION, PLUS, PORT_TYPE, POSITION, PROC_CALL_TYPE_LITERAL, PROCEDURE, PROCEDURE_FILE, PROCESS_EVENTS, PROPERTIES, PROPERTY_INVOCATION, PUT_CURSOR, PUT_FIELD, PUT_SCREEN, QUERY, QUERY_SUBST, RANGE_MATCH, RAW_STRING, RBRACKET, READ_AVAILABLE_LITERAL, READ_EXACT_NUM_LITERAL, RECORD_PHRASE, RELEASE_EXTERNAL, RELEASE_OBJECT, RIGHT_OUTER_JOIN, RPARENS, RSTRING, RUN_FILENAME, RUN_FILENAME_ON_SERVER, RUN_INT_PROC, RUN_INT_PROC_ON_SERVER, RUN_LIBRARY_REF, RUN_LIBRARY_REF_ON_SERVER, RUN_PORT_TYPE_ON_SERVER, RUN_PORT_TYPE_VALUE_ON_SERVER, RUN_STORED_PROCEDURE, RUN_SUPER, RUN_VALUE, RUN_VALUE_ON_SERVER, RUNTIME_BROWSE_OPTIONS, RUNTIME_FRAME_OPTIONS, SAVE_CACHE, SCHEMA_FILE, SEARCH_SELF_LITERAL, SEARCH_TARGET_LITERAL, SELF_REFERENCE, SEQUENCE, SET_ATTR_CTYPE_LITERAL, SHARE_LOCK_LITERAL, SHARED_LIBRARY, SLASH_SLASH, SORT_MATCH, SQL_WIDTH, SSTRING, STATEMENT, STATIC_WRAPPER, STR_OPTIONS, STREAM, STRING, STRONG_REFERENCE, SUB_TRANSACTION, SUPPORT_LVL_FULL, SUPPORT_LVL_FULL_WITH_LIMITATIONS, SUPPORT_LVL_NONE, SUPPORT_LVL_PARTIAL, SYM_CHAR, SYMBOL, SYS_HANDLE, SYSTEM_DIALOG_COLOR, SYSTEM_DIALOG_FONT, SYSTEM_DIALOG_GET_DIR, SYSTEM_DIALOG_GET_FILE, SYSTEM_DIALOG_PRINTER_SETUP, TABLE, TEMP_TABLE, TILDE, TRAILER, TRANSACTION, TRANSACTION_DISTINCT, TRANSACTION_MODE_AUTO, TRIGGER_BLOCK, TRIGGER_PHRASE, TRIGGER_PROCEDURE, UN_MINUS, UN_PLUS, UNKNOWN_RESOURCE, UNKNOWN_TOKEN, UNKNOWN_VAL, UNQUOTED_TEXT, UPDATE_SQL, VALEXP, VALID_SYM_CHAR, VALIDATION, VALMG_SA, VALMSG, VAR_BYTE, VAR_CHAR, VAR_CLASS, VAR_COM_HANDLE, VAR_DATE, VAR_DATETIME, VAR_DATETIME_TZ, VAR_DEC, VAR_DOUBLE, VAR_FLOAT, VAR_HANDLE, VAR_INT, VAR_INT64, VAR_LOGICAL, VAR_LONG, VAR_LONGCHAR, VAR_MEMPTR, VAR_POLY, VAR_RAW, VAR_RECID, VAR_ROWID, VAR_SHORT, VAR_ULONG, VAR_USHORT, WEAK_REFERENCE, WEB_PROC, WHEN_LIST, WHERE_CURRENT_OF, WID_BROWSE, WID_BROWSE_COL, WID_BUTTON, WID_COMBO, WID_DIALOG, WID_EDITOR, WID_FILL_IN, WID_FRAME, WID_IMAGE, WID_LITERAL, WID_MENU, WID_MENU_ITM, WID_RADIO, WID_RECT, WID_SEL_LST, WID_SLIDER, WID_SUB_MENU, WID_TEXT, WID_TOGGLE, WID_WINDOW, WIDGET_LIST, WIDGET_POOL, WITH_CHECK_OPTION, WITH_GRANT_OPTION, WORD_MATCH, WORK_TABLE, WS, XSTRING, YEAR_TRASH_MODE| Modifier | Constructor and Description |
|---|---|
|
SchemaParser(antlr.ParserSharedInputState state) |
|
SchemaParser(antlr.TokenBuffer tokenBuf) |
protected |
SchemaParser(antlr.TokenBuffer tokenBuf,
int k) |
|
SchemaParser(antlr.TokenStream lexer) |
|
SchemaParser(antlr.TokenStream lexer,
boolean bogus)
Constructs a parser using a lexer instance.
|
protected |
SchemaParser(antlr.TokenStream lexer,
int k) |
| Modifier and Type | Method and Description |
|---|---|
void |
any_ridiculous_symbol()
Match any kind of text as a symbol, even if the text would not normally be allowed to start
a symbol (e.g.
|
void |
area()
This rule matches a set of tokens assumed from the caller's context to be
the value of the
AREA property of a table or index. |
int |
as_clause()
Match a set of tokens for the
AS clause, which defines the data
type of a field. |
void |
bufpool()
Optional
BUFPOOL keyword followed by an EQUALS and
a boolean literal. |
protected void |
buildTokenTypeASTClassMap() |
void |
category()
Match a set of tokens assumed from the caller's context to be the value of the
CATEGORY property of a table. |
void |
clobCodepage()
Match
CLOB-CODEPAGE keyword and a following STRING
for a field. |
void |
clobCollation()
Match
CLOB-COLLATION keyword and a following STRING
for a field. |
void |
clobType()
Match
CLOB-TYPE keyword and a following NUM_LITERAL
for a field. |
void |
code_page()
Code-page related keywords and a code-page name as a
SYMBOL. |
void |
columnLabel_sa()
Match a set of tokens assumed from the caller's context to be the value
of the
COLUMN-LABEL_SA property of a Progress field. |
void |
columnLabel()
Match a set of tokens assumed from the caller's context to be the value
of the
COLUMN-LABEL property of a Progress field. |
void |
crc_clause()
Matches the
CRC keyword followed by a string literal. |
void |
cruft()
Match options that make no sense.
|
void |
cycleOnLimit()
Match a set of tokens assumed from the caller's context to be the
value of the
CYCLE-ON-LIMIT property of a sequence. |
java.lang.String |
database()
Match a database construct, which specifies the database name.
|
void |
decimals()
Match a set of tokens as the value of the
DECIMALS property of
a field. |
void |
description()
Match a set of tokens assumed from the caller's context to be the
value of the
DESCRIPTION property of a table, field,
or index. |
void |
dumpName()
Match a set of tokens assumed from the caller's context to be the
value of the
DUMP-NAME property of a table. |
java.lang.String |
extent()
Match a set of tokens as the value of the
EXTENT property of a
field. |
void |
field_trigger()
Match a
FIELD-TRIGGER clause in the field(java.util.Map<java.lang.String, java.lang.Integer>, java.util.Map<java.lang.String, java.lang.Integer>, int). |
java.lang.String |
field(java.util.Map<java.lang.String,java.lang.Integer> fields,
java.util.Map<java.lang.String,java.lang.Integer> fieldTypes,
int idx)
This rule matches a field definition, which consists of the
ADD FIELD phrase followed by field property definitions, some
of which are optional. |
static java.lang.String |
fieldSignature(int type,
java.lang.String extent)
Calculate the signature string for a field.
|
private boolean |
followedByWhitespace(antlr.Token tok)
Check if the given token is followed by whitespace in the original
source code (by reading from the hidden token stream).
|
private void |
forceLineColumnNums(Aast source,
Aast target)
Set the line and column numbers of the target AST to be the same as
the source AST.
|
void |
format_sa()
Match a set of tokens assumed from the caller's context to be the
value of the
FORMAT_SA property of a table or field. |
void |
format()
Match a set of tokens which is the value of the
FORMAT property
of a field. |
void |
frozen()
Match a token assumed from the caller's context to be the
value of the
FROZEN property of a table. |
void |
help_sa()
Match a set of tokens as the value of the
HELP-SA property of a
field. |
void |
help()
Match a set of tokens as the value of the
HELP property of a
field. |
void |
hidden()
Match a token assumed from the caller's context to be the
value of the
HIDDEN property of a table. |
void |
increment()
Match a set of tokens assumed from the caller's context to be the
value of the
INCREMENT property of a sequence. |
java.lang.String |
index_props()
Index properties, aggregated as children of an artificial
PROPERTIES node, which is itself a direct child of the
INDEX node. |
java.lang.String |
index(java.util.Map<java.lang.String,java.lang.Integer> fields,
java.util.Map<java.lang.String,java.lang.Integer> fieldTypes)
Matches an index definition, which consists of the
ADD INDEX
phrase followed by index property definitions, some of which are optional,
followed by some number of child entity definitions
(field references). |
void |
indexField()
Matches an index field definition, which consists of the
INDEX-FIELD keyword followed by index field property
definitions, some of which are optional. |
void |
initial_sa()
Match a set of tokens assumed from the caller's context to be the
value of the
INITIAL-SA property of a table or field. |
void |
initial(int ftype,
java.lang.String fmt)
Match a set of tokens assumed from the caller's context to be the value
of the
INITIAL property of a sequence or field. |
void |
label_sa()
Match a set of tokens assumed from the caller's context to be the
value of the
LABEL-SA property of a table or field. |
void |
label()
Match a set of tokens assumed from the caller's context to be the
value of the
LABEL property of a table or field. |
void |
length()
Match a set of tokens as the value of the
LENGTH property of a
field. |
void |
literal()
Matches a single instance of any and all legal Progress 4GL literals
(hard-coded instances of data types, otherwise called constants).
|
void |
lobArea()
Match
LOB-AREA keyword and a following STRING
for a field. |
void |
lobBytes()
Match
LOB-BYTES keyword and a following
NUM_LITERAL for a field. |
void |
lobSize()
Match
LOB-SIZE keyword and a following size specification
for a field. |
static void |
main(java.lang.String[] args)
Provides a command line interface for an end user to drive and/or test
schema file lexing.
|
void |
maxVal()
Match a set of tokens assumed from the caller's context to be the value
of the
MAX-VAL property of a sequence. |
void |
maxWidth()
Match
MAX-WIDTH keyword and a following
NUM_LITERAL for a field. |
private boolean |
mergeUntilWS()
Merge the following non-hidden token text until (and including) a token
followed by whitespace or
EOF. |
void |
minVal()
Match a set of tokens assumed from the caller's context to be the value
of the
MIN-VAL property of a sequence. |
private static long[] |
mk_tokenSet_0() |
private static long[] |
mk_tokenSet_1() |
private static long[] |
mk_tokenSet_10() |
private static long[] |
mk_tokenSet_11() |
private static long[] |
mk_tokenSet_12() |
private static long[] |
mk_tokenSet_13() |
private static long[] |
mk_tokenSet_14() |
private static long[] |
mk_tokenSet_15() |
private static long[] |
mk_tokenSet_16() |
private static long[] |
mk_tokenSet_17() |
private static long[] |
mk_tokenSet_18() |
private static long[] |
mk_tokenSet_2() |
private static long[] |
mk_tokenSet_3() |
private static long[] |
mk_tokenSet_4() |
private static long[] |
mk_tokenSet_5() |
private static long[] |
mk_tokenSet_6() |
private static long[] |
mk_tokenSet_7() |
private static long[] |
mk_tokenSet_8() |
private static long[] |
mk_tokenSet_9() |
void |
order()
Match a set of tokens as the value of the
ORDER property of a
field. |
private void |
outputWarning(Aast node,
java.lang.String front,
java.lang.String back)
Helper to output a warning message with AST-specific type, line and
column data to STDERR.
|
void |
permissions()
Match permissions clause as a property of a table or field.
|
void |
position()
Match a set of tokens assumed from the caller's context to be the value
of the
POSITION property of a Progress field. |
private boolean |
prefacedByWhitespace(antlr.Token tok)
Check if the given token is prefaced by whitespace in the original
source code (by reading from the hidden token stream).
|
void |
proc_clause()
Matches the
PROCEDURE keyword followed by a string literal. |
private antlr.Token |
relex(java.lang.String input)
Helper to instantiate a new (limited use) lexer and re-lex the input.
|
private java.lang.String |
removeBogusQuotes(java.lang.String quoted)
Helper to remove surrounding unnecessary double quotes.
|
void |
schema()
Top-level parser method, from which the entire recursive descent parsing
of tokens for this file begins.
|
void |
sequence()
Matches a sequence definition, which consists of the
ADD SEQUENCE phrase followed by sequence property
definitions. |
private void |
setupHiddenFilter()
Configure the hidden filter to ensure that token types that are not
normally recognized by the parser, are hidden (but still accessible)
using the filter.
|
void |
sqlWidth()
Match a set of tokens as the value of the
SQL-WIDTH property of
a field. |
void |
table_props()
Matches all possible table property definitions.
|
void |
table_trigger()
Match a
TABLE-TRIGGER clause in the table_props(). |
void |
table()
Matches a table definition, which consists of the
ADD TABLE
phrase followed by table property definitions, some of which are optional,
then some number of field(java.util.Map<java.lang.String, java.lang.Integer>, java.util.Map<java.lang.String, java.lang.Integer>, int) and/or index(java.util.Map<java.lang.String, java.lang.Integer>, java.util.Map<java.lang.String, java.lang.Integer>) definitions. |
void |
trailer()
Match the trailer section of the file.
|
void |
trigger_parms()
Match parameters for a table or field trigger in
table_trigger() and
field_trigger(), respectively. |
void |
unknownOption()
Match any other unrecognized option and warn that it is being dropped.
|
void |
update_stuff()
These UPDATE TABLE and UPDATE INDEX constructs were seen at the bottom of a customer
schema, but they don't seem to have any purpose in a converted environment.
|
void |
valExp()
Match a set of tokens assumed from the caller's context to be the value
of the
VALEXP property of a Progress field. |
void |
valMsg_sa()
Match a set of tokens assumed from the caller's context to be the
value of the
VALMG-SA property of a table or field. |
void |
valMsg()
Match a set of tokens assumed from the caller's context to be the
value of the
VALMSG property of a table or field. |
void |
viewAs()
Match a set of tokens as the value of the
VIEW-AS property of
a field. |
addMessageListener, addParserListener, addParserMatchListener, addParserTokenListener, addSemanticPredicateListener, addSyntacticPredicateListener, addTraceListener, consumeUntil, consumeUntil, defaultDebuggingSetup, getAST, getASTFactory, getFilename, getInputState, getTokenName, getTokenNames, getTokenTypeToASTClassMap, isDebugMode, mark, match, match, matchNot, panic, recover, removeMessageListener, removeParserListener, removeParserMatchListener, removeParserTokenListener, removeSemanticPredicateListener, removeSyntacticPredicateListener, removeTraceListener, reportError, reportError, reportWarning, rewind, setASTFactory, setASTNodeClass, setASTNodeType, setDebugMode, setFilename, setIgnoreInvalidDebugCalls, setInputState, setTokenBuffer, traceIndentprivate static final ConversionStatus LOG
public static final java.lang.Class AST_CLASS
private static final boolean unixEsc
private java.lang.String currentTable
private antlr.TokenStreamHiddenTokenFilter hidden
public static final java.lang.String[] _tokenNames
public static final antlr.collections.impl.BitSet _tokenSet_0
public static final antlr.collections.impl.BitSet _tokenSet_1
public static final antlr.collections.impl.BitSet _tokenSet_2
public static final antlr.collections.impl.BitSet _tokenSet_3
public static final antlr.collections.impl.BitSet _tokenSet_4
public static final antlr.collections.impl.BitSet _tokenSet_5
public static final antlr.collections.impl.BitSet _tokenSet_6
public static final antlr.collections.impl.BitSet _tokenSet_7
public static final antlr.collections.impl.BitSet _tokenSet_8
public static final antlr.collections.impl.BitSet _tokenSet_9
public static final antlr.collections.impl.BitSet _tokenSet_10
public static final antlr.collections.impl.BitSet _tokenSet_11
public static final antlr.collections.impl.BitSet _tokenSet_12
public static final antlr.collections.impl.BitSet _tokenSet_13
public static final antlr.collections.impl.BitSet _tokenSet_14
public static final antlr.collections.impl.BitSet _tokenSet_15
public static final antlr.collections.impl.BitSet _tokenSet_16
public static final antlr.collections.impl.BitSet _tokenSet_17
public static final antlr.collections.impl.BitSet _tokenSet_18
public SchemaParser(antlr.TokenStream lexer,
boolean bogus)
lexer - An instance of a TokenStream object.bogus - Useless parameter which is only here to differentiate between
this constructor and the standard one that ANTLR generates
which doesn't have this parameter.protected SchemaParser(antlr.TokenBuffer tokenBuf,
int k)
public SchemaParser(antlr.TokenBuffer tokenBuf)
protected SchemaParser(antlr.TokenStream lexer,
int k)
public SchemaParser(antlr.TokenStream lexer)
public SchemaParser(antlr.ParserSharedInputState state)
public static java.lang.String fieldSignature(int type,
java.lang.String extent)
type - The field's data type.extent - The extent size (as a num literal) or null if the field is scalar.private void setupHiddenFilter()
private void outputWarning(Aast node, java.lang.String front, java.lang.String back)
node - The AST to inspect for log data.front - Log prefix.back - Log suffix.private java.lang.String removeBogusQuotes(java.lang.String quoted)
private void forceLineColumnNums(Aast source, Aast target)
source - AST with the line and column numbers to copy.target - AST to modify.private antlr.Token relex(java.lang.String input)
throws antlr.TokenStreamException
INITIAL having children that
are of the STRING type even when they should be some other
kind of literal. This method removes the unnecessary enclosing
double quotes and then calls the lexer to obtain the resulting token.
It is assumed at this time that only one token will be present in the
passed input string. If this is not the case, we will have to make
more serious changes!input - The double quoted enclosed string containing a token to lex.null if the input text is an empty string.antlr.TokenStreamExceptionprivate boolean prefacedByWhitespace(antlr.Token tok)
tok - The token from the token stream (the lexer) which is needed
in order to examine any prefacing hidden tokens.true if the given token is prefaced by whitespace
in the hidden token stream.private boolean followedByWhitespace(antlr.Token tok)
tok - The token from the token stream (the lexer) which is needed
in order to examine if there are following hidden tokens.true if the given token is followed by whitespace
in the hidden token stream.private boolean mergeUntilWS()
throws antlr.TokenStreamException,
antlr.MismatchedTokenException
EOF.
All the merged tokens will be consumed and the merged text will be stored in the last token before the token that triggered the end of merging. The line and column numbers of the merged token will be forced to the same values as the first token on entry.
true if merging was done, false if
no changes were made.antlr.TokenStreamExceptionantlr.MismatchedTokenExceptionpublic static void main(java.lang.String[] args)
Syntax:
java SchemaParser [-l | -v] <schema_dump_file>
Where:
args - List of command line arguments.public final void schema()
throws antlr.RecognitionException,
antlr.TokenStreamException
database() construct;
sequence() constructs;
table() constructs;
trailer() construct;
The root of the schema AST will be an artificial DATABASE node.
All sub-trees created by the rule references will be attached as child
nodes, in the order shown above.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final java.lang.String database()
throws antlr.RecognitionException,
antlr.TokenStreamException
The sub-tree created by this rule is rooted at the KW_DATABASE
node and has a single child which is the STRING that is the
database name. Any KW_ADD or KW_UPDATE token
is dropped.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void sequence()
throws antlr.RecognitionException,
antlr.TokenStreamException
ADD SEQUENCE phrase followed by sequence property
definitions.
The AST is produced rooted at the artificial SEQUENCE node.
The KW_ADD, KW_SEQUENCE and the STRING
tokens are all dropped from the tree, and sequence name (from the
STRING node) will be set as the text for the
SEQUENCE node. The children of this node will be the sub-trees
created by the rule references for the sequence properties.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void table()
throws antlr.RecognitionException,
antlr.TokenStreamException
ADD TABLE
phrase followed by table property definitions, some of which are optional,
then some number of field(java.util.Map<java.lang.String, java.lang.Integer>, java.util.Map<java.lang.String, java.lang.Integer>, int) and/or index(java.util.Map<java.lang.String, java.lang.Integer>, java.util.Map<java.lang.String, java.lang.Integer>) definitions.
The AST is produced rooted at an artificial TABLE node (not to
be confused with the KW_TABLE). The KW_ADD,
KW_TABLE, STRING, KW_TYPE and
SYMBOL tokens are all dropped from the tree, and table name
(from the STRING node) will be set as the text for the
TABLE node. The children of this node will be the sub-trees
created by the rule references for the table properties, fields and indexes.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void update_stuff()
throws antlr.RecognitionException,
antlr.TokenStreamException
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void trailer()
throws antlr.RecognitionException,
antlr.TokenStreamException
This matches some DOT tokens, some code-page related keywords
and then matches the bytecount numeric token which completes the file.
The sub-tree created by this rule will be rooted at an artificial
TRAILER node. The first child will be the sub-tree from the
code_page rule and the second child will be the NUM_LITERAL
which represents the byte or character count for the file.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void bufpool()
throws antlr.RecognitionException,
antlr.TokenStreamException
BUFPOOL keyword followed by an EQUALS and
a boolean literal. This can appear in the trailer().antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void code_page()
throws antlr.RecognitionException,
antlr.TokenStreamException
SYMBOL.
The sub-tree created by this rule will be rooted at the KW_PSC
node and all following nodes will be it's direct children.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void any_ridiculous_symbol()
throws antlr.RecognitionException,
antlr.TokenStreamException
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void initial(int ftype,
java.lang.String fmt)
throws antlr.RecognitionException,
antlr.TokenStreamException
INITIAL property of a sequence or field.
Matches:
KW_INIT keyword token
literal()
The schema dump file encloses all data values inside double quotes
and the lexer doesn't know when to remove the quotes and when to leave
them, since the necessary context is only known to the parser. Only the
parser can know this based on the data type of the field or the fact that
this is a sequence. This results in the INITIAL construct
having children that are of the STRING type even when they
should be some other kind of literal. To resolve this issue, the
relex helper method is used and the offending token is
overwritten in the init method. Then the matching continues as it should
with no problems and having the correct types. WARNING: this rewriting does
not handle the situation where multiple tokens exist *inside* a single
STRING token!
WARNING: in normal Progress 4GL source, when extent > 0, this same construct can have a list of comma-separated values. No examples have been encountered yet and the code in this rule won't match such conditions.
The sub-tree created by this rule is rooted at a KW_INIT and
that node will have a single child which is the literal initial value.
If this construct is encountered while parsing the definition for a field
of type RAW, the tokens will be discarded and no sub-tree will
be created. This is done since it is invalid to initialize a field of that
type.
ftype - The data type of the field or sequence being processed for the
initial clause.fmt - The format string to be used in manhandling user-defined logical
'constants' or null if no format string exists.antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void increment()
throws antlr.RecognitionException,
antlr.TokenStreamException
INCREMENT property of a sequence.
Matches:
KW_INCR token
NUM_LITERAL
The sub-tree produced as a result consists of a INCREMENT
node representing the property key (the KW_INCR type is
replaced) and a single child node with a type of NUM_LITERAL.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void cycleOnLimit()
throws antlr.RecognitionException,
antlr.TokenStreamException
CYCLE-ON-LIMIT property of a sequence.
The sub-tree produced as a result consists of a CYCLE_ON_LIMIT
node representing the property key (this replaces the KW_CYCLE
token) and a single child node with the value as a literal.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void minVal()
throws antlr.RecognitionException,
antlr.TokenStreamException
MIN-VAL property of a sequence.
Matches:
KW_MIN_VAL keyword token
NUM_LITERAL
The sub-tree produced as a result consists of a KW_MIN_VAL
node representing the property key and a single child node with a type of
NUM_LITERAL.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void maxVal()
throws antlr.RecognitionException,
antlr.TokenStreamException
MAX-VAL property of a sequence.
Matches:
KW_MAX_VAL keyword token
NUM_LITERAL
The sub-tree produced as a result consists of a KW_MAX_VAL
node representing the property key and a single child node with a type of
NUM_LITERAL.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void table_props()
throws antlr.RecognitionException,
antlr.TokenStreamException
The sub-tree created is rooted at an artificial PROPERTIES
node. Each property is parsed in its own rule. All of the sub-trees
for those properties are attached as children of the root node, in the same
order they are encountered in the file. If no properties are found for
a table, this rule doesn't create a sub-tree.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final java.lang.String field(java.util.Map<java.lang.String,java.lang.Integer> fields,
java.util.Map<java.lang.String,java.lang.Integer> fieldTypes,
int idx)
throws antlr.RecognitionException,
antlr.TokenStreamException
ADD FIELD phrase followed by field property definitions, some
of which are optional.
An AST is produced as a result, consisting of an artificial
FIELD_* node, with its type assigned based on the data type of
the field as returned by the as_clause rule (see that rule for
the specific types that can be returned). The text of that root node is the
field name as parsed from the text of the first STRING token.
The KW_ADD, KW_FIELD, STRING,
KW_OF and STRING tokens are all dropped from the
tree. Likewise, the sub-tree for as_clause is dropped, but as
noted above, the data type is used as the root node type. The children of
this node will be the sub-trees created by the rule references for the field
properties. In the case of the KW_MAND and
KW_CASE_SEN tokens, the node is directly added as a child of
the root (but in the case of KW_MAND it is converted to
artificial type MANDATORY).
Implementation Note: There is an assertion within this method to ensure that the table name associated with the table field being parsed is the same as the name of the table definition most recently parsed. This ensures that this field definition, which is assumed to be in the context of the most recent table definition, is properly "nested" as expected within that table. This is not a critical assertion at runtime, but was a reality check during development of this grammar, to confirm the assumption that a field definition would always be a child of the most recently parsed table definition.
fields - The mapping of the field names to their position in the table definition.fieldTypes - The mapping of the field names to their defined type (the token type).antlr.SemanticException - if this field definition reports a different parent table name
from the table definition most recently parsed.antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final java.lang.String index(java.util.Map<java.lang.String,java.lang.Integer> fields,
java.util.Map<java.lang.String,java.lang.Integer> fieldTypes)
throws antlr.RecognitionException,
antlr.TokenStreamException
ADD INDEX
phrase followed by index property definitions, some of which are optional,
followed by some number of child entity definitions
(field references). The index name is found in the first STRING
token and the table name on which the index is based is found in the second
STRING token (after the KW_ON).
A sub-tree is produced as a result, consisting of an artificial
INDEX token node, with an artificial PROPERTIES
child node containing the index properties, and an artificial
INDEX_FIELD child node for each field of this index. The text
of the INDEX node will be set as the index name read from the
first STRING token. The KW_ADD,
KW_INDEX, STRING, KW_ON and
STRING tokens are all dropped from the tree.
Implementation Note: There is an assertion within this method to ensure that the table name associated with the table index being parsed is the same as the name of the table definition most recently parsed. This ensures that this index definition, which is assumed to be in the context of the most recent table definition, is properly "nested" as expected within that table. This is not a critical assertion at runtime, but was a reality check during development of this grammar, to confirm the assumption that an index definition would always be a child of the most recently parsed table definition.
fields - The mapping of the field names to their position in the table definition.fieldTypes - The mapping of the field names to their defined type (the token type).antlr.SemanticException - if this index definition reports a different parent table name
from the table definition most recently parsed.antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void area()
throws antlr.RecognitionException,
antlr.TokenStreamException
AREA property of a table or index.
The resulting sub-tree will be a single artficial node of type
AREA with it's text set as the text contents of the
STRING node. The actual tokens read by the rule will be dropped.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void label()
throws antlr.RecognitionException,
antlr.TokenStreamException
LABEL property of a table or field.
The resulting sub-tree will be rooted at the KW_LABEL node and
the STRING will be its only child node.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void label_sa()
throws antlr.RecognitionException,
antlr.TokenStreamException
LABEL-SA property of a table or field.
The resulting sub-tree will be rooted at the KW_LABEL node and
the STRING will be its only child node.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void description()
throws antlr.RecognitionException,
antlr.TokenStreamException
DESCRIPTION property of a table, field,
or index.
The resulting sub-tree will be rooted at an artificial
DESCRIPTION node and the text of that node will be set as
the text contents of the STRING node. Both tokens being
matched will be discarded.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void valExp()
throws antlr.RecognitionException,
antlr.TokenStreamException
VALEXP property of a Progress field. This results in
a VALEXP AST with a single child of type STRING.
The string as read from the DF file is enclosed within double quotes;
these are removed. The DF file escapes embedded double quotes in this
string by doubling them up. All doubled-up double quotes are replaced
with single, double quotes (e.g., ...""some text""... becomes
..."some text"...).
The child node will need to be post-processed if it contains a real Progress 4GL expression.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void valMsg()
throws antlr.RecognitionException,
antlr.TokenStreamException
VALMSG property of a table or field.
Matches
KW_VALMSG token
STRING
The resulting AST will be rooted at an artificial VALMSG
node, with the STRING as a child of an artificial
EXPRESSION node (which makes the STRING the
grand-child node to the VALMSG.
The child node will need to be post-processed if it contains a real Progress 4GL expression rather than only a string literal. All samples to date are only a simple string so this code will work properly.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void valMsg_sa()
throws antlr.RecognitionException,
antlr.TokenStreamException
VALMG-SA property of a table or field.
The resulting sub-tree will be rooted at the KW_LABEL node and
the STRING will be its only child node.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void frozen()
throws antlr.RecognitionException,
antlr.TokenStreamException
FROZEN property of a table.
The resulting AST will be a single node of artificial type
FROZEN.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void hidden()
throws antlr.RecognitionException,
antlr.TokenStreamException
HIDDEN property of a table.
The resulting AST will be a single node of artificial type
HIDDEN.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void dumpName()
throws antlr.RecognitionException,
antlr.TokenStreamException
DUMP-NAME property of a table.
The resulting sub-tree is rooted at an artificial DUMP_NAME
node and the text contents of the STRING are set as the text
of the root node. The KW_DMP_NAME and STRING
tokens are discarded.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void category()
throws antlr.RecognitionException,
antlr.TokenStreamException
CATEGORY property of a table.
The resulting sub-tree is rooted at an artificial CATEGORY node and the text
contents of the STRING are set as the text of the root node.
The KW_CATEGORY and STRING tokens are discarded.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void permissions()
throws antlr.RecognitionException,
antlr.TokenStreamException
The resulting sub-tree will have the permission keyword (e.g.
KW_CAN_READ as the root node and the STRING as
the child node.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void table_trigger()
throws antlr.RecognitionException,
antlr.TokenStreamException
TABLE-TRIGGER clause in the table_props().
Uses trigger_parms().
The sub-tree will have the KW_TAB_TRG as the root and the
sub-tree created by trigger_parms will be the child.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void unknownOption()
throws antlr.RecognitionException,
antlr.TokenStreamException
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final int as_clause()
throws antlr.RecognitionException,
antlr.TokenStreamException
AS clause, which defines the data
type of a field.
The resulting sub-tree is rooted at the KW_AS node and it will
have a single child node which is the data type keyword matched. More
importantly, the data type keyword will set the type for the field as
follows:
Type Keyword Field Data Type -------------------- --------------------- KW_BLOB FIELD_BLOB KW_CHAR FIELD_CHAR KW_CLOB FIELD_CLOB KW_COM_HNDL FIELD_COM_HANDLE KW_DATE FIELD_DATE KW_DATETIME FIELD_DATETIME KW_DATE_TZ FIELD_DATETIME_TZ KW_DEC FIELD_DEC KW_INT FIELD_INT KW_INT64 FIELD_INT64 KW_LOGICAL FIELD_LOGICAL KW_RECID FIELD_RECID KW_ROWID FIELD_ROWID KW_RAW FIELD_RAW KW_HANDLE FIELD_HANDLE
This parser is used for .df files which are only used with
permanent databases. Since CLASS fields are for temp-tables
only, the KW_CLASS cannot be used in a .df file
and FIELD_CLASS will not be ever used as a field type in a
permanent database.
The following can also be matched, but they are only used in metadata schemas, normal Progress databases don't provide these field types.
Type Keyword Metadata Field Data Type -------------------- ------------------------ KW_BIGINT FIELD_BIGINT KW_BYTE FIELD_BYTE KW_DOUBLE FIELD_DOUBLE KW_FIXCHAR FIELD_FIXCHAR KW_FLOAT FIELD_FLOAT KW_SHORT FIELD_SHORT KW_TIMESTMP FIELD_TIMESTAMP KW_TIME FIELD_TIME
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void format()
throws antlr.RecognitionException,
antlr.TokenStreamException
FORMAT property
of a field.
The resulting sub-tree is rooted at a KW_FORMAT node with an
artificial EXPRESSION child node and the STRING
node is a child of the EXPRESSION.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void format_sa()
throws antlr.RecognitionException,
antlr.TokenStreamException
FORMAT_SA property of a table or field.
The resulting sub-tree will be rooted at the KW_LABEL node and
the STRING will be its only child node.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void initial_sa()
throws antlr.RecognitionException,
antlr.TokenStreamException
INITIAL-SA property of a table or field.
The resulting sub-tree will be rooted at the KW_LABEL node and
the STRING will be its only child node.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void position()
throws antlr.RecognitionException,
antlr.TokenStreamException
POSITION property of a Progress field.
The resulting sub-tree has an artificial POSITION node with a
child node of NUM_LITERAL. The KW_POS is dropped.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void sqlWidth()
throws antlr.RecognitionException,
antlr.TokenStreamException
SQL-WIDTH property of
a field.
The resulting sub-tree has an artificial SQL_WIDTH node with a
child node of NUM_LITERAL. The KW_SQL_WID is
dropped.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void columnLabel()
throws antlr.RecognitionException,
antlr.TokenStreamException
COLUMN-LABEL property of a Progress field.
The resulting sub-tree is KW_COL_LAB node with a child
node of STRING.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void columnLabel_sa()
throws antlr.RecognitionException,
antlr.TokenStreamException
COLUMN-LABEL_SA property of a Progress field.
The resulting sub-tree is KW_COL_L_SA node with a child
node of STRING.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void field_trigger()
throws antlr.RecognitionException,
antlr.TokenStreamException
FIELD-TRIGGER clause in the field(java.util.Map<java.lang.String, java.lang.Integer>, java.util.Map<java.lang.String, java.lang.Integer>, int).
Uses trigger_parms().
The sub-tree will have the KW_FLD_TRG as the root and the
sub-tree created by trigger_parms will be the child.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void help()
throws antlr.RecognitionException,
antlr.TokenStreamException
HELP property of a
field.
The resulting sub-tree is the KW_HELP with a child of
STRING.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void help_sa()
throws antlr.RecognitionException,
antlr.TokenStreamException
HELP-SA property of a
field.
The resulting sub-tree is the KW_HELP_SA with a child of
STRING.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final java.lang.String extent()
throws antlr.RecognitionException,
antlr.TokenStreamException
EXTENT property of a
field.
The resulting sub-tree is the KW_EXTENT with a child of
NUM_LITERAL.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void decimals()
throws antlr.RecognitionException,
antlr.TokenStreamException
DECIMALS property of
a field.
The resulting sub-tree is the KW_DECIMALS with a child of
NUM_LITERAL.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void length()
throws antlr.RecognitionException,
antlr.TokenStreamException
LENGTH property of a
field.
The resulting sub-tree is the KW_LENGTH with a child of
NUM_LITERAL.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void viewAs()
throws antlr.RecognitionException,
antlr.TokenStreamException
VIEW-AS property of
a field. Strangely enough, the KW_VIEW_AS keyword is repeated
inside the STRING text. That is just a Progress 4GL quirk.
The resulting sub-tree is the KW_VIEW_AS with a child of
STRING.
The string literal child will need post-processing to convert it into the full view-as phrase.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void order()
throws antlr.RecognitionException,
antlr.TokenStreamException
ORDER property of a
field.
The resulting sub-tree is an artificial ORDER with a child of
NUM_LITERAL. The KW_ORDER is dropped.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void maxWidth()
throws antlr.RecognitionException,
antlr.TokenStreamException
MAX-WIDTH keyword and a following
NUM_LITERAL for a field.
The sub-tree produced as a result consists of a KW_MAX_WID
node with a single child node with a type of NUM_LITERAL.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void lobArea()
throws antlr.RecognitionException,
antlr.TokenStreamException
LOB-AREA keyword and a following STRING
for a field.
The sub-tree produced as a result consists of a KW_LOB_AREA
node with a single child node with a type of STRING.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void lobBytes()
throws antlr.RecognitionException,
antlr.TokenStreamException
LOB-BYTES keyword and a following
NUM_LITERAL for a field.
The sub-tree produced as a result consists of a KW_LOB_BYTE
node with a single child node with a type of NUM_LITERAL.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void lobSize()
throws antlr.RecognitionException,
antlr.TokenStreamException
LOB-SIZE keyword and a following size specification
for a field. The size specification is a integral literal with an optional
single letter at the end to specify the units (e.g. 100M). This will
appear as a SYMBOL in the resulting tree, although it
doesn't naturally lex that way.
The sub-tree produced as a result consists of a KW_LOB_SIZE
node with a single child node with a type of SYMBOL. The
matched NUM_LITERAL is dropped but the text of that node is
prefixed to the text of the SYMBOL node.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void clobCodepage()
throws antlr.RecognitionException,
antlr.TokenStreamException
CLOB-CODEPAGE keyword and a following STRING
for a field.
The sub-tree produced as a result consists of a KW_CLOB_CP
node with a single child node with a type of STRING.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void clobCollation()
throws antlr.RecognitionException,
antlr.TokenStreamException
CLOB-COLLATION keyword and a following STRING
for a field.
The sub-tree produced as a result consists of a KW_CLOB_COL
node with a single child node with a type of STRING.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void clobType()
throws antlr.RecognitionException,
antlr.TokenStreamException
CLOB-TYPE keyword and a following NUM_LITERAL
for a field.
The sub-tree produced as a result consists of a KW_CLOB_TYP
node with a single child node with a type of NUM_LITERAL.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void cruft()
throws antlr.RecognitionException,
antlr.TokenStreamException
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final java.lang.String index_props()
throws antlr.RecognitionException,
antlr.TokenStreamException
PROPERTIES node, which is itself a direct child of the
INDEX node. Each matched keyword is a direct child
as are the sub-trees created in the referenced rules.antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void indexField()
throws antlr.RecognitionException,
antlr.TokenStreamException
INDEX-FIELD keyword followed by index field property
definitions, some of which are optional.
An AST is produced as a result, consisting of an imaginary
INDEX_FIELD token node, with child nodes for each property
encountered.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void literal()
throws antlr.RecognitionException,
antlr.TokenStreamException
NUM_LITERAL
DEC_LITERAL
STRING
BOOL_TRUE
BOOL_FALSE
DATE_LITERAL
DATETIME_TZ_LITERAL
UNKNOWN_VAL
Note that the documentation states that there is no such thing as a date constant in Progress 4GL, however experience shows that this is not true.
There are no literal representations for RECID, ROWID or HANDLE data types since these are internal data structures of the Progress language. One can only obtain an instance of such a value from Progress itself so there is no way to hard-code such a reference as a constant.
There is no literal representation for RAW data type.
WARNING: this rule is simply copied from the grammar for the
ProgressParser!
The sub-tree created is a single node of the type and text as created by the lexer.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void trigger_parms()
throws antlr.RecognitionException,
antlr.TokenStreamException
table_trigger() and
field_trigger(), respectively. Uses proc_clause() and crc_clause().
Each of the matched tokens will be attached (in order of occurrence) to the tree of the calling rule.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void proc_clause()
throws antlr.RecognitionException,
antlr.TokenStreamException
PROCEDURE keyword followed by a string literal.
Used by table_trigger() and separated to get the tree structure
correct.
The sub-tree will have the KW_PROC as the root and the
STRING will be the child.
antlr.RecognitionExceptionantlr.TokenStreamExceptionpublic final void crc_clause()
throws antlr.RecognitionException,
antlr.TokenStreamException
CRC keyword followed by a string literal.
Used by table_trigger() and separated to get the tree structure
correct.
The sub-tree will have the KW_CRC as the root and the
STRING will be the child.
antlr.RecognitionExceptionantlr.TokenStreamExceptionprotected void buildTokenTypeASTClassMap()
private static final long[] mk_tokenSet_0()
private static final long[] mk_tokenSet_1()
private static final long[] mk_tokenSet_2()
private static final long[] mk_tokenSet_3()
private static final long[] mk_tokenSet_4()
private static final long[] mk_tokenSet_5()
private static final long[] mk_tokenSet_6()
private static final long[] mk_tokenSet_7()
private static final long[] mk_tokenSet_8()
private static final long[] mk_tokenSet_9()
private static final long[] mk_tokenSet_10()
private static final long[] mk_tokenSet_11()
private static final long[] mk_tokenSet_12()
private static final long[] mk_tokenSet_13()
private static final long[] mk_tokenSet_14()
private static final long[] mk_tokenSet_15()
private static final long[] mk_tokenSet_16()
private static final long[] mk_tokenSet_17()
private static final long[] mk_tokenSet_18()