LPEX
4.4.0

com.ibm.lpex.java
Class JavaParser

java.lang.Object
  extended by com.ibm.lpex.core.LpexCommonParser
      extended by com.ibm.lpex.java.JavaParser
All Implemented Interfaces:
LpexConstants, LpexParser
Direct Known Subclasses:
JavaSqlParser

public class JavaParser
extends LpexCommonParser

Document parser for Java.

Actions and assigned keys added by this document parser:

Keys already defined (for example, by the active base editor profile and by the user profile) to an action different from nullAction are not redefined in here.

Editor actions modified by this document parser:

Actions redefined by LpexCommonParser and further modified by this document parser:

Parser properties handled directly by this parser:


Field Summary
 
Fields inherited from class com.ibm.lpex.core.LpexCommonParser
ATTRIBUTES_COMMENT, ATTRIBUTES_COMMENT_KEYWORD, ATTRIBUTES_COMMENT1, ATTRIBUTES_DEFAULT, ATTRIBUTES_DIRECTIVE, ATTRIBUTES_ERROR, ATTRIBUTES_ERROR1, ATTRIBUTES_KEYWORD, ATTRIBUTES_KEYWORD1, ATTRIBUTES_LIBRARY, ATTRIBUTES_NONSOURCE, ATTRIBUTES_NUMERAL, ATTRIBUTES_STRING, ATTRIBUTES_STRING1, BACKGROUND_COLOR, CLASS_MESSAGE, LANGUAGE_CCPP, LANGUAGE_CICS, LANGUAGE_CL, LANGUAGE_COBOL, LANGUAGE_COBOL400, LANGUAGE_COBOLILE, LANGUAGE_DDS, LANGUAGE_DLI, LANGUAGE_FORTRAN, LANGUAGE_HLASM, LANGUAGE_HTML, LANGUAGE_JAVA, LANGUAGE_JCL, LANGUAGE_LISP, LANGUAGE_PERL, LANGUAGE_PLI, LANGUAGE_REXX, LANGUAGE_RPG, LANGUAGE_RPGLEFIXED, LANGUAGE_RPGLEFREE, LANGUAGE_SABRETALK, LANGUAGE_SQL, LANGUAGE_XMI, LANGUAGE_XML, LANGUAGE_XSL, LEXER_RC_END, LEXER_RC_EOF, LEXER_RC_MORE, LEXER_RC_OK, POPUP_END, POPUP_FILTERVIEW, POPUP_SOURCE, POPUP_TOP, PROTOKEY_EMPTY, STYLE_MESSAGE, STYLE_NAME, view
 
Fields inherited from interface com.ibm.lpex.core.LpexConstants
HELP_COMMAND_MAP, LPEX_VERSION, MSG_POPUP_COMMENT, MSG_POPUP_ERRORS, MSG_POPUP_EXCLUDESELECTION, MSG_POPUP_FILTERVIEWMENU, MSG_POPUP_INSERTMENU, MSG_POPUP_SELECTEDMENU, MSG_POPUP_SHOWALL, MSG_POPUP_SOURCEMENU, MSG_POPUP_TASKS, MSG_POPUP_UNCOMMENT, PARSE_PENDING_CHANGE_MASK, PARSE_PENDING_INSERT_MASK, PARSE_PENDING_NEXT_DELETED_MASK, PARSE_PENDING_NEXT_SHOW_DELETED_MASK, PARSE_PENDING_PREV_DELETED_MASK, PARSE_PENDING_PREV_SHOW_DELETED_MASK, PARSE_PENDING_UNDO_MASK, PLATFORM_AWT, PLATFORM_SWT, PLATFORM_SWT_KEY, SHOW_ALL, SHOW_DOCUMENT, SHOW_NONE, SHOW_VIEW, STATUS_FIELDS_NOINSERT, STATUS_FIELDS_TRUNCATE, STATUS_FILE_ERRORREADING, STATUS_FILE_INCORRECTENCODING, STATUS_FILE_NOTFOUND, STATUS_FINDTEXT_INVALIDPATTERN, STATUS_FINDTEXT_NOTFOUND, STATUS_FINDTEXT_ONLYOCCURRENCE, STATUS_FINDTEXT_READONLY, STATUS_FINDTEXT_WRAPPED, STATUS_LOCATE_NOSEQUENCETEXT, STATUS_LOCATE_NOTFOUND, STATUS_LOCATE_WRAPPED, STATUS_SAVE_CANCELLED, STATUS_SAVE_FAILED, STATUS_TEXTLIMIT_ENFORCED, STATUS_TEXTLIMIT_OVERFLOW, STATUS_UNDO_NOTHINGUNDONE
 
Constructor Summary
JavaParser(LpexView lpexView)
          Constructor for the parser.
 
Method Summary
protected  void addErrorMessage(int element, String message)
          Displays an embedded error message for an element.
protected  void delete()
          Flows text inside a comment block during a delete which joins lines.
