001import java.util.ArrayList; 002import java.util.Arrays; 003import java.util.List; 004 005class keywordRec { 006 public String keyword; 007 public String type; 008 boolean fromLexer = true; 009 public keywordRec(String pKeyword, String pType, boolean pfromLexer){ 010 this.keyword = pKeyword; 011 this.type = pType; 012 fromLexer = pfromLexer; 013 } 014 015 public keywordRec(String pKeyword, String pType){ 016 this.keyword = pKeyword; 017 this.type = pType; 018 fromLexer = true; 019 } 020 021 public String toString(){ 022 return "addkeyword('"+keyword+"',RW_"+keyword+","+type+");"; 023 //newList.add("addkeyword('"+kw+"',RW_"+kw+",ttreserved);"); 024 } 025} 026 027 028/** 029 * 收到新关键字列表后的处理流程,关键字分为 reserved words 和 non-reserved keywords 两种 030 * 031 * 这两类都是用逗号隔开的字符串表示,如果收到的是 同时包含 reserved words 和 non-reserved keywords 的列表, 032 * 需要先分成这两类独立的列表。 可以调用 extractNonReservedKeywords() 把 non-reserved keywords 从 full list 中分类出来。 033 * 034 * 1. 处理 reserved words 035 * 1.1 根据提供的 keyword list 列表, 确保当前 lexer 中已有的对应keyword 类型一致。调用 adjustKeywords() 实现 036 * 1.2 根据提供的 keyword list 列表, 把不在当前 lexer 中的 keyword 加入到 lexer keyword 列表中。调用 addNewKeywords() 实现 037 * 新增的 keyword 需要在 .y 文件中也加一下。 038 * 1.3 移除在 lexer 中的 keyword,但不在提供的 keyword list 列表中的 keyword, 考虑到这些 keyword 可能在 y 文件中使用, 039 * 不进行实际的移除,只是把类型从 ttreserved 改为 ttidentifier 040 * 通过调用 checkFalseKeywords() 实现 041 * 042 * 043 * 2. 处理 non-reserved keywords 044 * 2.1 根据提供的 non-keyword list 列表, 确保当前 lexer 中已有的对应 keyword 类型一致。调用 adjustKeywords() 实现 045 * 2.2 根据提供的 non-keyword list 列表, 把不在当前 lexer 中的 keyword 加入到 lexer keyword 列表中。调用 addNewKeywords() 实现 046 * 新增的 keyword 需要在 .y 文件中也加一下,并且在 rule 中要加入成为 ident。 047 * 2.3 移除在 lexer 中的 keyword,但不在提供的 non-keyword list 列表中的 keyword, 考虑到这些 keyword 可能在 y 文件中使用, 048 * 不进行实际的移除,只是把类型从 ttkeyword 改为 ttidentifier 049 * 通过调用 checkFalseKeywords() 实现 050 * 051 * 052 * 3. 检查处理结果 053 * 3.1 调用 adjustKeywords(), keywords num with different type 应该为零。 054 * 3.2 调用 addNewKeywords(), 新增的 keyword num 应该为零。 055 * 3.3 调用 checkFalseKeywords(), 发现的 false keyword 应该为零。 056 * 057 * 058 * 059 */ 060 061public class keywordsPrepare { 062 063 public static String TTRESERVED = "ttreserved"; 064 public static String TTKEYWORD = "ttkeyword"; 065 public static String TTCOLUMN = "ttcolumn"; 066 public static String TTIDENTIFIER = "ttidentifier"; 067 068 public static void main(String args[]) throws Exception{ 069 070 // adjustKeywords (reservedWords,keywordsInLexer,TTRESERVED); 071 // addNewKeywords (reservedWords,keywordsInLexer,TTRESERVED); 072 checkFalseKeywords(reservedWords,keywordsInLexer,TTRESERVED); 073 074 //addReservedWords(reservedWords,keywordsInLexer); 075 // compareKeywordsWithLexerKeywords(reservedWords,keywordsInLexer); 076 // System.out.println(extractNonReservedKeywords(allKeywordList,reservedWords)); 077 078 } 079 080 public static String outNewAddReservedWords(ArrayList<keywordRec> targetList){ 081 String ret = ""; 082 int count = 0; 083 for(keywordRec k:targetList){ 084 if (k.fromLexer) continue; 085 ret = ret+"RW_"+k.keyword+"\t"; 086 count++; 087 if (count % 10 == 0){ 088 ret = ret +"\n\r"; 089 } 090 } 091 092 System.out.println("Total new added reserved words: "+count); 093 094 return ret; 095 } 096 public static int searchKwInList(String kw, ArrayList<keywordRec> targetList){ 097 if (targetList.size() == 0) return -1; 098 int i = 0,pos = -1; 099 for(keywordRec k:targetList){ 100 if (k.keyword.equalsIgnoreCase(kw)) { 101 pos = i; 102 break; 103 } 104 i++; 105 } 106 return pos; 107 } 108 public static int insertReservedWord(String kw, ArrayList<keywordRec> targetList, int startFrom){ 109 110 boolean isAdded = false; 111 for(int i=startFrom;i<targetList.size();i++){ 112 if (targetList.get(i).keyword.compareToIgnoreCase(kw)>0){ 113 targetList.add(i, new keywordRec(kw,TTRESERVED,false)); 114 startFrom = i+1; 115 isAdded = true; 116 break; 117 } 118 } 119 if (!isAdded){ 120 targetList.add(targetList.size(),new keywordRec(kw,TTRESERVED,false)); 121 startFrom = targetList.size(); 122 } 123 return startFrom; 124 } 125 126 127 public static ArrayList<String> keywordsStringToArrayList( String pReservedWords){ 128 String[] keywords = pReservedWords.split(","); 129 List<String> kwFixedLenghtList = Arrays.asList(keywords); 130 ArrayList<String> kwListOfString = new ArrayList<String>(kwFixedLenghtList); 131 return kwListOfString; 132 } 133 134 public static ArrayList<keywordRec> keywordsInLexerToArrayList( String pKeywordsInLexer){ 135 String[] lexerKeywords = pKeywordsInLexer.split("\n"); 136 List<String> lexerKwFixedLenghtList = Arrays.asList(lexerKeywords); 137 ArrayList<String> lexerKwListOfString = new ArrayList<String>(lexerKwFixedLenghtList); 138 139 ArrayList<keywordRec> newList = new ArrayList<>(); 140 for(String s:lexerKwListOfString){ 141 String s1 = s.replace("addkeyword(","").replace(");","").replace("'",""); 142 String[] e2 = s1.split(","); 143 String kw = e2[0], kwMark = e2[2].trim(); 144 newList.add( new keywordRec(kw,kwMark)); 145 } 146 return newList; 147 } 148 149 public static void compareKeywordsWithLexerKeywords(String pReservedWords,String pKeywordsInLexer){ 150 ArrayList<String> keywordList = keywordsStringToArrayList(pReservedWords); 151 ArrayList<keywordRec> keywordListInLexer = keywordsInLexerToArrayList(pKeywordsInLexer); 152 153 // 先统计lexer 缺少的 reserved words 154 int count = 0, typeNotMatched = 0; 155 for(String kw:keywordList){ 156 int pos = searchKwInList(kw,keywordListInLexer); 157 if ( pos == -1){ 158 count++; 159 }else{ 160 if (!keywordListInLexer.get(pos).type.equalsIgnoreCase(TTRESERVED)){ 161 typeNotMatched++; 162 } 163 } 164 } 165 System.out.println(String.format("Provided list -> Lexer list, Missing: %d, Type not matched: %d, total miss: %d",count,typeNotMatched,count+typeNotMatched)); 166 167 // 统计 lexer 中目前标记为 ttreserved, 但不在 新提供的 reserved word list 中 168 count = 0; 169 for(keywordRec kr: keywordListInLexer){ 170 if ((!keywordList.contains(kr.keyword)) && (kr.type.equalsIgnoreCase(TTRESERVED))) { 171 count++; 172 System.out.println(kr.toString()); 173 } 174 } 175 176 System.out.println(String.format("Lexer list: %d -> Provided list: %d, Extra keywords: %d",keywordListInLexer.size(),keywordList.size() ,count)); 177 178 } 179 public static void addNewKeywords(String pKeywords, String pKeywordsInLexer, String kwType) { 180 // 把 lexer.cod 文档中现有的 keyword list 按照 reservedWords 中指定的keyword,把对应的属性设为 ttreserved 181 // 把这些重新整理的 keyword list 复制回 lexer.cod 文件中。 182 // 这轮整理不改变原来 keyword list 的数量,无需往 .y 文件中增加新 keyword 183 184// String[] keywords = pKeywords.split(","); 185// List<String> kwFixedLenghtList = Arrays.asList(keywords); 186// ArrayList<String> kwList = new ArrayList<String>(kwFixedLenghtList); 187// 188// 189// String[] lexerKeywords = pKeywordsInLexer.split("\n"); 190// List<String> lexerKwFixedLenghtList = Arrays.asList(lexerKeywords); 191// ArrayList<String> lexerKwList = new ArrayList<String>(lexerKwFixedLenghtList); 192 193 ArrayList<String> kwList = keywordsStringToArrayList(pKeywords); 194 ArrayList<keywordRec> lexerKwList = keywordsInLexerToArrayList(pKeywordsInLexer); 195 196 int newReserveKeywords = 0; 197 198 ArrayList<keywordRec> newList = new ArrayList<>(); 199 for(keywordRec s:lexerKwList){ 200// String s1 = s.replace("addkeyword(","").replace(");","").replace("'",""); 201// String[] e2 = s1.split(","); 202// String kw = e2[0], kwMark = e2[2].trim(); 203 newList.add( new keywordRec(s.keyword,s.type)); 204 } 205 206 //newList.add(); 207 int insertFrom = 0; 208 209 for(String s:kwList){ 210 if ( searchKwInList(s,newList) != -1){ 211 212 }else{ 213 // System.out.println("Reserved word not in lexer list: "+s); 214 215 insertFrom = insertReservedWord(s,newList,insertFrom); 216 newReserveKeywords++; 217 } 218 } 219 220 for(keywordRec k:newList){ 221 System.out.println(k.toString()); 222 } 223 224 System.out.println("\n以上为原来 lexer 中 reserved words 和 新提供的 reserved words list 合并后新的 reserved words list, 请复制到 l.cod 文件中\n"); 225 226 System.out.println(outNewAddReservedWords(newList)); 227 228 System.out.println("\n以上为从新提供 reserved words list 中发现的,并没有出现在原来 lexer 中 reserved words 中的 reserved words list, 请复制到 .y 文件中\n"); 229 230 System.out.println(String.format("keywords in lexer list %d, in suggested list %d, new found keyword: %d, new list size after insert: %d " 231 ,lexerKwList.size(), kwList.size(),newReserveKeywords,newList.size() )); 232 233 } 234 235 /** 236 * 核对 lexer keyword 列表中的 keyword,如果这些 keyword 在 规定 keyword 列表中出现,必须保证类型的也相同, 237 * 如果不同,把 lexer keyword 列表中keyword的类型调整为指定的类型。 238 * 239 * 这个操作不改变 lexer keyword 列表中 keyword 的个数 240 * 241 * @param pKeywords 242 * @param pKeywordsInLexer 243 * @param pKwMark 244 */ 245 public static void adjustKeywords(String pKeywords, String pKeywordsInLexer, String pKwMark){ 246 // 把 lexer.cod 文档中现有的 keyword list 按照 reservedWords 中指定的keyword,把对应的属性设为 ttreserved 247 // 把这些重新整理的 keyword list 复制回 lexer.cod 文件中。 248 // 这轮整理不改变原来 keyword list 的数量,无需往 .y 文件中增加新 keyword 249 250 ArrayList<String> kwList = keywordsStringToArrayList(pKeywords) ;// new ArrayList<String>(kwFixedLenghtList); 251 ArrayList<keywordRec> lexerKwList = keywordsInLexerToArrayList(pKeywordsInLexer) ;//new ArrayList<String>(lexerKwFixedLenghtList); 252 253 int keywordWithDifferentType = 0; 254 int keywordNumInLexer = lexerKwList.size(); 255 256 ArrayList<String> newList = new ArrayList<>(); 257 258 // 第一轮: 把现有 lexer 中 keyword list 的 ttreserved 按照 reservedWords 列表的内容标记准确 259 System.out.println(keywordNumInLexer); 260 for(keywordRec s:lexerKwList){ 261 String kw = s.keyword, kwMark = s.type; 262 263 if (kwList.contains (kw)) 264 { 265 newList.add("addkeyword('"+kw+"',RW_"+kw+","+pKwMark+");"); 266 267 if (kwMark.equalsIgnoreCase(pKwMark)){ 268 }else { 269 keywordWithDifferentType++; 270 // System.out.println(String.format("Lexer keyword: %s with type: %s, changed to new type: %s",kw,kwMark,pKwMark)); 271 } 272 }else { 273 newList.add("addkeyword('"+kw+"',RW_"+kw+","+kwMark+");"); 274 } 275 } 276 277 // 整理后 ttreserved 标记准确的 list 包含的 keyword 数量应该和原来相同 278 279 for(String s:newList){ 280 System.out.println(s); 281 } 282 283 System.out.println(String.format("keywords in lexer list %d should equal to keyword in new list %d, %d keywords changed to %s " 284 ,lexerKwList.size(), newList.size(),keywordWithDifferentType,pKwMark )); 285 286 287 // end of 第一轮, 这时原来列表的 keyword 数量应该没有发生变化,只是把需要标记为 ttreserved 的 keyword 按照 reservedWords 列表重新标记了一遍 288 // 把这些重新整理的 keyword list 复制回 lexer.cod 文件中。 289 // 用新的 lexer list 再跑一边的话,发现新 ttreserved 数量应该为零。 290 } 291 292 /** 293 * 检查 lexer keywords 列表中的指定类型的 keyword 是否在 规定的 keyword 列表中出现。 294 * 理想的结果是没有发现 false keyword 295 * 296 * @param pKeywords 规定的 keyword 列表 297 * @param pKeywordsInLexer lexer keywords 列表 298 * @param pKwMark 需要检查的 keyword 类型, 有 TTRESERVED 和 TTKEYWORD 299 */ 300 public static void checkFalseKeywords( String pKeywords,String pKeywordsInLexer, String pKwMark){ 301 302 ArrayList<String> kwListOfKeyword = keywordsStringToArrayList(pKeywords) ; 303 ArrayList<keywordRec> kwListInLexer = keywordsInLexerToArrayList(pKeywordsInLexer) ; 304 305 int falseKeywordFound = 0; 306 int keywordInLexer = kwListInLexer.size(); 307 308 309 ArrayList<String> newList = new ArrayList<>(); 310 311 // 第一轮: 把现有 lexer 中 keyword list 的 ttreserved 按照 reservedWords 列表的内容标记准确 312 System.out.println(keywordInLexer); 313 for(keywordRec s:kwListInLexer){ 314 String kw = s.keyword, kwMark = s.type; 315 if (kwMark.equalsIgnoreCase(pKwMark)){ 316 if (!kwListOfKeyword.contains (kw)) 317 { 318 System.out.println(String.format("False keyword %s in lexer with type: %s, but it is not in the real keyword list",kw,kwMark)); 319 falseKeywordFound++; 320 } 321 322 } 323 } 324 325 System.out.println(String.format("keywords in lexer list %d, in required keyword list %d, false keyword found: %d " 326 ,kwListInLexer.size(), kwListOfKeyword.size(),falseKeywordFound )); 327 328 } 329 330 331 /** 332 * 输入完整的 keyword 列表 和 reserved words 列表, 输出 non-reserved keywords 列表 333 * 334 * @param allKeywords 335 * @param reservedWords 336 * @return 337 */ 338 public static String extractNonReservedKeywords(String allKeywords, String reservedWords){ 339 String nonReservedKeywords=""; 340 ArrayList<String> allKeywordList = keywordsStringToArrayList(allKeywords); 341 ArrayList<String> reservedWordList = keywordsStringToArrayList(reservedWords); 342 int count = 0; 343 for(String s: allKeywordList){ 344 if (!reservedWordList.contains(s)){ 345 nonReservedKeywords = nonReservedKeywords+s+","; 346 count++; 347 } 348 } 349 350 System.out.println(String.format("All keywords: %d, reserved words: %d, non-reserved keywords found: %d, gap should be 0 = %d" 351 ,allKeywordList.size(),reservedWordList.size(),count,allKeywordList.size()-reservedWordList.size()-count )); 352 353 return nonReservedKeywords; 354 } 355 356 static String nonReservedKeywords = "ABSENT,ABSOLUTE,ACCORDING,ACTION,ADA,ADD,ADMIN,AFTER,ALWAYS,ASC,ASSERTION,ASSIGNMENT,ATTRIBUTE,ATTRIBUTES,BASE64,BEFORE,BERNOULLI,BLOCKED,BOM,BREADTH,C,CASCADE,CATALOG,CATALOG_NAME,CHAIN,CHARACTERISTICS,CHARACTERS,CHARACTER_SET_CATALOG,CHARACTER_SET_NAME,CHARACTER_SET_SCHEMA,CLASS_ORIGIN,COBOL,COLLATION,COLLATION_CATALOG,COLLATION_NAME,COLLATION_SCHEMA,COLUMNS,COLUMN_NAME,COMMAND_FUNCTION,COMMAND_FUNCTION_CODE,COMMITTED,CONDITION_NUMBER,CONNECTION,CONNECTION_NAME,CONSTRAINTS,CONSTRAINT_CATALOG,CONSTRAINT_NAME,CONSTRAINT_SCHEMA,CONSTRUCTOR,CONTAINS,CONTENT,CONTINUE,CONTROL,CURSOR_NAME,DATA,DATETIME_INTERVAL_CODE,DATETIME_INTERVAL_PRECISION,DB,DEFAULTS,DEFERRABLE,DEFERRED,DEFINED,DEFINER,DEGREE,DEPTH,DERIVED,DESC,DESCRIPTOR,DIAGNOSTICS,DISPATCH,DOCUMENT,DOMAIN,DYNAMIC_FUNCTION,DYNAMIC_FUNCTION_CODE,EMPTY,ENCODING,EQUALS,EXCLUDE,EXCLUDING,FILE,FINAL,FIRST,FLAG,FOLLOWING,FORTRAN,FOUND,FS,G,GENERAL,GENERATED,GO,GOTO,GRANTED,HEX,HIERARCHY,ID,IGNORE,IMMEDIATE,IMPLEMENTATION,INCLUDING,INCREMENT,INDENT,INITIALLY,INPUT,INSTANCE,INSTANTIABLE,INSTEAD,INTEGRITY,INVOKER,ISOLATION,K,KEY,KEY_MEMBER,KEY_TYPE,LAST,LENGTH,LEVEL,LIBRARY,LIMIT,LINK,LOCATION,LOCATOR,M,MAP,MAPPING,MATCHED,MAXVALUE,MESSAGE_LENGTH,MESSAGE_OCTET_LENGTH,MESSAGE_TEXT,MINVALUE,MORE,MUMPS,NAME,NAMES,NAMESPACE,NESTING,NEXT,NFC,NFD,NFKC,NFKD,NIL,NORMALIZED,NULLABLE,NULLS,NUMBER,OBJECT,OCTETS,OFF,OPTION,OPTIONS,ORDERING,ORDINALITY,OTHERS,OUTPUT,OVERRIDING,P,PAD,PARAMETER_MODE,PARAMETER_NAME,PARAMETER_ORDINAL_POSITION,PARAMETER_SPECIFIC_CATALOG,PARAMETER_SPECIFIC_NAME,PARAMETER_SPECIFIC_SCHEMA,PARTIAL,PASCAL,PASSING,PASSTHROUGH,PATH,PERMISSION,PLACING,PLI,PRECEDING,PRESERVE,PRIOR,PRIVILEGES,PUBLIC,READ,RECOVERY,RELATIVE,REPEATABLE,REQUIRING,RESPECT,RESTART,RESTORE,RESTRICT,RETURNED_CARDINALITY,RETURNED_LENGTH,RETURNED_OCTET_LENGTH,RETURNED_SQLSTATE,RETURNING,ROLE,ROUTINE,ROUTINE_CATALOG,ROUTINE_NAME,ROUTINE_SCHEMA,ROW_COUNT,SCALE,SCHEMA,SCHEMA_NAME,SCOPE_CATALOG,SCOPE_NAME,SCOPE_SCHEMA,SECTION,SECURITY,SELECTIVE,SELF,SEQUENCE,SERIALIZABLE,SERVER,SERVER_NAME,SESSION,SETS,SIMPLE,SIZE,SOURCE,SPACE,SPECIFIC_NAME,STANDALONE,STATE,STATEMENT,STRIP,STRUCTURE,STYLE,SUBCLASS_ORIGIN,T,TABLE_NAME,TEMPORARY,TIES,TOKEN,TOP_LEVEL_COUNT,TRANSACTION,TRANSACTIONS_COMMITTED,TRANSACTIONS_ROLLED_BACK,TRANSACTION_ACTIVE,TRANSFORM,TRANSFORMS,TRIGGER_CATALOG,TRIGGER_NAME,TRIGGER_SCHEMA,TYPE,UNBOUNDED,UNCOMMITTED,UNDER,UNLINK,UNNAMED,UNTYPED,URI,USAGE,USER_DEFINED_TYPE_CATALOG,USER_DEFINED_TYPE_CODE,USER_DEFINED_TYPE_NAME,USER_DEFINED_TYPE_SCHEMA,VALID,VERSION,VIEW,WHITESPACE,WORK,WRAPPER,WRITE,XMLDECLARATION,XMLSCHEMA,YES,ZONE"; 357 static String reservedWords = "ADD,AFTER,ALL,ALLOCATE,ALLOW,ALTER,AND,ANY,AS,ASENSITIVE,ASSOCIATE,ASUTIME,AT,AUDIT,AUX,AUXILIARY,BEFORE,BEGIN,BETWEEN,BUFFERPOOL,BY,CALL,CAPTURE,CASCADED,CASE,CAST,CCSID,CHAR,CHARACTER,CHECK,CLONE,CLOSE,CLUSTER,COLLECTION,COLLID,COLUMN,COMMENT,COMMIT,CONCAT,CONDITION,CONNECT,CONNECTION,CONSTRAINT,CONTAINS,CONTENT,CONTINUE,CREATE,CURRENT,CURRENT_DATE,CURRENT_LC_CTYPE,CURRENT_PATH,CURRENT_SCHEMA,CURRENT_TIME,CURRENT_TIMESTAMP,CURSOR,DATA,DATABASE,DAY,DAYS,DBINFO,DECLARE,DEFAULT,DELETE,DESCRIPTOR,DETERMINISTIC,DISABLE,DISALLOW,DISTINCT,DO,DOCUMENT,DOUBLE,DROP,DSSIZE,DYNAMIC,EDITPROC,ELSE,ELSEIF,ENCODING,ENCRYPTION,END,ENDING,END-EXEC,ERASE,ESCAPE,EXCEPT,EXCEPTION,EXECUTE,EXISTS,EXIT,EXPLAIN,EXTERNAL,FENCED,FETCH,FIELDPROC,FINAL,FIRST,FOR,FREE,FROM,FULL,FUNCTION,GENERATED,GET,GLOBAL,GO,GOTO,GRANT,GROUP,HANDLER,HAVING,HOLD,HOUR,HOURS,IF,IMMEDIATE,IN,INCLUSIVE,INDEX,INHERIT,INNER,INOUT,INSENSITIVE,INSERT,INTERSECT,INTO,IS,ISOBID,ITERATE,JAR,JOIN,KEEP,KEY,LABEL,LANGUAGE,LAST,LC_CTYPE,LEAVE,LEFT,LIKE,LOCAL,LOCALE,LOCATOR,LOCATORS,LOCK,LOCKMAX,LOCKSIZE,LONG,LOOP,MAINTAINED,MATERIALIZED,MICROSECOND,MICROSECONDS,MINUTE,MINUTES,MODIFIES,MONTH,MONTHS,NEXT,NEXTVAL,NO,NONE,NOT,NULL,NULLS,NUMPARTS,OBID,OF,OLD,ON,OPEN,OPTIMIZATION,OPTIMIZE,OR,ORDER,ORGANIZATION,OUT,OUTER,PACKAGE,PARAMETER,PART,PADDED,PARTITION,PARTITIONED,PARTITIONING,PATH,PIECESIZE,PERIOD,PLAN,PRECISION,PREPARE,PREVVAL,PRIOR,PRIQTY,PRIVILEGES,PROCEDURE,PROGRAM,PSID,PUBLIC,QUERY,QUERYNO,READS,REFERENCES,REFRESH,RESIGNAL,RELEASE,RENAME,REPEAT,RESTRICT,RESULT,RESULT_SET_LOCATOR,RETURN,RETURNS,REVOKE,RIGHT,ROLE,ROLLBACK,ROUND_CEILING,ROUND_DOWN,ROUND_FLOOR,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_HALF_UP,ROUND_UP,ROW,ROWSET,RUN,SAVEPOINT,SCHEMA,SCRATCHPAD,SECOND,SECONDS,SECQTY,SECURITY,SEQUENCE,SELECT,SENSITIVE,SESSION_USER,SET,SIGNAL,SIMPLE,SOME,SOURCE,SPECIFIC,STANDARD,STATIC,STATEMENT,STAY,STOGROUP,STORES,STYLE,SUMMARY,SYNONYM,SYSFUN,SYSIBM,SYSPROC,SYSTEM,TABLE,TABLESPACE,THEN,TO,TRIGGER,TRUNCATE,TYPE,UNDO,UNION,UNIQUE,UNTIL,UPDATE,USER,USING,VALIDPROC,VALUE,VALUES,VARIABLE,VARIANT,VCAT,VIEW,VOLATILE,VOLUMES,WHEN,WHENEVER,WHERE,WHILE,WITH,WLM,XMLEXISTS,XMLNAMESPACES,XMLCAST,YEAR,YEARS,ZONE"; 358 static String allKeywordList = "A,ABS,ABSENT,ABSOLUTE,ACCORDING,ACTION,ADA,ADD,ADMIN,AFTER,ALL,ALLOCATE,ALTER,ALWAYS,AND,ANY,ARE,ARRAY,ARRAY_AGG,AS,ASC,ASENSITIVE,ASSERTION,ASSIGNMENT,ASYMMETRIC,AT,ATOMIC,ATTRIBUTE,ATTRIBUTES,AUTHORIZATION,AVG,BASE64,BEFORE,BEGIN,BERNOULLI,BETWEEN,BIGINT,BINARY,BLOB,BLOCKED,BOM,BOOLEAN,BOTH,BREADTH,BY,C,CALL,CALLED,CARDINALITY,CASCADE,CASCADED,CASE,CAST,CATALOG,CATALOG_NAME,CEIL,CEILING,CHAIN,CHAR,CHARACTER,CHARACTERISTICS,CHARACTERS,CHARACTER_LENGTH,CHARACTER_SET_CATALOG,CHARACTER_SET_NAME,CHARACTER_SET_SCHEMA,CHAR_LENGTH,CHECK,CLASS_ORIGIN,CLOB,CLOSE,COALESCE,COBOL,COLLATE,COLLATION,COLLATION_CATALOG,COLLATION_NAME,COLLATION_SCHEMA,COLLECT,COLUMN,COLUMNS,COLUMN_NAME,COMMAND_FUNCTION,COMMAND_FUNCTION_CODE,COMMIT,COMMITTED,CONDITION,CONDITION_NUMBER,CONNECT,CONNECTION,CONNECTION_NAME,CONSTRAINT,CONSTRAINTS,CONSTRAINT_CATALOG,CONSTRAINT_NAME,CONSTRAINT_SCHEMA,CONSTRUCTOR,CONTAINS,CONTENT,CONTINUE,CONTROL,CONVERT,CORR,CORRESPONDING,COUNT,COVAR_POP,COVAR_SAMP,CREATE,CROSS,CUBE,CUME_DIST,CURRENT,CURRENT_CATALOG,CURRENT_DATE,CURRENT_DEFAULT_TRANSFORM_GROUP,CURRENT_PATH,CURRENT_ROLE,CURRENT_SCHEMA,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_TRANSFORM_GROUP_FOR_TYPE,CURRENT_USER,CURSOR,CURSOR_NAME,CYCLE,DATA,DATALINK,DATE,DATETIME_INTERVAL_CODE,DATETIME_INTERVAL_PRECISION,DAY,DB,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFAULTS,DEFERRABLE,DEFERRED,DEFINED,DEFINER,DEGREE,DELETE,DENSE_RANK,DEPTH,DEREF,DERIVED,DESC,DESCRIBE,DESCRIPTOR,DETERMINISTIC,DIAGNOSTICS,DISCONNECT,DISPATCH,DISTINCT,DLNEWCOPY,DLPREVIOUSCOPY,DLURLCOMPLETE,DLURLCOMPLETEONLY,DLURLCOMPLETEWRITE,DLURLPATH,DLURLPATHONLY,DLURLPATHWRITE,DLURLSCHEME,DLURLSERVER,DLVALUE,DOCUMENT,DOMAIN,DOUBLE,DROP,DYNAMIC,DYNAMIC_FUNCTION,DYNAMIC_FUNCTION_CODE,EACH,ELEMENT,ELSE,EMPTY,ENCODING,END,END-EXEC,EQUALS,ESCAPE,EVERY,EXCEPT,EXCLUDE,EXCLUDING,EXEC,EXECUTE,EXISTS,EXP,EXTERNAL,EXTRACT,FALSE,FETCH,FILE,FILTER,FINAL,FIRST,FIRST_VALUE,FLAG,FLOAT,FLOOR,FOLLOWING,FOR,FOREIGN,FORTRAN,FOUND,FREE,FROM,FS,FULL,FUNCTION,FUSION,G,GENERAL,GENERATED,GET,GLOBAL,GO,GOTO,GRANT,GRANTED,GROUP,GROUPING,HAVING,HEX,HIERARCHY,HOLD,HOUR,ID,IDENTITY,IGNORE,IMMEDIATE,IMPLEMENTATION,IMPORT,IN,INCLUDING,INCREMENT,INDENT,INDICATOR,INITIALLY,INNER,INOUT,INPUT,INSENSITIVE,INSERT,INSTANCE,INSTANTIABLE,INSTEAD,INT,INTEGER,INTEGRITY,INTERSECT,INTERSECTION,INTERVAL,INTO,INVOKER,IS,ISOLATION,JOIN,K,KEY,KEY_MEMBER,KEY_TYPE,LAG,LANGUAGE,LARGE,LAST,LAST_VALUE,LATERAL,LEAD,LEADING,LEFT,LENGTH,LEVEL,LIBRARY,LIKE,LIKE_REGEX,LIMIT,LINK,LN,LOCAL,LOCALTIME,LOCALTIMESTAMP,LOCATION,LOCATOR,LOWER,M,MAP,MAPPING,MATCH,MATCHED,MAX,MAXVALUE,MAX_CARDINALITY,MEMBER,MERGE,MESSAGE_LENGTH,MESSAGE_OCTET_LENGTH,MESSAGE_TEXT,METHOD,MIN,MINUTE,MINVALUE,MOD,MODIFIES,MODULE,MONTH,MORE,MULTISET,MUMPS,NAME,NAMES,NAMESPACE,NATIONAL,NATURAL,NCHAR,NCLOB,NESTING,NEW,NEXT,NFC,NFD,NFKC,NFKD,NIL,NO,NONE,NORMALIZE,NORMALIZED,NOT,NTH_VALUE,NTILE,NULL,NULLABLE,NULLIF,NULLS,NUMBER,NUMERIC,OBJECT,OCCURRENCES_REGEX,OCTETS,OCTET_LENGTH,OF,OFF,OFFSET,OLD,ON,ONLY,OPEN,OPTION,OPTIONS,OR,ORDER,ORDERING,ORDINALITY,OTHERS,OUT,OUTER,OUTPUT,OVER,OVERLAPS,OVERLAY,OVERRIDING,P,PAD,PARAMETER,PARAMETER_MODE,PARAMETER_NAME,PARAMETER_ORDINAL_POSITION,PARAMETER_SPECIFIC_CATALOG,PARAMETER_SPECIFIC_NAME,PARAMETER_SPECIFIC_SCHEMA,PARTIAL,PARTITION,PASCAL,PASSING,PASSTHROUGH,PATH,PERCENTILE_CONT,PERCENTILE_DISC,PERCENT_RANK,PERMISSION,PLACING,PLI,POSITION,POSITION_REGEX,POWER,PRECEDING,PRECISION,PREPARE,PRESERVE,PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,RANGE,RANK,READ,READS,REAL,RECOVERY,RECURSIVE,REF,REFERENCES,REFERENCING,REGR_AVGX,REGR_AVGY,REGR_COUNT,REGR_INTERCEPT,REGR_R2,REGR_SLOPE,REGR_SXX,REGR_SXY,REGR_SYY,RELATIVE,RELEASE,REPEATABLE,REQUIRING,RESPECT,RESTART,RESTORE,RESTRICT,RESULT,RETURN,RETURNED_CARDINALITY,RETURNED_LENGTH,RETURNED_OCTET_LENGTH,RETURNED_SQLSTATE,RETURNING,RETURNS,REVOKE,RIGHT,ROLE,ROLLBACK,ROLLUP,ROUTINE,ROUTINE_CATALOG,ROUTINE_NAME,ROUTINE_SCHEMA,ROW,ROWS,ROW_COUNT,ROW_NUMBER,SAVEPOINT,SCALE,SCHEMA,SCHEMA_NAME,SCOPE,SCOPE_CATALOG,SCOPE_NAME,SCOPE_SCHEMA,SCROLL,SEARCH,SECOND,SECTION,SECURITY,SELECT,SELECTIVE,SELF,SENSITIVE,SEQUENCE,SERIALIZABLE,SERVER,SERVER_NAME,SESSION,SESSION_USER,SET,SETS,SIMILAR,SIMPLE,SIZE,SMALLINT,SOME,SOURCE,SPACE,SPECIFIC,SPECIFICTYPE,SPECIFIC_NAME,SQL,SQLEXCEPTION,SQLSTATE,SQLWARNING,SQRT,STANDALONE,START,STATE,STATEMENT,STATIC,STDDEV_POP,STDDEV_SAMP,STRIP,STRUCTURE,STYLE,SUBCLASS_ORIGIN,SUBMULTISET,SUBSTRING,SUBSTRING_REGEX,SUM,SYMMETRIC,SYSTEM,SYSTEM_USER,T,TABLE,TABLESAMPLE,TABLE_NAME,TEMPORARY,THEN,TIES,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,TO,TOKEN,TOP_LEVEL_COUNT,TRAILING,TRANSACTION,TRANSACTIONS_COMMITTED,TRANSACTIONS_ROLLED_BACK,TRANSACTION_ACTIVE,TRANSFORM,TRANSFORMS,TRANSLATE,TRANSLATE_REGEX,TRANSLATION,TREAT,TRIGGER,TRIGGER_CATALOG,TRIGGER_NAME,TRIGGER_SCHEMA,TRIM,TRIM_ARRAY,TRUE,TRUNCATE,TYPE,UESCAPE,UNBOUNDED,UNCOMMITTED,UNDER,UNION,UNIQUE,UNKNOWN,UNLINK,UNNAMED,UNNEST,UNTYPED,UPDATE,UPPER,URI,USAGE,USER,USER_DEFINED_TYPE_CATALOG,USER_DEFINED_TYPE_CODE,USER_DEFINED_TYPE_NAME,USER_DEFINED_TYPE_SCHEMA,USING,VALID,VALUE,VALUES,VARBINARY,VARCHAR,VARYING,VAR_POP,VAR_SAMP,VERSION,VIEW,WHEN,WHENEVER,WHERE,WHITESPACE,WIDTH_BUCKET,WINDOW,WITH,WITHIN,WITHOUT,WORK,WRAPPER,WRITE,XML,XMLAGG,XMLATTRIBUTES,XMLBINARY,XMLCAST,XMLCOMMENT,XMLCONCAT,XMLDECLARATION,XMLDOCUMENT,XMLELEMENT,XMLEXISTS,XMLFOREST,XMLITERATE,XMLNAMESPACES,XMLPARSE,XMLPI,XMLQUERY,XMLSCHEMA,XMLSERIALIZE,XMLTABLE,XMLTEXT,XMLVALIDATE,YEAR,YES,ZONE"; 359 static String keywordsInLexer ="addkeyword('ACCESS',RW_ACCESS,ttcolumn);\n" + 360 "addkeyword('ACCTNG',RW_ACCTNG,ttcolumn);\n" + 361 "addkeyword('ACTION',RW_ACTION,ttcolumn);\n" + 362 "addkeyword('ACTIVATE',RW_ACTIVATE,ttcolumn);\n" + 363 "addkeyword('ADD',RW_ADD,ttreserved);\n" + 364 "addkeyword('AFTER',RW_AFTER,ttreserved);\n" + 365 "addkeyword('AGE',RW_AGE,ttcolumn);\n" + 366 "addkeyword('ALIAS',RW_ALIAS,ttcolumn);\n" + 367 "addkeyword('ALL',RW_ALL,ttreserved);\n" + 368 "addkeyword('ALLOCATE',RW_ALLOCATE,ttreserved);\n" + 369 "addkeyword('ALLOW',RW_ALLOW,ttreserved);\n" + 370 "addkeyword('ALTER',RW_ALTER,ttreserved);\n" + 371 "addkeyword('ALWAYS',RW_ALWAYS,ttcolumn);\n" + 372 "addkeyword('AND',RW_AND,ttreserved);\n" + 373 "addkeyword('ANY',RW_ANY,ttreserved);\n" + 374 "addkeyword('APPEND',RW_APPEND,ttcolumn);\n" + 375 "addkeyword('APPLNAME',RW_APPLNAME,ttcolumn);\n" + 376 "addkeyword('ARRAY',RW_ARRAY,ttcolumn);\n" + 377 "addkeyword('AS',RW_AS,ttreserved);\n" + 378 "addkeyword('ASC',RW_ASC,ttcolumn);\n" + 379 "addkeyword('ASCII',RW_ASCII,ttcolumn);\n" + 380 "addkeyword('ASENSITIVE',RW_ASENSITIVE,ttreserved);\n" + 381 "addkeyword('ASSOCIATE',RW_ASSOCIATE,ttreserved);\n" + 382 "addkeyword('ASUTIME',RW_ASUTIME,ttreserved);\n" + 383 "addkeyword('AT',RW_AT,ttreserved);\n" + 384 "addkeyword('AUDIT',RW_AUDIT,ttreserved);\n" + 385 "addkeyword('ATOMIC',RW_ATOMIC,ttcolumn);\n" + 386 "addkeyword('AUX',RW_AUX,ttreserved);\n" + 387 "addkeyword('AUXILIARY',RW_AUXILIARY,ttreserved);\n" + 388 "addkeyword('BEFORE',RW_BEFORE,ttreserved);\n" + 389 "addkeyword('BEGIN',RW_BEGIN,ttreserved);\n" + 390 "addkeyword('BERNOULLI',RW_BERNOULLI,ttcolumn);\n" + 391 "addkeyword('BETWEEN',RW_BETWEEN,ttreserved);\n" + 392 "addkeyword('BIGINT',RW_BIGINT,ttcolumn);\n" + 393 "addkeyword('BINARY',RW_BINARY,ttcolumn);\n" + 394 "addkeyword('BIT',RW_BIT,ttcolumn);\n" + 395 "addkeyword('BLOB',RW_BLOB,ttcolumn);\n" + 396 "addkeyword('BLOCKED',RW_BLOCKED,ttcolumn);\n" + 397 "addkeyword('BOTH',RW_BOTH,ttcolumn);\n" + 398 "addkeyword('BUFFERPOOL',RW_BUFFERPOOL,ttreserved);\n" + 399 "addkeyword('BUILD',RW_BUILD,ttcolumn);\n" + 400 "addkeyword('BUSINESS_TIME',RW_BUSINESS_TIME,ttcolumn);\n" + 401 "addkeyword('BY',RW_BY,ttreserved);\n" + 402 "addkeyword('CACHE',RW_CACHE,ttcolumn);\n" + 403 "addkeyword('CALL',RW_CALL,ttreserved);\n" + 404 "addkeyword('CALLED',RW_CALLED,ttcolumn);\n" + 405 "addkeyword('CALLER',RW_CALLER,ttcolumn);\n" + 406 "addkeyword('CAPTURE',RW_CAPTURE,ttreserved);\n" + 407 "addkeyword('CARDINALITY',RW_CARDINALITY,ttcolumn);\n" + 408 "addkeyword('CASCADE',RW_CASCADE,ttcolumn);\n" + 409 "addkeyword('CASCADED',RW_CASCADED,ttreserved);\n" + 410 "addkeyword('CASE',RW_CASE,ttreserved);\n" + 411 "addkeyword('CAST',RW_CAST,ttreserved);\n" + 412 "addkeyword('CATEGORIES',RW_CATEGORIES,ttcolumn);\n" + 413 "addkeyword('CCSID',RW_CCSID,ttreserved);\n" + 414 "addkeyword('CHANGE',RW_CHANGE,ttcolumn);\n" + 415 "addkeyword('CHANGES',RW_CHANGES,ttcolumn);\n" + 416 "addkeyword('CHAR',RW_CHAR,ttreserved);\n" + 417 "addkeyword('CHARACTER',RW_CHARACTER,ttreserved);\n" + 418 "addkeyword('CHECK',RW_CHECK,ttreserved);\n" + 419 "addkeyword('CLIENT',RW_CLIENT,ttcolumn);\n" + 420 "addkeyword('CLIENT_ACCTNG',RW_CLIENT_ACCTNG,ttcolumn);\n" + 421 "addkeyword('CLIENT_APPLNAME',RW_CLIENT_APPLNAME,ttcolumn);\n" + 422 "addkeyword('CLIENT_USERID',RW_CLIENT_USERID,ttcolumn);\n" + 423 "addkeyword('CLIENT_WRKSTNNAME',RW_CLIENT_WRKSTNNAME,ttcolumn);\n" + 424 "addkeyword('CLOB',RW_CLOB,ttcolumn);\n" + 425 "addkeyword('CLONE',RW_CLONE,ttreserved);\n" + 426 "addkeyword('CLOSE',RW_CLOSE,ttreserved);\n" + 427 "addkeyword('CLUSTER',RW_CLUSTER,ttreserved);\n" + 428 "addkeyword('CODEUNITS16',RW_CODEUNITS16,ttcolumn);\n" + 429 "addkeyword('CODEUNITS32',RW_CODEUNITS32,ttcolumn);\n" + 430 "addkeyword('COLLECT',RW_COLLECT,ttcolumn);\n" + 431 "addkeyword('COLLECTION',RW_COLLECTION,ttreserved);\n" + 432 "addkeyword('COLLID',RW_COLLID,ttreserved);\n" + 433 "addkeyword('COLUMN',RW_COLUMN,ttreserved);\n" + 434 "addkeyword('COLUMNS',RW_COLUMNS,ttcolumn);\n" + 435 "addkeyword('COMMENT',RW_COMMENT,ttreserved);\n" + 436 "addkeyword('COMMIT',RW_COMMIT,ttreserved);\n" + 437 "addkeyword('COMPACT',RW_COMPACT,ttcolumn);\n" + 438 "addkeyword('COMPRESS',RW_COMPRESS,ttcolumn);\n" + 439 "addkeyword('COMPRESSION',RW_COMPRESSION,ttcolumn);\n" + 440 "addkeyword('CONCAT',RW_CONCAT,ttreserved);\n" + 441 "addkeyword('CONDITION',RW_CONDITION,ttreserved);\n" + 442 "addkeyword('CONNECT',RW_CONNECT,ttreserved);\n" + 443 "addkeyword('CONNECTION',RW_CONNECTION,ttreserved);\n" + 444 "addkeyword('CONSTANT',RW_CONSTANT,ttcolumn);\n" + 445 "addkeyword('CONSTRAINT',RW_CONSTRAINT,ttreserved);\n" + 446 "addkeyword('CONSTRAINTS',RW_CONSTRAINTS,ttcolumn);\n" + 447 "addkeyword('CONTAINS',RW_CONTAINS,ttreserved);\n" + 448 "addkeyword('CONTENT',RW_CONTENT,ttreserved);\n" + 449 "addkeyword('CONTINUE',RW_CONTINUE,ttreserved);\n" + 450 "addkeyword('CONTROL',RW_CONTROL,ttcolumn);\n" + 451 "addkeyword('COUNT',RW_COUNT,ttcolumn);\n" + 452 "addkeyword('CREATE',RW_CREATE,ttreserved);\n" + 453 "addkeyword('CROSS',RW_CROSS,ttcolumn);\n" + 454 "addkeyword('CS',RW_CS,ttcolumn);\n" + 455 "addkeyword('CUBE',RW_CUBE,ttcolumn);\n" + 456 "addkeyword('CURRENT',RW_CURRENT,ttreserved);\n" + 457 "addkeyword('CURRENT_DATE',RW_CURRENT_DATE,ttreserved);\n" + 458 "addkeyword('CURRENT_LC_CTYPE',RW_CURRENT_LC_CTYPE,ttreserved);\n" + 459 "addkeyword('CURRENT_LC_PATH',RW_CURRENT_LC_PATH,ttcolumn);\n" + 460 "addkeyword('CURRENT_PATH',RW_CURRENT_PATH,ttreserved);\n" + 461 "addkeyword('CURRENT_SCHEMA',RW_CURRENT_SCHEMA,ttreserved);\n" + 462 "addkeyword('CURRENT_SERVER',RW_CURRENT_SERVER,ttcolumn);\n" + 463 "addkeyword('CURRENT_TIME',RW_CURRENT_TIME,ttreserved);\n" + 464 "addkeyword('CURRENT_TIMESTAMP',RW_CURRENT_TIMESTAMP,ttreserved);\n" + 465 "addkeyword('CURRENT_TIMEZONE',RW_CURRENT_TIMEZONE,ttcolumn);\n" + 466 "addkeyword('CURRENT_USER',RW_CURRENT_USER,ttcolumn);\n" + 467 "addkeyword('CURSOR',RW_CURSOR,ttreserved);\n" + 468 "addkeyword('CURSORS',RW_CURSORS,ttcolumn);\n" + 469 "addkeyword('CYCLE',RW_CYCLE,ttcolumn);\n" + 470 "addkeyword('DATA',RW_DATA,ttreserved);\n" + 471 "addkeyword('DATABASE',RW_DATABASE,ttreserved);\n" + 472 "addkeyword('DATALINK',RW_DATALINK,ttcolumn);\n" + 473 "addkeyword('DATE',RW_DATE,ttcolumn);\n" + 474 "addkeyword('DAY',RW_DAY,ttreserved);\n" + 475 "addkeyword('DAYS',RW_DAYS,ttreserved);\n" + 476 "addkeyword('DB',RW_DB,ttcolumn);\n" + 477 "addkeyword('DB2GENERAL',RW_DB2GENERAL,ttcolumn);\n" + 478 "addkeyword('DB2OPTIONS',RW_DB2OPTIONS,ttcolumn);\n" + 479 "addkeyword('DB2SQL',RW_DB2SQL,ttcolumn);\n" + 480 "addkeyword('DBA',RW_DBA,ttcolumn);\n" + 481 "addkeyword('DBCLOB',RW_DBCLOB,ttcolumn);\n" + 482 "addkeyword('DBINFO',RW_DBINFO,ttreserved);\n" + 483 "addkeyword('DBPARTITIONNUM',RW_DBPARTITIONNUM,ttcolumn);\n" + 484 "addkeyword('DBSPACE',RW_DBSPACE,ttcolumn);\n" + 485 "addkeyword('DEACTIVATE',RW_DEACTIVATE,ttcolumn);\n" + 486 "addkeyword('DEC',RW_DEC,ttcolumn);\n" + 487 "addkeyword('DECFLOAT',RW_DECFLOAT,ttcolumn);\n" + 488 "addkeyword('DECIMAL',RW_DECIMAL,ttcolumn);\n" + 489 "addkeyword('DECLARE',RW_DECLARE,ttreserved);\n" + 490 "addkeyword('DECODE',RW_DECODE,ttcolumn);\n" + 491 "addkeyword('DEFAULT',RW_DEFAULT,ttreserved);\n" + 492 "addkeyword('DEFAULTS',RW_DEFAULTS,ttcolumn);\n" + 493 "addkeyword('DEFERRABLE',RW_DEFERRABLE,ttcolumn);\n" + 494 "addkeyword('DEFERRED',RW_DEFERRED,ttcolumn);\n" + 495 "addkeyword('DEGREE',RW_DEGREE,ttcolumn);\n" + 496 "addkeyword('DELETE',RW_DELETE,ttreserved);\n" + 497 "addkeyword('DESC',RW_DESC,ttcolumn);\n" + 498 "addkeyword('DESCRIBE',RW_DESCRIBE,ttcolumn);\n" + 499 "addkeyword('DESCRIPTOR',RW_DESCRIPTOR,ttreserved);\n" + 500 "addkeyword('DETAILED',RW_DETAILED,ttcolumn);\n" + 501 "addkeyword('DETERMINED',RW_DETERMINED,ttcolumn);\n" + 502 "addkeyword('DETERMINISTIC',RW_DETERMINISTIC,ttreserved);\n" + 503 "addkeyword('DIAGNOSTICS',RW_DIAGNOSTICS,ttcolumn);\n" + 504 "addkeyword('DIMENSIONS',RW_DIMENSIONS,ttcolumn);\n" + 505 "addkeyword('DISABLE',RW_DISABLE,ttreserved);\n" + 506 "addkeyword('DISALLOW',RW_DISALLOW,ttreserved);\n" + 507 "addkeyword('DISCONNECT',RW_DISCONNECT,ttcolumn);\n" + 508 "addkeyword('DISPATCH',RW_DISPATCH,ttcolumn);\n" + 509 "addkeyword('DISTINCT',RW_DISTINCT,ttreserved);\n" + 510 "addkeyword('DO',RW_DO,ttreserved);\n" + 511 "addkeyword('DOCUMENT',RW_DOCUMENT,ttreserved);\n" + 512 "addkeyword('DOUBLE',RW_DOUBLE,ttreserved);\n" + 513 "addkeyword('DROP',RW_DROP,ttreserved);\n" + 514 "addkeyword('DSSIZE',RW_DSSIZE,ttreserved);\n" + 515 "addkeyword('DYNAMIC',RW_DYNAMIC,ttreserved);\n" + 516 "addkeyword('EACH',RW_EACH,ttcolumn);\n" + 517 "addkeyword('EDITPROC',RW_EDITPROC,ttreserved);\n" + 518 "addkeyword('ELSE',RW_ELSE,ttreserved);\n" + 519 "addkeyword('ELSEIF',RW_ELSEIF,ttreserved);\n" + 520 "addkeyword('EMPTY',RW_EMPTY,ttcolumn);\n" + 521 "addkeyword('ENABLE',RW_ENABLE,ttcolumn);\n" + 522 "addkeyword('ENCODING',RW_ENCODING,ttreserved);\n" + 523 "addkeyword('ENCRYPTION',RW_ENCRYPTION,ttreserved);\n" + 524 "addkeyword('END',RW_END,ttreserved);\n" + 525 "addkeyword('END-EXEC',RW_END-EXEC,ttreserved);\n" + 526 "addkeyword('ENDING',RW_ENDING,ttreserved);\n" + 527 "addkeyword('ENFORCED',RW_ENFORCED,ttcolumn);\n" + 528 "addkeyword('ERASE',RW_ERASE,ttreserved);\n" + 529 "addkeyword('ESCAPE',RW_ESCAPE,ttreserved);\n" + 530 "addkeyword('EXACT',RW_EXACT,ttcolumn);\n" + 531 "addkeyword('EXCEPT',RW_EXCEPT,ttreserved);\n" + 532 "addkeyword('EXCEPTION',RW_EXCEPTION,ttreserved);\n" + 533 "addkeyword('EXCLUDING',RW_EXCLUDING,ttcolumn);\n" + 534 "addkeyword('EXCLUSIVE',RW_EXCLUSIVE,ttcolumn);\n" + 535 "addkeyword('EXECUTE',RW_EXECUTE,ttreserved);\n" + 536 "addkeyword('EXECUTION',RW_EXECUTION,ttcolumn);\n" + 537 "addkeyword('EXISTS',RW_EXISTS,ttreserved);\n" + 538 "addkeyword('EXIT',RW_EXIT,ttreserved);\n" + 539 "addkeyword('EXPLAIN',RW_EXPLAIN,ttreserved);\n" + 540 "addkeyword('EXPRESSION',RW_EXPRESSION,ttcolumn);\n" + 541 "addkeyword('EXTENSION',RW_EXTENSION,ttcolumn);\n" + 542 "addkeyword('EXTERNAL',RW_EXTERNAL,ttreserved);\n" + 543 "addkeyword('EXTRACT',RW_EXTRACT,ttcolumn);\n" + 544 "addkeyword('FEDERATED_TOOL',RW_FEDERATED_TOOL,ttcolumn);\n" + 545 "addkeyword('FENCED',RW_FENCED,ttreserved);\n" + 546 "addkeyword('FETCH',RW_FETCH,ttreserved);\n" + 547 "addkeyword('FIELDPROC',RW_FIELDPROC,ttreserved);\n" + 548 "addkeyword('FILE',RW_FILE,ttcolumn);\n" + 549 "addkeyword('FILTER',RW_FILTER,ttcolumn);\n" + 550 "addkeyword('FINAL',RW_FINAL,ttreserved);\n" + 551 "addkeyword('FIRST',RW_FIRST,ttreserved);\n" + 552 "addkeyword('FLOAT',RW_FLOAT,ttcolumn);\n" + 553 "addkeyword('FLUSH',RW_FLUSH,ttcolumn);\n" + 554 "addkeyword('FOLLOWING',RW_FOLLOWING,ttcolumn);\n" + 555 "addkeyword('FOR',RW_FOR,ttreserved);\n" + 556 "addkeyword('FORCE',RW_FORCE,ttcolumn);\n" + 557 "addkeyword('FOREIGN',RW_FOREIGN,ttcolumn);\n" + 558 "addkeyword('FOUND',RW_FOUND,ttcolumn);\n" + 559 "addkeyword('FREE',RW_FREE,ttreserved);\n" + 560 "addkeyword('FROM',RW_FROM,ttreserved);\n" + 561 "addkeyword('FS',RW_FS,ttcolumn);\n" + 562 "addkeyword('FULL',RW_FULL,ttreserved);\n" + 563 "addkeyword('FUNCTION',RW_FUNCTION,ttreserved);\n" + 564 "addkeyword('GENERAL',RW_GENERAL,ttcolumn);\n" + 565 "addkeyword('GENERATED',RW_GENERATED,ttreserved);\n" + 566 "addkeyword('GET',RW_GET,ttreserved);\n" + 567 "addkeyword('GLOBAL',RW_GLOBAL,ttreserved);\n" + 568 "addkeyword('GO',RW_GO,ttreserved);\n" + 569 "addkeyword('GOTO',RW_GOTO,ttreserved);\n" + 570 "addkeyword('GRANT',RW_GRANT,ttreserved);\n" + 571 "addkeyword('GRAPHIC',RW_GRAPHIC,ttcolumn);\n" + 572 "addkeyword('GROUP',RW_GROUP,ttreserved);\n" + 573 "addkeyword('GROUPING',RW_GROUPING,ttcolumn);\n" + 574 "addkeyword('GROUPS',RW_GROUPS,ttcolumn);\n" + 575 "addkeyword('HANDLER',RW_HANDLER,ttreserved);\n" + 576 "addkeyword('HASHING',RW_HASHING,ttcolumn);\n" + 577 "addkeyword('HAVING',RW_HAVING,ttreserved);\n" + 578 "addkeyword('HOLD',RW_HOLD,ttreserved);\n" + 579 "addkeyword('HOUR',RW_HOUR,ttreserved);\n" + 580 "addkeyword('HOURS',RW_HOURS,ttreserved);\n" + 581 "addkeyword('IDENTITY',RW_IDENTITY,ttcolumn);\n" + 582 "addkeyword('IF',RW_IF,ttreserved);\n" + 583 "addkeyword('IGNORE',RW_IGNORE,ttcolumn);\n" + 584 "addkeyword('IMMEDIATE',RW_IMMEDIATE,ttreserved);\n" + 585 "addkeyword('IN',RW_IN,ttreserved);\n" + 586 "addkeyword('INCLUDE',RW_INCLUDE,ttcolumn);\n" + 587 "addkeyword('INCLUDING',RW_INCLUDING,ttcolumn);\n" + 588 "addkeyword('INCLUSIVE',RW_INCLUSIVE,ttreserved);\n" + 589 "addkeyword('INCREMENT',RW_INCREMENT,ttcolumn);\n" + 590 "addkeyword('INDEX',RW_INDEX,ttreserved);\n" + 591 "addkeyword('INDICATOR',RW_INDICATOR,ttcolumn);\n" + 592 "addkeyword('INHERIT',RW_INHERIT,ttreserved);\n" + 593 "addkeyword('INITIALLY',RW_INITIALLY,ttcolumn);\n" + 594 "addkeyword('INLINE',RW_INLINE,ttcolumn);\n" + 595 "addkeyword('INNER',RW_INNER,ttreserved);\n" + 596 "addkeyword('INOUT',RW_INOUT,ttreserved);\n" + 597 "addkeyword('INPUT',RW_INPUT,ttcolumn);\n" + 598 "addkeyword('INSENSITIVE',RW_INSENSITIVE,ttreserved);\n" + 599 "addkeyword('INSERT',RW_INSERT,ttreserved);\n" + 600 "addkeyword('INSTEAD',RW_INSTEAD,ttcolumn);\n" + 601 "addkeyword('INT',RW_INT,ttcolumn);\n" + 602 "addkeyword('INTEGER',RW_INTEGER,ttcolumn);\n" + 603 "addkeyword('INTEGRITY',RW_INTEGRITY,ttcolumn);\n" + 604 "addkeyword('INTERSECT',RW_INTERSECT,ttreserved);\n" + 605 "addkeyword('INTO',RW_INTO,ttreserved);\n" + 606 "addkeyword('INVALIDATE',RW_INVALIDATE,ttcolumn);\n" + 607 "addkeyword('IS',RW_IS,ttreserved);\n" + 608 "addkeyword('ISOBID',RW_ISOBID,ttreserved);\n" + 609 "addkeyword('ISOLATION',RW_ISOLATION,ttcolumn);\n" + 610 "addkeyword('ITERATE',RW_ITERATE,ttreserved);\n" + 611 "addkeyword('JAR',RW_JAR,ttreserved);\n" + 612 "addkeyword('JAVA',RW_JAVA,ttcolumn);\n" + 613 "addkeyword('JOIN',RW_JOIN,ttreserved);\n" + 614 "addkeyword('KEEP',RW_KEEP,ttreserved);\n" + 615 "addkeyword('KEY',RW_KEY,ttreserved);\n" + 616 "addkeyword('L',RW_L,ttcolumn);\n" + 617 "addkeyword('LABEL',RW_LABEL,ttreserved);\n" + 618 "addkeyword('LANGUAGE',RW_LANGUAGE,ttreserved);\n" + 619 "addkeyword('LARGE',RW_LARGE,ttcolumn);\n" + 620 "addkeyword('LAST',RW_LAST,ttreserved);\n" + 621 "addkeyword('LATERAL',RW_LATERAL,ttcolumn);\n" + 622 "addkeyword('LC_CTYPE',RW_LC_CTYPE,ttreserved);\n" + 623 "addkeyword('LEADING',RW_LEADING,ttcolumn);\n" + 624 "addkeyword('LEAVE',RW_LEAVE,ttreserved);\n" + 625 "addkeyword('LEFT',RW_LEFT,ttreserved);\n" + 626 "addkeyword('LENGTH',RW_LENGTH,ttcolumn);\n" + 627 "addkeyword('LEVEL',RW_LEVEL,ttcolumn);\n" + 628 "addkeyword('LIKE',RW_LIKE,ttreserved);\n" + 629 "addkeyword('LIMIT',RW_LIMIT,ttcolumn);\n" + 630 "addkeyword('LINK',RW_LINK,ttcolumn);\n" + 631 "addkeyword('LINKTYPE',RW_LINKTYPE,ttcolumn);\n" + 632 "addkeyword('LISTAGG',RW_LISTAGG,ttcolumn);\n" + 633 "addkeyword('LOB',RW_LOB,ttcolumn);\n" + 634 "addkeyword('LOCAL',RW_LOCAL,ttreserved);\n" + 635 "addkeyword('LOCALE',RW_LOCALE,ttreserved);\n" + 636 "addkeyword('LOCATOR',RW_LOCATOR,ttreserved);\n" + 637 "addkeyword('LOCATORS',RW_LOCATORS,ttreserved);\n" + 638 "addkeyword('LOCK',RW_LOCK,ttreserved);\n" + 639 "addkeyword('LOCKMAX',RW_LOCKMAX,ttreserved);\n" + 640 "addkeyword('LOCKS',RW_LOCKS,ttcolumn);\n" + 641 "addkeyword('LOCKSIZE',RW_LOCKSIZE,ttreserved);\n" + 642 "addkeyword('LOG',RW_LOG,ttcolumn);\n" + 643 "addkeyword('LOGGED',RW_LOGGED,ttcolumn);\n" + 644 "addkeyword('LONG',RW_LONG,ttreserved);\n" + 645 "addkeyword('LONGVAR',RW_LONGVAR,ttcolumn);\n" + 646 "addkeyword('LOOP',RW_LOOP,ttreserved);\n" + 647 "addkeyword('MAIN',RW_MAIN,ttcolumn);\n" + 648 "addkeyword('MAINTAINED',RW_MAINTAINED,ttreserved);\n" + 649 "addkeyword('MATCHED',RW_MATCHED,ttcolumn);\n" + 650 "addkeyword('MATERIALIZED',RW_MATERIALIZED,ttreserved);\n" + 651 "addkeyword('MAX',RW_MAX,ttcolumn);\n" + 652 "addkeyword('MAXVALUE',RW_MAXVALUE,ttcolumn);\n" + 653 "addkeyword('MEMBER',RW_MEMBER,ttcolumn);\n" + 654 "addkeyword('MERGE',RW_MERGE,ttcolumn);\n" + 655 "addkeyword('MESSAGE_TEXT',RW_MESSAGE_TEXT,ttcolumn);\n" + 656 "addkeyword('MICROSECOND',RW_MICROSECOND,ttreserved);\n" + 657 "addkeyword('MICROSECONDS',RW_MICROSECONDS,ttreserved);\n" + 658 "addkeyword('MIN',RW_MIN,ttcolumn);\n" + 659 "addkeyword('MINUS',RW_MINUS,ttcolumn);\n" + 660 "addkeyword('MINUTE',RW_MINUTE,ttreserved);\n" + 661 "addkeyword('MINUTES',RW_MINUTES,ttreserved);\n" + 662 "addkeyword('MINVALUE',RW_MINVALUE,ttcolumn);\n" + 663 "addkeyword('MODE',RW_MODE,ttcolumn);\n" + 664 "addkeyword('MODIFIES',RW_MODIFIES,ttreserved);\n" + 665 "addkeyword('MODIFY',RW_MODIFY,ttcolumn);\n" + 666 "addkeyword('MONTH',RW_MONTH,ttreserved);\n" + 667 "addkeyword('MONTHS',RW_MONTHS,ttreserved);\n" + 668 "addkeyword('MOVEMENT',RW_MOVEMENT,ttcolumn);\n" + 669 "addkeyword('NAME',RW_NAME,ttcolumn);\n" + 670 "addkeyword('NATURAL',RW_NATURAL,ttcolumn);\n" + 671 "addkeyword('NCHAR',RW_NCHAR,ttcolumn);\n" + 672 "addkeyword('NCLOB',RW_NCLOB,ttcolumn);\n" + 673 "addkeyword('NEW',RW_NEW,ttcolumn);\n" + 674 "addkeyword('NEW_TABLE',RW_NEW_TABLE,ttcolumn);\n" + 675 "addkeyword('NEXT',RW_NEXT,ttreserved);\n" + 676 "addkeyword('NEXTVAL',RW_NEXTVAL,ttreserved);\n" + 677 "addkeyword('NO',RW_NO,ttreserved);\n" + 678 "addkeyword('NOCYCLE',RW_NOCYCLE,ttcolumn);\n" + 679 "addkeyword('NONE',RW_NONE,ttreserved);\n" + 680 "addkeyword('NOT',RW_NOT,ttreserved);\n" + 681 "addkeyword('NULL',RW_NULL,ttreserved);\n" + 682 "addkeyword('NULLS',RW_NULLS,ttreserved);\n" + 683 "addkeyword('NUM',RW_NUM,ttcolumn);\n" + 684 "addkeyword('NUMBER',RW_NUMBER,ttcolumn);\n" + 685 "addkeyword('NUMERIC',RW_NUMERIC,ttcolumn);\n" + 686 "addkeyword('NUMPARTS',RW_NUMPARTS,ttreserved);\n" + 687 "addkeyword('NVARCHAR',RW_NVARCHAR,ttcolumn);\n" + 688 "addkeyword('OBID',RW_OBID,ttreserved);\n" + 689 "addkeyword('OBJECT',RW_OBJECT,ttcolumn);\n" + 690 "addkeyword('OCTETS',RW_OCTETS,ttcolumn);\n" + 691 "addkeyword('OF',RW_OF,ttreserved);\n" + 692 "addkeyword('OFFSET',RW_OFFSET,ttcolumn);\n" + 693 "addkeyword('OLD',RW_OLD,ttreserved);\n" + 694 "addkeyword('OLD_TABLE',RW_OLD_TABLE,ttcolumn);\n" + 695 "addkeyword('ON',RW_ON,ttreserved);\n" + 696 "addkeyword('ONLY',RW_ONLY,ttcolumn);\n" + 697 "addkeyword('OPEN',RW_OPEN,ttreserved);\n" + 698 "addkeyword('OPTIMIZATION',RW_OPTIMIZATION,ttreserved);\n" + 699 "addkeyword('OPTIMIZE',RW_OPTIMIZE,ttreserved);\n" + 700 "addkeyword('OPTION',RW_OPTION,ttcolumn);\n" + 701 "addkeyword('OPTIONS',RW_OPTIONS,ttcolumn);\n" + 702 "addkeyword('OR',RW_OR,ttreserved);\n" + 703 "addkeyword('ORDER',RW_ORDER,ttreserved);\n" + 704 "addkeyword('ORDINALITY',RW_ORDINALITY,ttcolumn);\n" + 705 "addkeyword('ORGANIZATION',RW_ORGANIZATION,ttreserved);\n" + 706 "addkeyword('ORGANIZE',RW_ORGANIZE,ttcolumn);\n" + 707 "addkeyword('OUT',RW_OUT,ttreserved);\n" + 708 "addkeyword('OUTER',RW_OUTER,ttreserved);\n" + 709 "addkeyword('OVER',RW_OVER,ttcolumn);\n" + 710 "addkeyword('OVERFLOW',RW_OVERFLOW,ttcolumn);\n" + 711 "addkeyword('PACKAGE',RW_PACKAGE,ttreserved);\n" + 712 "addkeyword('PARALLEL',RW_PARALLEL,ttcolumn);\n" + 713 "addkeyword('PARAMETER',RW_PARAMETER,ttreserved);\n" + 714 "addkeyword('PART',RW_PART,ttreserved);\n" + 715 "addkeyword('PADDED',RW_PADDED,ttreserved);\n" + 716 "addkeyword('PARTITION',RW_PARTITION,ttreserved);\n" + 717 "addkeyword('PARTITIONED',RW_PARTITIONED,ttreserved);\n" + 718 "addkeyword('PARTITIONING',RW_PARTITIONING,ttreserved);\n" + 719 "addkeyword('PASSING',RW_PASSING,ttcolumn);\n" + 720 "addkeyword('PATH',RW_PATH,ttreserved);\n" + 721 "addkeyword('PCTFREE',RW_PCTFREE,ttcolumn);\n" + 722 "addkeyword('PERMISSION',RW_PERMISSION,ttcolumn);\n" + 723 "addkeyword('PIECESIZE',RW_PIECESIZE,ttreserved);\n" + 724 "addkeyword('PERIOD',RW_PERIOD,ttreserved);\n" + 725 "addkeyword('PLAN',RW_PLAN,ttreserved);\n" + 726 "addkeyword('POLICY',RW_POLICY,ttcolumn);\n" + 727 "addkeyword('PORTION',RW_PORTION,ttcolumn);\n" + 728 "addkeyword('PRECEDING',RW_PRECEDING,ttcolumn);\n" + 729 "addkeyword('PRECISION',RW_PRECISION,ttreserved);\n" + 730 "addkeyword('PREDICATES',RW_PREDICATES,ttcolumn);\n" + 731 "addkeyword('PREPARE',RW_PREPARE,ttreserved);\n" + 732 "addkeyword('PRESERVE',RW_PRESERVE,ttcolumn);\n" + 733 "addkeyword('PREVIOUS',RW_PREVIOUS,ttcolumn);\n" + 734 "addkeyword('PREVVAL',RW_PREVVAL,ttreserved);\n" + 735 "addkeyword('PRIMARY',RW_PRIMARY,ttcolumn);\n" + 736 "addkeyword('PRIOR',RW_PRIOR,ttreserved);\n" + 737 "addkeyword('PRIQTY',RW_PRIQTY,ttreserved);\n" + 738 "addkeyword('PRIVATE',RW_PRIVATE,ttcolumn);\n" + 739 "addkeyword('PRIVILEGES',RW_PRIVILEGES,ttreserved);\n" + 740 "addkeyword('PROCEDURE',RW_PROCEDURE,ttreserved);\n" + 741 "addkeyword('PROGRAM',RW_PROGRAM,ttreserved);\n" + 742 "addkeyword('PROPAGATE',RW_PROPAGATE,ttcolumn);\n" + 743 "addkeyword('PSID',RW_PSID,ttreserved);\n" + 744 "addkeyword('PUBLIC',RW_PUBLIC,ttreserved);\n" + 745 "addkeyword('QUERY',RW_QUERY,ttreserved);\n" + 746 "addkeyword('QUERYNO',RW_QUERYNO,ttreserved);\n" + 747 "addkeyword('R',RW_R,ttcolumn);\n" + 748 "addkeyword('RANGE',RW_RANGE,ttcolumn);\n" + 749 "addkeyword('READ',RW_READ,ttcolumn);\n" + 750 "addkeyword('READS',RW_READS,ttreserved);\n" + 751 "addkeyword('REAL',RW_REAL,ttcolumn);\n" + 752 "addkeyword('RECOVERY',RW_RECOVERY,ttcolumn);\n" + 753 "addkeyword('REF',RW_REF,ttcolumn);\n" + 754 "addkeyword('REFERENCES',RW_REFERENCES,ttreserved);\n" + 755 "addkeyword('REFERENCING',RW_REFERENCING,ttcolumn);\n" + 756 "addkeyword('REFRESH',RW_REFRESH,ttreserved);\n" + 757 "addkeyword('REGISTERS',RW_REGISTERS,ttcolumn);\n" + 758 "addkeyword('RELEASE',RW_RELEASE,ttreserved);\n" + 759 "addkeyword('RENAME',RW_RENAME,ttreserved);\n" + 760 "addkeyword('REPEAT',RW_REPEAT,ttreserved);\n" + 761 "addkeyword('REPEATABLE',RW_REPEATABLE,ttcolumn);\n" + 762 "addkeyword('REPLACE',RW_REPLACE,ttcolumn);\n" + 763 "addkeyword('REPLICATED',RW_REPLICATED,ttcolumn);\n" + 764 "addkeyword('REQUEST',RW_REQUEST,ttcolumn);\n" + 765 "addkeyword('REQUIRING',RW_REQUIRING,ttcolumn);\n" + 766 "addkeyword('RESIGNAL',RW_RESIGNAL,ttreserved);\n" + 767 "addkeyword('RESTART',RW_RESTART,ttcolumn);\n" + 768 "addkeyword('RESTORE',RW_RESTORE,ttcolumn);\n" + 769 "addkeyword('RESTRICT',RW_RESTRICT,ttreserved);\n" + 770 "addkeyword('RESULT',RW_RESULT,ttreserved);\n" + 771 "addkeyword('RESULT_SET_LOCATOR',RW_RESULT_SET_LOCATOR,ttreserved);\n" + 772 "addkeyword('RETAIN',RW_RETAIN,ttcolumn);\n" + 773 "addkeyword('RETURN',RW_RETURN,ttreserved);\n" + 774 "addkeyword('RETURNING',RW_RETURNING,ttcolumn);\n" + 775 "addkeyword('RETURNS',RW_RETURNS,ttreserved);\n" + 776 "addkeyword('REVOKE',RW_REVOKE,ttreserved);\n" + 777 "addkeyword('RIGHT',RW_RIGHT,ttreserved);\n" + 778 "addkeyword('ROLE',RW_ROLE,ttreserved);\n" + 779 "addkeyword('ROLLBACK',RW_ROLLBACK,ttreserved);\n" + 780 "addkeyword('ROLLUP',RW_ROLLUP,ttcolumn);\n" + 781 "addkeyword('ROUND_CEILING',RW_ROUND_CEILING,ttreserved);\n" + 782 "addkeyword('ROUND_DOWN',RW_ROUND_DOWN,ttreserved);\n" + 783 "addkeyword('ROUND_FLOOR',RW_ROUND_FLOOR,ttreserved);\n" + 784 "addkeyword('ROUND_HALF_DOWN',RW_ROUND_HALF_DOWN,ttreserved);\n" + 785 "addkeyword('ROUND_HALF_EVEN',RW_ROUND_HALF_EVEN,ttreserved);\n" + 786 "addkeyword('ROUND_HALF_UP',RW_ROUND_HALF_UP,ttreserved);\n" + 787 "addkeyword('ROUND_UP',RW_ROUND_UP,ttreserved);\n" + 788 "addkeyword('ROW',RW_ROW,ttreserved);\n" + 789 "addkeyword('ROWS',RW_ROWS,ttcolumn);\n" + 790 "addkeyword('ROWSET',RW_ROWSET,ttreserved);\n" + 791 "addkeyword('ROWTYPE',RW_ROWTYPE,ttcolumn);\n" + 792 "addkeyword('RR',RW_RR,ttcolumn);\n" + 793 "addkeyword('RS',RW_RS,ttcolumn);\n" + 794 "addkeyword('RUN',RW_RUN,ttreserved);\n" + 795 "addkeyword('RUNSTATS',RW_RUNSTATS,ttcolumn);\n" + 796 "addkeyword('SAFE',RW_SAFE,ttcolumn);\n" + 797 "addkeyword('SAMPLED',RW_SAMPLED,ttcolumn);\n" + 798 "addkeyword('SAVEPOINT',RW_SAVEPOINT,ttreserved);\n" + 799 "addkeyword('SBCS',RW_SBCS,ttcolumn);\n" + 800 "addkeyword('SCHEMA',RW_SCHEMA,ttreserved);\n" + 801 "addkeyword('SCRATCHPAD',RW_SCRATCHPAD,ttreserved);\n" + 802 "addkeyword('SEARCH',RW_SEARCH,ttcolumn);\n" + 803 "addkeyword('SECOND',RW_SECOND,ttreserved);\n" + 804 "addkeyword('SECONDS',RW_SECONDS,ttreserved);\n" + 805 "addkeyword('SECQTY',RW_SECQTY,ttreserved);\n" + 806 "addkeyword('SECURED',RW_SECURED,ttcolumn);\n" + 807 "addkeyword('SECURITY',RW_SECURITY,ttreserved);\n" + 808 "addkeyword('SELECT',RW_SELECT,ttreserved);\n" + 809 "addkeyword('SELECTIVITY',RW_SELECTIVITY,ttcolumn);\n" + 810 "addkeyword('SENSITIVE',RW_SENSITIVE,ttreserved);\n" + 811 "addkeyword('SEQUENCE',RW_SEQUENCE,ttreserved);\n" + 812 "addkeyword('SERVER',RW_SERVER,ttcolumn);\n" + 813 "addkeyword('SESSION',RW_SESSION,ttcolumn);\n" + 814 "addkeyword('SESSION_USER',RW_SESSION_USER,ttreserved);\n" + 815 "addkeyword('SET',RW_SET,ttreserved);\n" + 816 "addkeyword('SETS',RW_SETS,ttcolumn);\n" + 817 "addkeyword('SHARE',RW_SHARE,ttcolumn);\n" + 818 "addkeyword('SIGNAL',RW_SIGNAL,ttreserved);\n" + 819 "addkeyword('SIMPLE',RW_SIMPLE,ttreserved);\n" + 820 "addkeyword('SMALLINT',RW_SMALLINT,ttcolumn);\n" + 821 "addkeyword('SNAPSHOT',RW_SNAPSHOT,ttcolumn);\n" + 822 "addkeyword('SOME',RW_SOME,ttreserved);\n" + 823 "addkeyword('SOURCE',RW_SOURCE,ttreserved);\n" + 824 "addkeyword('SPECIAL',RW_SPECIAL,ttcolumn);\n" + 825 "addkeyword('SPECIFIC',RW_SPECIFIC,ttreserved);\n" + 826 "addkeyword('SQL',RW_SQL,ttcolumn);\n" + 827 "addkeyword('SQLCODE',RW_SQLCODE,ttcolumn);\n" + 828 "addkeyword('SQLEXCEPTION',RW_SQLEXCEPTION,ttcolumn);\n" + 829 "addkeyword('SQLSTATE',RW_SQLSTATE,ttcolumn);\n" + 830 "addkeyword('SQLWARNING',RW_SQLWARNING,ttcolumn);\n" + 831 "addkeyword('STANDARD',RW_STANDARD,ttreserved);\n" + 832 "addkeyword('START',RW_START,ttcolumn);\n" + 833 "addkeyword('STARTING',RW_STARTING,ttcolumn);\n" + 834 "addkeyword('STATEMENT',RW_STATEMENT,ttreserved);\n" + 835 "addkeyword('STATIC',RW_STATIC,ttreserved);\n" + 836 "addkeyword('STATISTICS',RW_STATISTICS,ttcolumn);\n" + 837 "addkeyword('STAY',RW_STAY,ttreserved);\n" + 838 "addkeyword('STOGROUP',RW_STOGROUP,ttreserved);\n" + 839 "addkeyword('STORES',RW_STORES,ttreserved);\n" + 840 "addkeyword('STYLE',RW_STYLE,ttreserved);\n" + 841 "addkeyword('SUB',RW_SUB,ttcolumn);\n" + 842 "addkeyword('SUBSTRING',RW_SUBSTRING,ttcolumn);\n" + 843 "addkeyword('SUMMARY',RW_SUMMARY,ttreserved);\n" + 844 "addkeyword('SYNONYM',RW_SYNONYM,ttreserved);\n" + 845 "addkeyword('SYSFUN',RW_SYSFUN,ttreserved);\n" + 846 "addkeyword('SYSIBM',RW_SYSIBM,ttreserved);\n" + 847 "addkeyword('SYSPROC',RW_SYSPROC,ttreserved);\n" + 848 "addkeyword('SYSTEM',RW_SYSTEM,ttreserved);\n" + 849 "addkeyword('SYSTEM_USER',RW_SYSTEM_USER,ttcolumn);\n" + 850 "addkeyword('TABLE',RW_TABLE,ttreserved);\n" + 851 "addkeyword('TABLESAMPLE',RW_TABLESAMPLE,ttcolumn);\n" + 852 "addkeyword('TABLESPACE',RW_TABLESPACE,ttreserved);\n" + 853 "addkeyword('TEMPLATE',RW_TEMPLATE,ttcolumn);\n" + 854 "addkeyword('TEMPORARY',RW_TEMPORARY,ttcolumn);\n" + 855 "addkeyword('TERMINATE',RW_TERMINATE,ttcolumn);\n" + 856 "addkeyword('THEN',RW_THEN,ttreserved);\n" + 857 "addkeyword('THREADSAFE',RW_THREADSAFE,ttcolumn);\n" + 858 "addkeyword('TIME',RW_TIME,ttcolumn);\n" + 859 "addkeyword('TIMEOUT',RW_TIMEOUT,ttcolumn);\n" + 860 "addkeyword('TIMESTAMP',RW_TIMESTAMP,ttcolumn);\n" + 861 "addkeyword('TIMEZONE',RW_TIMEZONE,ttcolumn);\n" + 862 "addkeyword('TO',RW_TO,ttreserved);\n" + 863 "addkeyword('TOKEN',RW_TOKEN,ttcolumn);\n" + 864 "addkeyword('TRAILING',RW_TRAILING,ttcolumn);\n" + 865 "addkeyword('TRANSACTION',RW_TRANSACTION,ttcolumn);\n" + 866 "addkeyword('TRANSFORM',RW_TRANSFORM,ttcolumn);\n" + 867 "addkeyword('TREAT',RW_TREAT,ttcolumn);\n" + 868 "addkeyword('TRIGGER',RW_TRIGGER,ttreserved);\n" + 869 "addkeyword('TRIM',RW_TRIM,ttcolumn);\n" + 870 "addkeyword('TRUNCATE',RW_TRUNCATE,ttreserved);\n" + 871 "addkeyword('TRUSTED',RW_TRUSTED,ttcolumn);\n" + 872 "addkeyword('TYPE',RW_TYPE,ttreserved);\n" + 873 "addkeyword('TYPES',RW_TYPES,ttcolumn);\n" + 874 "addkeyword('UNBOUNDED',RW_UNBOUNDED,ttcolumn);\n" + 875 "addkeyword('UNDO',RW_UNDO,ttreserved);\n" + 876 "addkeyword('UNICODE',RW_UNICODE,ttcolumn);\n" + 877 "addkeyword('UNION',RW_UNION,ttreserved);\n" + 878 "addkeyword('UNIQUE',RW_UNIQUE,ttreserved);\n" + 879 "addkeyword('UNLINK',RW_UNLINK,ttcolumn);\n" + 880 "addkeyword('UNNEST',RW_UNNEST,ttcolumn);\n" + 881 "addkeyword('UNTIL',RW_UNTIL,ttreserved);\n" + 882 "addkeyword('UNUSED',RW_UNUSED,ttcolumn);\n" + 883 "addkeyword('UPDATE',RW_UPDATE,ttreserved);\n" + 884 "addkeyword('UR',RW_UR,ttcolumn);\n" + 885 "addkeyword('URL',RW_URL,ttcolumn);\n" + 886 "addkeyword('USE',RW_USE,ttcolumn);\n" + 887 "addkeyword('USER',RW_USER,ttreserved);\n" + 888 "addkeyword('USING',RW_USING,ttreserved);\n" + 889 "addkeyword('VALIDATE',RW_VALIDATE,ttcolumn);\n" + 890 "addkeyword('VALIDPROC',RW_VALIDPROC,ttreserved);\n" + 891 "addkeyword('VALUE',RW_VALUE,ttreserved);\n" + 892 "addkeyword('VALUES',RW_VALUES,ttreserved);\n" + 893 "addkeyword('VARBINARY',RW_VARBINARY,ttcolumn);\n" + 894 "addkeyword('VARCHAR',RW_VARCHAR,ttcolumn);\n" + 895 "addkeyword('VARCHAR2',RW_VARCHAR2,ttcolumn);\n" + 896 "addkeyword('VARGRAPHIC',RW_VARGRAPHIC,ttcolumn);\n" + 897 "addkeyword('VARIABLE',RW_VARIABLE,ttreserved);\n" + 898 "addkeyword('VARIANT',RW_VARIANT,ttreserved);\n" + 899 "addkeyword('VARYING',RW_VARYING,ttcolumn);\n" + 900 "addkeyword('VCAT',RW_VCAT,ttreserved);\n" + 901 "addkeyword('VIEW',RW_VIEW,ttreserved);\n" + 902 "addkeyword('VOLATILE',RW_VOLATILE,ttreserved);\n" + 903 "addkeyword('VOLUMES',RW_VOLUMES,ttreserved);\n" + 904 "addkeyword('WAIT',RW_WAIT,ttcolumn);\n" + 905 "addkeyword('WHEN',RW_WHEN,ttreserved);\n" + 906 "addkeyword('WHENEVER',RW_WHENEVER,ttreserved);\n" + 907 "addkeyword('WHERE',RW_WHERE,ttreserved);\n" + 908 "addkeyword('WHILE',RW_WHILE,ttreserved);\n" + 909 "addkeyword('WITH',RW_WITH,ttreserved);\n" + 910 "addkeyword('WITHIN',RW_WITHIN,ttcolumn);\n" + 911 "addkeyword('WITHOUT',RW_WITHOUT,ttcolumn);\n" + 912 "addkeyword('WLM',RW_WLM,ttreserved);\n" + 913 "addkeyword('WORK',RW_WORK,ttcolumn);\n" + 914 "addkeyword('WRITE',RW_WRITE,ttcolumn);\n" + 915 "addkeyword('WRKSTNNAME',RW_WRKSTNNAME,ttcolumn);\n" + 916 "addkeyword('XMLATTRIBUTES',RW_XMLATTRIBUTES,ttcolumn);\n" + 917 "addkeyword('XMLCAST',RW_XMLCAST,ttreserved);\n" + 918 "addkeyword('XMLELEMENT',RW_XMLELEMENT,ttcolumn);\n" + 919 "addkeyword('XMLEXISTS',RW_XMLEXISTS,ttreserved);\n" + 920 "addkeyword('XMLNAMESPACES',RW_XMLNAMESPACES,ttreserved);\n" + 921 "addkeyword('XMLQUERY',RW_XMLQUERY,ttcolumn);\n" + 922 "addkeyword('XMLSERIALIZE',RW_XMLSERIALIZE,ttcolumn);\n" + 923 "addkeyword('XMLTABLE',RW_XMLTABLE,ttcolumn);\n" + 924 "addkeyword('YEAR',RW_YEAR,ttreserved);\n" + 925 "addkeyword('YEARS',RW_YEARS,ttreserved);\n" + 926 "addkeyword('YES',RW_YES,ttcolumn);\n" + 927 "addkeyword('ZONE',RW_ZONE,ttreserved);"; 928}