com.ibm.lpex.sql
Class SqlLexer

java.lang.Object
  |
  +--com.ibm.lpex.cc.LpexSqlParserTokenManager
        |
        +--com.ibm.lpex.sql.SqlLexer
All Implemented Interfaces:
com.ibm.lpex.cc.LpexSqlParserConstants

public final class SqlLexer
extends com.ibm.lpex.cc.LpexSqlParserTokenManager

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

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 specifc language statements are e.g., DB2 runtime API calls. In REXX (which is not precompiled), SQL statements are passed to e.g., DB2 at runtime through the SQLEXEC API.


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, ABSOLUTE, ACQUIRE, ACTION, ACTIVATE, ADD, AFTER, ALIAS, ALL, ALLOCATE, ALLOW, ALTER, ALTERIN, AND, ANY, APPEND, APPL_ID, APPL_NAME, ARE, AS, ASC, ASSERTION, ASSIGN, ASUTIME, AT, ATOMIC, ATTRIBUTE, AUDIT, AUTH_ID, AUTHORIZATION, AUTOSTART, BANG, BAR, BEFORE, BEGIN, BETWEEN, BINARY_INTEGER, BIND, BINDADD, BIT, BIT_AND, BIT_LENGTH, BLOCKED, BOOLEAN, BOTH, BUFFER, BUFFERPOOL, BUFFERPOOLS, BUFFERSIZE, BY, C, CALL, CALLED, CAPTURE, CARDINALITY, CASCADE, CASCADED, CASE, CAST, CATALOG, CCSID, CHANGES, CHAR_LENGTH, CHAR_STRING, CHARACTER_LENGTH, CHECK, CHECKED, CLOSE, CLUSTER, COBOL, COLLATE, COLLATION, COLLECTION, COLLID, COLON, COLUMN, COLUMNS, COMMA, COMMENT, COMMIT, COMPACT, COMPARISONS, COMPOUND, CONFIRM, CONNECT, CONNECTION, CONNECTIONS, CONSTANT, CONSTRAINT, CONSTRAINTS, CONTAINS, CONTINUE, CONTROL, CONVERT, CONVERT_TIMESTAMP_TO_DATE, CORRESPONDING, CREATE, CREATE_NOT_FENCED, CREATEIN, CREATETAB, CROSS, CURRENT_DATE, CURRENT_SERVER, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_TIMEZONE, CURRENT_USER, CURSOR, DATA, DATABASE, DB, DB2, DB2DARI, DB2GENERAL, DB2OPTIONS, DB2SQL, DBA, DBADM, DBINFO, DBSPACE, DEADLOCKS, DEALLOCATE, DECLARE, DEFAULT, DEFERRABLE, DEFERRED, DEFINER, DEFINITION, DELETE, DESC, DESCRIBE, DESCRIPTOR, DETERMINISTIC, DEVICE, DIAGNOSTICS, DIGIT, DISALLOW, DISCONNECT, DISTINCT, DO, DOMAIN, DOT, DROP, DROPIN, DROPPED, DYNAMIC, EACH, EDITPROC, ELSE, ELSIF, EMPTY, END, ENDEXEC, ENVIRONMENT, EOC, EOF, EQUAL, ERASE, ESCAPE, EVALUATE, EVENT, EXCEPT, EXCEPTION, EXCEPTION_INIT, EXCLUSIVE, EXECUTE, EXISTS, EXIT, EXPLAIN, EXPONENT, EXTEND, EXTENDED, EXTENTSIZE, EXTERNAL, EXTRACT, 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, HASHING, HAVING, HEXCHAR, HIERARCHY, HOLD, HOST_ID, HOURS, IDENTIFIED, IDENTITY, IF, IMMEDIATE, IMPLICIT_SCHEMA, IN, IN_MULTI_LINE_COMMENT, IN_SINGLE_LINE_COMMENT, IN_SQL_COMMENT, INCLUDE, INCREMENTAL, INDEX, INDEX_BY, INDEXES, INDICATOR, INFIX, INHERIT, INITIALLY, INNER, INOUT, INPUT, INSENSITIVE, INSERT, INTEGRITY, INTERSECT, INTERVAL, INTO, IS, IS_TABLE_OF, ISOLATION, ITERATE, JAVA, JOIN, JOINPLUS, KEY, LABEL, LANGUAGE, LAST, LBRACKET, LE, LEADING, LEAVE, LETTER, LEVEL, LIBRARY, LIKE, LIMIT, LINK, LINKTYPE, LOCAL, LOCATOR, LOCK, LOCKMAX, LOCKSIZE, LOGGED, LONGVAR, LOOP, LPAD, LPAREN, LT, MAIN, MANAGED, MANUALSTART, MAPPING, MATCH, MAXFILES, MAXFILESIZE, MICROSECONDS, MINPCTUSED, MINUS, MINUTES, MODIFIES, MODULE, MONITOR, MONTHS, MULTI_LINE_COMMENT, NAME, NAMED, NAMES, NATIONAL, NATURAL, NCHAR, NE, NEW, NEW_TABLE, NEXT, NG, NHEADER, NICKNAME, NL, NO, NODE, NODEGROUP, NODES, NODULE, NONBLOCKED, NONE, NOT, NOTFOUND, NOWAIT, NUM_CONSTANT, NUMBER, NUMPARTS, OBID, OCTET_LENGTH, OF, OFF, OID, OLD, OLD_TABLE, OLE, OLEDB, ON, ONLINE, ONLY, OPEN, OPTIMIZE, OPTION, OPTIONS, OR, ORDER, ORIGINPLUS, OTHERS, OUT, OUTER, OUTPUT, OVERHEAD, OVERLAPS, PACKAGE, PACKAGESET, PAD, PAGE, PAGES, PAGESIZE, PARALLEL, PARAMETER, PART, PARTIAL, PARTITIONING, PASSTHRU, PASSWORD, PATH, PCTFREE, PCTINDEX, PENDING, PERCENT, PERMISSION, PIPE, PLAN, PLUS, POSITION, POSITIVE, PRAGMA, PREFETCHSIZE, PREPARE, PRESERVE, PRIMARY, PRIOR, PRIQTY, PRIVATE, PRIVILEGES, PROCEDURE, PROGRAM, PROGRAM_TYPE_MAIN, PUBLIC, QUERYNO, QUERYTAG, QUESTION, RAISE, RBRACE, RBRACKET, READ, READS, RECOMMEND, RECONCILE, RECORD, RECOVERY, REF, REFERENCES, REFERENCING, REFRESH, REG_AGE, REG_CURRENT, REG_DEGREE, REG_MODE, REG_OPTIMIZATION, REG_QUERY, REG_SNAPSHOT, REG_TIMEZONE, REGULAR, RELATIVE, RELEASE, RENAME, REPLACE, REPLICATED, REPLY, REPLY_REPEATING_GROUP, REQUEST, RESET, RESIDENT, RESIGNAL, RESOURCE, RESTORE, RESTRICT, RESULT, RETURN, RETURNS, REVERSE, REVOKE, ROLLBACK, ROW, ROW_NOT_FOUND, ROWS, RPAREN, RRN, RUN, SAVEPOINT, SCANS, SCHEDULE, SCHEMA, SCOPE, SCRATCHPAD, SCROLL, SECONDS, SECQTY, SECTION, SECURITY, SEGMENT, SELECT, SELECTION, SEMICOLON, SERVER, SESSION, SESSION_USER, SET, SETS, SHARE, SIGNAL, SIMPLE, SINGLE, SINGLE_LINE_COMMENT, SIZE, SLASH, SOME, SOURCE, SPACE, SPACES, SPECIFIC, SPECIFICATION, SQL, SQL_CHAR, SQL_I_O_CORRECT, SQL_ID, SQLCA, SQLCODE, SQLDA, SQLERROR, SQLID, SQLLETTER, SQLSTATE, SQLWARNING, STAR, START, STATE, STATEMENT, STATEMENTS, STATIC, STATISTICS, STAY, STOGROUP, STOP, STORAGE, STORPOOL, STYLE, SUB, SUBPAGES, SUBSTRING, SUMMARY, SWITCH, SYNONYM, SYSCAT, SYSFUN, SYSIBM, SYSSTAT, SYSTEM, SYSTEM_USER, TABLE, TABLES, TABLESPACE, TABLESPACES, TEMPLATE, TEMPORARY, THEN, TILDE, TIMEZONE_HOUR, TIMEZONE_MINUTE, TO, TO_CHAR, TO_NUMBER, tokenImage, TRAILING, TRANSACTION, TRANSACTIONS, TRANSFERRATE, TRANSLATION, TRIGGER, TRIM, TRUE, TYPE, TYPE_BIGINT, 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_NULL, TYPE_NUM, TYPE_NUMERIC, TYPE_PRECISION, TYPE_REAL, TYPE_SMALLINT, TYPE_TIME, TYPE_TIMESTAMP, TYPE_VARCHAR, TYPE_VARGRAPHIC, UNCHECKED, UNDER, UNION, UNIQUE, UNKNOWN, UNLINK, UPDATE, URL, USAGE, USE, USER, USING, VALIDPROC, VALUES, VARCHAR2, VARIABLE, VARIANT, VARYING, VCAT, 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, java.lang.String hostLanguage, SqlLexerStyles styles, SqlLexerClasses classes)
          Constructor for the SQL lexer.
 