protected  void document(LpexDocumentLocation cursor)
          Documents a class / interface / method.
protected  void expandProtoKeyword(int s, int e, String p)
          Subclassed in order to effectively run the doc action when the prototype keyword to expand is "/**".
 String getCommentStyleCharacters()
          Returns the style characters used for styling comments ("cCt$").
 String getLanguage()
          Returns "Java", the main language supported by this parser.
 String getLanguage(LpexDocumentLocation loc)
          Retrieve a string identifying the language segment at the specified location.
protected  String getPopupItem(String key)
           
protected  String getPopupItems(int popupLocation)
          Returns this parser's contribution to the popup.
 ResourceBundle getProfile()
          Returns this parser's profile resource bundle.
 String getProperty(String key)
          Expands LpexCommonParser's getProperty() to substitute arguments for key PROTOKEY_EMPTY.
protected  SqlLexer getSqlLexer(LpexCharStream sqlLexerStream)
          Returns the SqlLexer.
protected  void initParser()
          Initializes the parser.
 boolean isTokenDelimiter(char ch)
          Returns true if the specified character is a token delimiter.
 boolean isWordCharacter(int element, int position)
          Redefines word characters for adequate word navigation in Java documents.
protected  void join()
          Flows text inside a comment block during a join.
protected  void openLine()
          Continues the comment for a line opened inside a comment block.
 void parseAll()
          Total parse of the entire document.
 void parseElement(int element)
          Incremental parse.
protected  void propertySet(String key)
          Listens to changes to the taskTags parser property in this view.
protected  boolean setLexer(int newLexer)
          Sets or switches the active lexer.
protected  void setStyleAttributes()
          Defines this parser's style attributes.
protected  void split()
          Continues the comment for a line split inside a comment block.
protected  void splitLine()
          Continues the comment for a line split inside a comment block.
protected  void trace(LpexDocumentLocation cursor)
          Inserts trace call(s) for a method.
 
Methods inherited from class com.ibm.lpex.core.LpexCommonParser
addDocumentMessage, addMessage, addMessage, addMessage, blockMarkWord, copyDocumentMessages, cursorIndent, defineFilterAction, defineFilterAction, getInstallStyleAttributes, getLshToken, getStyleName, getStyles, getTextIndent, getToken, getTokenLocation, indentText, indentText, indentText, isDebuggable, isPrimaryParser, lineComment, lpexView, matchToken, newLine, parse, removeDocumentMessages, removeMessages, removeMessages, resetParser, setProperty, setStyle, styleString, terminateParser, tokenBegin, tokenEnd, totalParse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JavaParser

public JavaParser(LpexView lpexView)
Constructor for the parser.

Parameters:
lpexView - the document view associated with this parser
Method Detail

initParser

protected void initParser()
Initializes the parser. Sets up the parser for the associated document view: sets style attributes, registers element classes, creates editor actions, redefines the popup, etc. for the language-sensitive edit features supported.

Overrides:
initParser in class LpexCommonParser
See Also:
Life cycle

parseAll

public void parseAll()
Total parse of the entire document. Done initially, after a document has been loaded in the editor, after an updateProfile command, and after a change to the taskTags parser property.

Specified by:
parseAll in class LpexCommonParser
See Also:
Total and incremental parse

parseElement

public void parseElement(int element)
Incremental parse.

Specified by:
parseElement in class LpexCommonParser
Parameters:
element - an element affected by a committed change in this view
See Also:
LpexView.parsePending(int), LpexView.elementParsed(int), Total and incremental parse

getProfile

public ResourceBundle getProfile()
Returns this parser's profile resource bundle.

Overrides:
getProfile in class LpexCommonParser
See Also:
LpexCommonParser.getProperty(java.lang.String), Parser properties

getLanguage

public String getLanguage()
Returns "Java", the main language supported by this parser.

Overrides:
getLanguage in class LpexCommonParser
See Also:
LpexCommonParser.LANGUAGE_JAVA

getLanguage

public String getLanguage(LpexDocumentLocation loc)
Retrieve a string identifying the language segment at the specified location. In mixed-content documents, this may differ from the main language of the document. The method assumes that no parse is pending for the location element.

Overrides:
getLanguage in class LpexCommonParser
Parameters:
loc - document location
Returns:
one of: LpexCommonParser.LANGUAGE_JAVA, LpexCommonParser.LANGUAGE_SQL
See Also:
LpexCommonParser.getLanguage(), Mixed content documents

propertySet

protected void propertySet(String key)
Listens to changes to the taskTags parser property in this view.

Overrides:
propertySet in class LpexCommonParser
Parameters:
key - base name of the parser property that was set, for example "autoIndent"
See Also:
LpexCommonParser.setProperty(String,String), LpexCommonParser.getProperty(java.lang.String), Parser properties

getPopupItems

protected String getPopupItems(int popupLocation)
Returns this parser's contribution to the popup. This parser contributes to the Filter view submenu (Methods, Logic outline, Errors, Tasks) and to the Source submenu (Comment, Uncomment, Document, Trace).

