LPEX
4.4.0

com.ibm.lpex.sql
Class SqlLexer

java.lang.Object
  extended by com.ibm.lpex.cc.LpexSqlParserTokenManager
      extended by com.ibm.lpex.sql.SqlLexer
All Implemented Interfaces:
LpexSqlParserConstants, LpexSubparser

public class SqlLexer
extends LpexSqlParserTokenManager
implements LpexSubparser

SQL lexer for various document parsers. SqlLexer is currently used by the C/C++, COBOL, Java, PL/I, and SQL document parsers provided in LPEX.

SQL is embedded in a host-language source file. The SQL statements provide the database interface, while the host language provides the remaining support needed for the application to execute.

SQL statements placed in an application program are not host-language specific. In compiled host languages (C, COBOL, FORTRAN) the precompiler converts embedded SQL into specific language statements the host language can process. These specific language statements are, for example, DB2 runtime API calls. In REXX (which is not precompiled), SQL statements are passed to, for example, DB2 at runtime through the SQLEXEC API.


Field Summary
 
Fields inherited from class com.ibm.lpex.cc.LpexSqlParserTokenManager
curChar, jjnewLexState, jjstrLiteralImages, lexStateNames
 
Fields inherited from interface com.ibm.lpex.cc.LpexSqlParserConstants
_CONCAT, _DEFAULT, _MINUS, _MORE, ABSOLUTE, ACQUIRE, ACTION, ACTIVATE, ADD, AFTER, ALIAS, ALL, ALLOCATE, ALLOW, ALTER, ALTERIN, ALWAYS, ALWBLK, ALWCPYDTA, AND, ANY, APPEND, APPL_ID, APPL_NAME, ARE, ARRAY, AS, ASC, ASENSITIVE, ASP, ASSERTION, ASSIGN, ASUTIME, AT, ATOMIC, ATTRIBUTE, ATTRIBUTES, AUDIT, AUTH_ID, AUTHORIZATION, AUTOSTART, BANG, BAR, BEFORE, BEGIN, BETWEEN, BIF, BIF1, BINARY_INTEGER, BIND, BINDADD, BIT, BIT_AND, BIT_CONSTANT, BLOCKED, BOOLEAN, BOTH, BREADTH, BUFFER, BUFFERPOOL, BUFFERPOOLS, BUFFERSIZE, BY, CACHE, CALL, CALLED, CALLER, CAPTURE, CARDINALITY, CASCADE, CASCADED, CASE, CAST, CATALOG, CATALOG_NAME, CCSID, CHANGES, CHAR_LENGTH, CHECK, CHECKED, CLASS_ORIGIN, CLIENT, CLOSE, CLOSQLCSR, CLUSTER, CNULRQD, COLLATE, COLLATION, COLLECTION, COLLID, COLON, COLUMN, COLUMN_NAME, COLUMNS, COMMA, COMMAND_FUNCTION, COMMAND_FUNCTION_CODE, COMMENT, COMMIT, COMPACT, COMPARISONS, COMPILEOPT, COMPOUND, CONDITION, CONDITION_IDENTIFIER, CONDITION_NUMBER, CONFIRM, CONNECT, CONNECTION, CONNECTION_NAME, CONNECTIONS, CONSTANT, CONSTRAINT, CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA, CONSTRAINTS, CONT_STRING_Q, CONT_STRING_Q_CONT, CONT_STRING_QQ, CONT_STRING_QQ_CONT, CONTAINS, CONTINUE, CONTROL, CONVERT, CONVERT_TIMESTAMP_TO_DATE, CORRESPONDING, CREATE, CREATE_NOT_FENCED, CREATEIN, CREATETAB, CROSS, CS, CURRENT_DATE, CURRENT_PATH, CURRENT_SCHEMA, CURRENT_SERVER, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_TIMEZONE, CURRENT_USER, CURSOR, CURSOR_NAME, CURSORS, CYCLE, DATA, DATETIME_INTERVAL_CODE, DATFMT, DATSEP, DB, DB2, DB2_AUTHENTICATION_TYPE, DB2_AUTHORIZATION_ID, DB2_BASE_CATALOG_NAME, DB2_BASE_COLUMN_NAME, DB2_BASE_SCHEMA_NAME, DB2_BASE_TABLE_NAME, DB2_CCSID, DB2_COLUMN_CATALOG_NAME, DB2_COLUMN_GENERATED, DB2_COLUMN_GENERATION_TYPE, DB2_COLUMN_NAME, DB2_COLUMN_SCHEMA_NAME, DB2_COLUMN_TABLE_NAME, DB2_COLUMN_UPDATABILITY, DB2_CONNECTION_METHOD, DB2_CONNECTION_NUMBER, DB2_CONNECTION_STATE, DB2_CONNECTION_STATUS, DB2_CONNECTION_TYPE, DB2_CORRELATION_NAME, DB2_DIAGNOSTIC_CONVERSION_ERROR, DB2_DYN_QUERY_MGMT, DB2_ENCRYPTION_TYPE, DB2_ERROR_CODE1, DB2_ERROR_CODE2, DB2_ERROR_CODE3, DB2_ERROR_CODE4, DB2_GET_DIAGNOSTICS_DIAGNOSTICS, DB2_INTERNAL_ERROR_POINTER, DB2_LABEL, DB2_LAST_ROW, DB2_LINE_NUMBER, DB2_MAX_ITEMS, DB2_MESSAGE_ID, DB2_MESSAGE_ID1, DB2_MESSAGE_ID2, DB2_MESSAGE_KEY, DB2_MODULE_DETECTING_ERROR, DB2_NUMBER_CONNECTIONS, DB2_NUMBER_FAILING_STATEMENTS, DB2_NUMBER_PARAMETER_MARKERS, DB2_NUMBER_RESULT_SETS, DB2_NUMBER_ROWS, DB2_NUMBER_SUCCESSFUL_SUBSTMTS, DB2_OFFSET, DB2_PARAMETER_NAME, DB2_PARTITION_NUMBER, DB2_PRODUCT_ID, DB2_REASON_CODE, DB2_RELATIVE_COST_ESTIMATE, DB2_RETURN_STATUS, DB2_RETURNED_SQLCODE, DB2_ROW_COUNT_SECONDARY, DB2_ROW_LENGTH, DB2_ROW_NUMBER, DB2_SERVER_CLASS_NAME, DB2_SERVER_NAME, DB2_SQL_ATTR_CONCURRENCY, DB2_SQL_ATTR_CURSOR_CAPABILITY, DB2_SQL_ATTR_CURSOR_HOLD, DB2_SQL_ATTR_CURSOR_ROWSET, DB2_SQL_ATTR_CURSOR_SCROLLABLE, DB2_SQL_ATTR_CURSOR_SENSITIVITY, DB2_SQL_ATTR_CURSOR_TYPE, DB2_SQLERRD_SET, DB2_SQLERRD1, DB2_SQLERRD2, DB2_SQLERRD3, DB2_SQLERRD4, DB2_SQLERRD5, DB2_SQLERRD6, DB2_SYSTEM_COLUMN_NAME, DB2_TOKEN_COUNT, DB2_TOKEN_STRING, DB2DARI, DB2GENERAL, DB2GENRL, DB2OPTIONS, DB2ROW, DB2SQL, DBA, DBADM, DBGVIEW, DBINFO, DBSPACE, DEADLOCKS, DEALLOCATE, DEBUG, DECLARE, DECMPT, DECRESULT, DEFAULT, DEFAULTS, DEFERRABLE, DEFERRED, DEFINER, DEFINITION, DELETE, DELIMITED_ID, DENSE_RANK, DENSERANK, DEPTH, DESC, DESCRIBE, DESCRIPTOR, DETERMINISTIC, DEVICE, DFTRDBCOL, DIAGNOSTICS, DIGIT, DISABLE, DISALLOW, DISCONNECT, DISPATCH, DISTINCT, DLYPRP, DO, DOMAIN, DOT, DROP, DROPIN, DROPPED, DYNAMIC, DYNAMIC_FUNCTION, DYNAMIC_FUNCTION_CODE, DYNDFTCOL, DYNUSRPRF, EACH, EDITPROC, ELSE, ELSEIF, ELSIF, EMBEDDED_VARIABLE_NAME, EMPTY, ENABLE, ENCODED, ENCRYPTION, END, ENDEXEC, ENDING, ENVIRONMENT, EOC, EOF, EQUAL, ERASE, ESCAPE, EVALUATE, EVENT, EVENTF, EVERY, EXCEPT, EXCEPTION, EXCEPTION_INIT, EXCLUDING, EXCLUSIVE, EXECUTE, EXISTS, EXIT, EXPLAIN, EXPONENT, EXTEND, EXTENDED, EXTENTSIZE, EXTERNAL, FALSE, FEDERATED, FENCED, FETCH, FIELDPROC, FILE, FINAL, FIRST, FLUSH, FOR, FOREIGN, FORMAT_ATTRIBUTE_SUBSTRING, FORMAT_AUDIT_HEADER, FOUND, FREE, FROM, FS, FULL, FUNCTION, GE, GENERAL, GENERATED, GET, GET_CURRENT_TIMESTAMP, GLOBAL, GO, GOTO, GRANT, GROUP, GT, HANDLER, HASHING, HAVING, HEX_CONSTANT, HEXCHAR, HIERARCHY, HINT, HOLD, HOST_ID, HOST_LABEL_ID, HOURS, IDENTIFIED, IDENTIFIER, IDENTITY, IF, IMMEDIATE, IMPLICIT_SCHEMA, IN, IN_MULTI_LINE_COMMENT, IN_SINGLE_LINE_COMMENT, IN_SQL_COMMENT, IN_STRING_Q, IN_STRING_QQ, INCLUDE, INCLUDING, INCLUSIVE, INCREMENT, INCREMENTAL, INDEX, INDEX_BY, INDEXES, INDICATOR, INFIX, INHERIT, INITIALLY, INNER, INOUT, INPUT, INSENSITIVE, INSERT, INSTEAD, INTEGRITY, INTERSECT, INTERVAL, INTO, IS, IS_TABLE_OF, ISOLATION, ITERATE, JOIN, JOINPLUS, KEEP, KEY, KEY_MEMBER, KEY_TYPE, LABEL, LABELS, LANG_C, LANG_C_P_P, LANG_CL, LANG_COBOL, LANG_COBOLLE, LANG_FORTRAN, LANG_JAVA, LANG_PLI, LANG_REXX, LANG_RPG, LANG_RPGLE, LANGID, LANGUAGE, LARGE, LAST, LATERAL, LBRACKET, LE, LEADING, LEAVE, LETTER, LEVEL, LIBRARY, LIKE, LIMIT, LINK, LINKTYPE, LOCAL, LOCALDATE, LOCALTIME, LOCALTIMESTAMP, LOCATOR, LOCK, LOCKMAX, LOCKS, LOCKSIZE, LOGGED, LONGVAR, LOOP, LPAD, LPAREN, LT, MAIN, MAINTAINED, MANAGED, MANUALSTART, MAPPING, MATCH, MATERIALIZED, MAXFILES, MAXFILESIZE, MAXVALUE, MESSAGE_LENGTH, MESSAGE_OCTET_LENGTH, MESSAGE_TEXT, MICROSECONDS, MINPCTUSED, MINUS, MINUTES, MINVALUE, MIXED, MODIFIES, MODULE, MONITOR, MONTHS, MULTI_LINE_COMMENT, NAME, NAMED, NAMES, NAMING, NATIONAL, NATURAL, NC, NCHAR, NE, NEW, NEW_TABLE, NEXT, NEXTVAL, NG, NHEADER, NICKNAME, NL, NO, NOCACHE, NOCYCLE, NODE, NODEGROUP, NODENAME, NODES, NODULE, NOMAXVALUE, NOMINVALUE, NONBLOCKED, NONE, NOORDER, NORMALIZED, NOT, NOTFOUND, NOWAIT, NULLABLE, NULLS, NUM_CONSTANT, NUMBER, NUMPARTS, OBID, OBJECT, OF, OFF, OID, OLD, OLD_TABLE, OLE, OLEDB, ON, ONLINE, ONLY, OPEN, OPTIMIZE, OPTION, OPTIONS, OPTLOB, OR, ORDER, ORIGINPLUS, OTHERS, OUT, OUTER, OUTPUT, OVER, OVERHEAD, OVERLAPS, OVERRIDING, PACKAGE, PACKAGESET, PAD, PAGE, PAGES, PAGESIZE, PARALLEL, PARAMETER, PARAMETER_MODE, PARAMETER_NAME, PARAMETER_ORDINAL_POSITION, PARAMETER_SPECIFIC_CATALOG, PARAMETER_SPECIFIC_NAME, PARAMETER_SPECIFIC_SCHEMA, PART, PARTIAL, PARTITIONED, PARTITIONING, PARTITIONS, PASSTHRU, PASSWORD, PATH, PCTFREE, PCTINDEX, PENDING, PERCENT, PERMISSION, PIPE, PLAN, PLUS, POSITIONING, POSITIVE, PRAGMA, PREFETCHSIZE, PREPARE, PRESERVE, PREVVAL, PRIMARY, PRIOR, PRIQTY, PRIVATE, PRIVILEGES, PROCEDURE, PROGRAM, PROGRAM_TYPE_MAIN, PUBLIC, QUERYNO, QUERYTAG, QUESTION, RAISE, RANGE, RANK, RBRACE, RBRACKET, RCDFMT, RDBCNNMTH, READ, READS, RECOMMEND, RECONCILE, RECORD, RECOVERY, RECURSIVE, REF, REFERENCES, REFERENCING, REFRESH, REG_AGE, REG_CURRENT, REG_DEGREE, REG_MODE, REG_OPTIMIZATION, REG_QUERY, REG_SNAPSHOT, REG_TIMEZONE, REGULAR, REGULAR_ID, RELATIVE, RELEASE, RENAME, REPEAT, REPEATABLE, REPLICATED, REPLY, REPLY_REPEATING_GROUP, REQUEST, RESET, RESIDENT, RESIGNAL, RESOURCE, RESTART, RESTORE, RESTRICT, RESULT, RETAIN, RETURN, RETURNED_LENGTH, RETURNED_OCTET_LENGTH, RETURNED_SQLSTATE, RETURNS, REVERSE, REVOKE, ROLLBACK, ROUTINE, ROUTINE_CATALOG, ROUTINE_NAME, ROUTINE_SCHEMA, ROW, ROW_COUNT, ROW_NOT_FOUND, ROW_NUMBER, ROWNUMBER, ROWS, ROWSET, RPAREN, RR, RS, RUN, SAVEPOINT, SBCS, SCALE, SCANS, SCHEDULE, SCHEMA, SCHEMA_NAME, SCOPE, SCRATCHPAD, SCROLL, SEARCH, SECONDS, SECQTY, SECTION, SECURITY, SEGMENT, SELECT, SELECTION, SEMICOLON, SENSITIVE, SEQUENCE, SERIALIZABLE, SERVER, SERVER_NAME, SESSION, SESSION_USER, SET, SETS, SHARE, SIGNAL, SIMPLE, SINGLE, SINGLE_LINE_COMMENT, SIZE, SLASH, SOME, SOURCE, SPACES, SPECIFIC, SPECIFIC_NAME, SPECIFICATION, SQL, SQL_CHAR, SQL_I_O_CORRECT, SQL_ID, SQLCA, SQLCODE, SQLCURRULE, SQLDA, SQLERROR, SQLEXCEPTION, SQLID, SQLLETTER, SQLPATH, SQLSTATE, SQLWARNING, SRTSEQ, STACKED, STAR, STAR_ALL, STAR_ALLREAD, STAR_BLANK, STAR_BLANK1, STAR_CHG, STAR_COLON, STAR_COLON1, STAR_COMMA, STAR_COMMA1, STAR_CS, STAR_CURLIB, STAR_DASH, STAR_DASH1, STAR_DB2, STAR_DMY, STAR_DUW, STAR_ENDACTGRP, STAR_ENDJOB, STAR_ENDMOD, STAR_ENDPGM, STAR_ENDSQL, STAR_EUR, STAR_HEX, STAR_HMS, STAR_ISO, STAR_JIS, STAR_JOB, STAR_JOBRUN, STAR_JUL, STAR_LANGIDSHR, STAR_LANGIDUNQ, STAR_LIBL, STAR_LIST, STAR_MDY, STAR_NAMING, STAR_NO, STAR_NONE, STAR_OPTIMIZE, STAR_OWNER, STAR_PERIOD, STAR_PERIOD1, STAR_PRINT, STAR_READ, STAR_RR, STAR_RUW, STAR_SLASH, STAR_SLASH1, STAR_SOURCE, STAR_SQL, STAR_STD, STAR_STMT, STAR_SYS, STAR_SYSTEM, STAR_SYSVAL, STAR_USA, STAR_USER, STAR_YES, STAR_YMD, START, STARTING, STATE, STATEMENT, STATEMENTS, STATIC, STATISTICS, STAY, STOGROUP, STOP, STORAGE, STORPOOL, STRING_Q, STRING_Q_CONT, STRING_QQ, STRING_QQ_CONT, STYLE, SUB, SUBCLASS_ORIGIN, SUBPAGES, SUMMARY, SWITCH, SYNONYM, SYSCAT, SYSFUN, SYSIBM, SYSSTAT, SYSTEM, SYSTEM_USER, TABLE, TABLES, TABLESPACE, TABLESPACES, TEMPLATE, TEMPORARY, TGTRLS, THEN, TILDE, TIMEZONE_HOUR, TIMEZONE_MINUTE, TIMFMT, TIMSEP, TO, TO_CHAR, TO_NUMBER, tokenImage, TRAILING, TRANSACTION, TRANSACTION_ACTIVE, TRANSACTIONS, TRANSACTIONS_COMMITTED, TRANSACTIONS_ROLLED_BACK, TRANSFERRATE, TRANSLATION, TRIGGER, TRIGGER_CATALOG, TRIGGER_NAME, TRIGGER_SCHEMA, TRUE, TYPE, TYPE_BIGINT, TYPE_BINARY, TYPE_BLOB, TYPE_CHAR, TYPE_CHARACTER, TYPE_CLOB, TYPE_DATALINK, TYPE_DATE, TYPE_DBCLOB, TYPE_DEC, TYPE_DECIMAL, TYPE_DOUBLE, TYPE_FLOAT, TYPE_GRAPHIC, TYPE_INT, TYPE_INTEGER, TYPE_LONG, TYPE_NCLOB, TYPE_NULL, TYPE_NUM, TYPE_NUMERIC, TYPE_NVARCHAR, TYPE_PRECISION, TYPE_REAL, TYPE_ROWID, TYPE_SMALLINT, TYPE_TIME, TYPE_TIMESTAMP, TYPE_TINYINT, TYPE_VARBINARY, TYPE_VARCHAR, TYPE_VARGRAPHIC, UNCHECKED, UNCOMMITTED, UNDER, UNDO, UNION, UNIQUE, UNKNOWN, UNLINK, UNNAMED, UNTIL, UPDATE, UR, URL, USAGE, USE, USER, USER_DEFINED_TYPE_CATALOG, USER_DEFINED_TYPE_CODE, USER_DEFINED_TYPE_NAME, USER_DEFINED_TYPE_SCHEMA, USING, USRPRF, VALIDPROC, VALUES, VARCHAR2, VARIABLE, VARIANT, VARYING, VCAT, VECTOR, VERSION, VIEW, VOLATILE, VOLUMES, WHEN, WHENEVER, WHERE, WHILE, WITH, WITHOUT, WLM, WORK, WRAPPER, WRITE, XOR, YEARS, YES, ZERO, ZEROS, ZONE
 