Method Summary
 void initialize()
          Initialize the SQL lexer.
 int processToken()
          Retrieve and process the next SQL token.
 void reinitialize()
          Reinitialize the SQL lexer.
protected  void setComment(com.ibm.lpex.cc.Token t)
          Set style & class for comments.
 
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,
                java.lang.String hostLanguage,
                SqlLexerStyles styles,
                SqlLexerClasses classes)
Constructor for the SQL lexer.
Parameters:
charStream - LPEX input character stream
hostLanguage - host language (e.g., LpexCommonParser.LANGUAGE_JAVA)
styles - style characters to use (predefined by host parser)
classes - classes to use (predefined by host parser)
Method Detail

initialize

public void initialize()
Initialize the SQL lexer. The token manager is initialized for the same character input stream, and in the default lexical state (DEFAULT). This method is normally called when the host parser switches the active lexer to the SQL lexer.

reinitialize

public void reinitialize()
Reinitialize the SQL lexer. The token manager is reinitialized for the same character input stream, and in the default lexical state (DEFAULT). This method is normally called after a TokenMgrError exception (e.g., encountered EOF in the middle of a token / a bad character), after the token in error is skipped and parsing is continued.

processToken

public int processToken()
Retrieve and process the next SQL token.
Returns:
LEXER_RC_OK, LEXER_RC_EOF [+LEXER_RC_MORE], LEXER_RC_END
See Also:
LpexCommonParser.LEXER_RC_OK, LpexCommonParser.LEXER_RC_EOF, LpexCommonParser.LEXER_RC_END, LpexCommonParser.LEXER_RC_MORE

setComment

protected void setComment(com.ibm.lpex.cc.Token t)
Set style & class 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 dummy in LpexSqlParser.jj.
Overrides:
setComment in class com.ibm.lpex.cc.LpexSqlParserTokenManager
Parameters:
t - special token