Overrides:
getPopupItems in class LpexCommonParser
Parameters:
popupLocation - the location on the pop-up menu of the items requested, one of:
LpexCommonParser.POPUP_TOP, LpexCommonParser.POPUP_FILTERVIEW, LpexCommonParser.POPUP_SOURCE, LpexCommonParser.POPUP_END
Returns:
this parser's contribution to the pop-up menu, or
null if none
See Also:
LpexCommonParser.defineFilterAction(java.lang.String, java.lang.String)

getPopupItem

protected String getPopupItem(String key)

setStyleAttributes

protected void setStyleAttributes()
Defines this parser's style attributes. The following style characters are set: '_' (layout blanks), 'k' (keyword), 'r' (keyword return), 'i' (identifier), 'n' (constant), 'q' (string literal), 'o' (operator), 'p' (punctuation), 'c' (comment), 'C' (javadoc comment), 't' (javadoc comment tag), '$' (comment task tag), 'b' (brace), 'u' (Unicode sequence), 'e' (error).


getCommentStyleCharacters

public String getCommentStyleCharacters()
Returns the style characters used for styling comments ("cCt$").

Overrides:
getCommentStyleCharacters in class LpexCommonParser

openLine

protected void openLine()
Continues the comment for a line opened inside a comment block.

Overrides:
openLine in class LpexCommonParser

splitLine

protected void splitLine()
Continues the comment for a line split inside a comment block.

Overrides:
splitLine in class LpexCommonParser
See Also:
LpexCommonParser.getTextIndent(int)

split

protected void split()
Continues the comment for a line split inside a comment block.


join

protected void join()
Flows text inside a comment block during a join.


delete

protected void delete()
Flows text inside a comment block during a delete which joins lines.


isTokenDelimiter

public boolean isTokenDelimiter(char ch)
Returns true if the specified character is a token delimiter.

Overrides:
isTokenDelimiter in class LpexCommonParser
Parameters:
ch - character queried, for example ')'
See Also:
LpexCommonParser.getToken(com.ibm.lpex.core.LpexDocumentLocation), LpexCommonParser.tokenBegin(com.ibm.lpex.core.LpexDocumentLocation), LpexCommonParser.tokenEnd(com.ibm.lpex.core.LpexDocumentLocation)

isWordCharacter

public boolean isWordCharacter(int element,
                               int position)
Redefines word characters for adequate word navigation in Java documents.

Overrides:
isWordCharacter in class LpexCommonParser
Parameters:
element - an element in the document section currently loaded in the editor
position - ONE-based position in the element text

getProperty

public String getProperty(String key)
Expands LpexCommonParser's getProperty() to substitute arguments for key PROTOKEY_EMPTY. Argument {0} is the package name, {1} is the class name. The substitutions are based on the name parameter of the associated document.

Specified by:
getProperty in interface LpexParser
Overrides:
getProperty in class LpexCommonParser
Parameters:
key - property name, for example, "proto.doc" for this parser's expansion of the keyword "doc" by the proto action, or "view.proto.doc" for this property as defined in the current view's instance of the parser
See Also:
LpexCommonParser.getLanguage(), LpexCommonParser.getProfile(), Parser properties

addErrorMessage

protected void addErrorMessage(int element,
                               String message)
Displays an embedded error message for an element.

Parameters:
element - the element in error
message - error message key in LPEX's Resources.properties

expandProtoKeyword

protected void expandProtoKeyword(int s,
                                  int e,
                                  String p)
Subclassed in order to effectively run the doc action when the prototype keyword to expand is "/**".

Overrides:
expandProtoKeyword in class LpexCommonParser
Parameters:
s - ZERO-based keyword start offset in the current element
e - ZERO-based keyword end offset in the current element
p - the prototype expansion string

document

protected void document(LpexDocumentLocation cursor)
Documents a class / interface / method. Adds a detailed javadoc comment block. Assumes that the class / interface / method we try to document starts on a new line, and any type / qualifier and its id are on the same line.

Parameters:
cursor - document location in the scope of the class / interface / method to document

trace

protected void trace(LpexDocumentLocation cursor)
Inserts trace call(s) for a method.

Parameters:
cursor - document location in the scope of the method to document

setLexer

protected boolean setLexer(int newLexer)
Sets or switches the active lexer.

Parameters:
newLexer - the new lexer, one of: LEXER_JAVA, LEXER_SQL
Returns:
true = new lexer has been set as the active lexer, and initialized in its DEFAULT lexical state

getSqlLexer

protected SqlLexer getSqlLexer(LpexCharStream sqlLexerStream)
Returns the SqlLexer. The document parser extending JavaParser to support embedded SQL statements must override this method to construct and return an SqlLexer object.

The implementation of this method provided by the JavaParser class does nothing, except return null.

Parameters:
sqlLexerStream - input character stream for the SQL lexer

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.