Constructor Summary
SqlLexer(LpexCharStream charStream, String hostLanguage, SqlLexerStyles styles, SqlLexerClasses classes)
          Constructor.
 
Method Summary
 void initialize()
          Initializes the SQL lexer.
protected  boolean isBuiltinFunction(Token t)
          Returns whether the specified token is a built-in SQL function.
protected  boolean isKeyword(Token t)
          Returns whether the specified token is a reserved SQL word.
 int processToken()
          Retrieves and processes the next SQL token.
 void reinitialize()
          Reinitializes the SQL lexer.
protected  void setComment(Token t)
          Sets the style and element class(es) for comments.
 void setTaskTags(String[] taskTags)
          Sets the comment task tags to use.
 
Methods inherited from class com.ibm.lpex.cc.LpexSqlParserTokenManager
getCurLexState, getNextToken, ReInit, ReInit, SwitchTo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SqlLexer

public SqlLexer(LpexCharStream charStream,
                String hostLanguage,
                SqlLexerStyles styles,
                SqlLexerClasses classes)
Constructor.

Parameters:
charStream - LPEX input character stream
hostLanguage - host language (e.g., LpexCommonParser.LANGUAGE_JAVA)
styles - style characters to use (predefined by the host parser)
classes - element classes to use (predefined by the host parser)
Method Detail

initialize

public void initialize()
Initializes the SQL lexer.

Specified by:
initialize in interface LpexSubparser

reinitialize

public void reinitialize()
Reinitializes the SQL lexer.

Specified by:
reinitialize in interface LpexSubparser

setTaskTags

public void setTaskTags(String[] taskTags)
Sets the comment task tags to use.


processToken

public int processToken()
Retrieves and processes the next SQL token.

Specified by:
processToken in interface LpexSubparser
Returns:
LEXER_RC_OK, LEXER_RC_EOF [+LEXER_RC_MORE], LEXER_RC_END

setComment

protected void setComment(Token t)
Sets the style and element class(es) for comments. Activated by \n, \r, or * / encountered while in a comment SPECIAL_TOKEN. SPECIAL_TOKEN, rather than TOKEN, is used for these, as we don't need to see the same tokens in processToken() too, nor have them recorded in the parse.

Does the real work for the extended stub in LpexSqlParser.jj.

Overrides:
setComment in class LpexSqlParserTokenManager
Parameters:
t - special token (token.beginLine, token.beginColumn, token.endLine, and token.endColumn identify its location: ONE-based elements and positions in the associated document view)

isBuiltinFunction

protected boolean isBuiltinFunction(Token t)
Returns whether the specified token is a built-in SQL function. The text indicated by the specified token is compared against a table of built-in SQL functions.

Parameters:
t - token

isKeyword

protected boolean isKeyword(Token t)
Returns whether the specified token is a reserved SQL word. This method is called only when the lexer has determined that the specified token is an identifier. The default implementation of this method in SqlLexer returns false.

Parameters:
t - token

LPEX
4.4.0

Copyright � 2016 IBM Corp. All Rights Reserved.

Note: This documentation is for part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.