com.ibm.lpex.samples
Class TestParser2

java.lang.Object
  |
  +--com.ibm.lpex.core.LpexCommonParser
        |
        +--com.ibm.lpex.samples.TestParser2
All Implemented Interfaces:
LpexConstants, LpexParser

public class TestParser2
extends LpexCommonParser

Sample LpexCommonParser parser: STEP 2 - tokenize.

This takes the sample a little further, setting a few element classes and styles. Our parser will be activated by the loading in the editor of file types that it is associated with, and display them in two colours: regular text (blue), and comments (green).

A parser communicates with its associated document view in the editor through public methods in class LpexView. This is the main class of the editor API (Application Programming Interface) for parsers and user-defined commands, actions, and user profiles. LpexView allows a parser class to access the text of the document loaded in the editor, set display styles for the elements, assign element classes to the elements, and query them as reference points during incremental parsing.

Element classes are used to roughly classify document structures, or identify other points of interest inside the parsed document. An element can be assigned any combination of element classes. Here, we'll define two such classes: one for elements that contain text, and one for elements which (also) contain C++-style comments (those starting with a double-slash "//").

Element classes are defined and registered by name. LPEX allocates view-scoped bits for the classes enabled, which bit-masks may be used to query and set classes in the elements via the API.

An element's styles string 'parallels' its text string: each character in the styles string determines how the corresponding character in the text will display (foreground and background colour, regular or underlined, etc.).

 // two element classes
 static final String
    CLASS_TEXT    = "text",
    CLASS_COMMENT = "comment";

 // the two element classes as bit-masks, and a mask for all our classes
 private long
    classText,
    classComment,
    classAll;

See Also:
LpexView

Fields inherited from class com.ibm.lpex.core.LpexCommonParser
ATTRIBUTES_COMMENT, ATTRIBUTES_DEFAULT, ATTRIBUTES_DIRECTIVE, ATTRIBUTES_ERROR, ATTRIBUTES_KEYWORD, ATTRIBUTES_LIBRARY, ATTRIBUTES_NONSOURCE, ATTRIBUTES_NUMERAL, ATTRIBUTES_STRING, BACKGROUND_COLOR, CLASS_MESSAGE, LANGUAGE_CCPP, LANGUAGE_CICS, LANGUAGE_CL, LANGUAGE_COBOL, LANGUAGE_DDS, LANGUAGE_FORTRAN, LANGUAGE_HLASM, LANGUAGE_HTML, LANGUAGE_JAVA, LANGUAGE_JCL, LANGUAGE_PLI, LANGUAGE_REXX, LANGUAGE_RPG, LANGUAGE_SQL, LANGUAGE_XMI, LANGUAGE_XML, LANGUAGE_XSL, LEXER_RC_END, LEXER_RC_EOF, LEXER_RC_MORE, LEXER_RC_OK, PROTOKEY_EMPTY, STYLE_MESSAGE, view
 
Fields inherited from interface com.ibm.lpex.core.LpexConstants
ACTION_APPEND_TO_ACTION_ARGUMENT, ACTION_BACK_SPACE, ACTION_BLOCK_COPY, ACTION_BLOCK_DELETE, ACTION_BLOCK_FILL, ACTION_BLOCK_LOWER_CASE, ACTION_BLOCK_MARK_ALL, ACTION_BLOCK_MARK_BOTTOM, ACTION_BLOCK_MARK_CHARACTER, ACTION_BLOCK_MARK_DOWN, ACTION_BLOCK_MARK_ELEMENT, ACTION_BLOCK_MARK_ELEMENT_AT_MOUSE, ACTION_BLOCK_MARK_END, ACTION_BLOCK_MARK_HOME, ACTION_BLOCK_MARK_LEFT, ACTION_BLOCK_MARK_NEXT_WORD, ACTION_BLOCK_MARK_PAGE_DOWN, ACTION_BLOCK_MARK_PAGE_LEFT, ACTION_BLOCK_MARK_PAGE_RIGHT, ACTION_BLOCK_MARK_PAGE_UP, ACTION_BLOCK_MARK_PREV_WORD, ACTION_BLOCK_MARK_RECTANGLE, ACTION_BLOCK_MARK_RECTANGLE_AT_MOUSE, ACTION_BLOCK_MARK_RIGHT, ACTION_BLOCK_MARK_TO_MOUSE, ACTION_BLOCK_MARK_TOP, ACTION_BLOCK_MARK_UP, ACTION_BLOCK_MARK_WORD, ACTION_BLOCK_MARK_WORD_AT_MOUSE, ACTION_BLOCK_MOVE, ACTION_BLOCK_OVERLAY, ACTION_BLOCK_SHIFT_LEFT, ACTION_BLOCK_SHIFT_RIGHT, ACTION_BLOCK_UNMARK, ACTION_BLOCK_UPPER_CASE, ACTION_BOTTOM, ACTION_CAPITALIZE_WORD, ACTION_CLEAR_PREFIX, ACTION_COMMAND_LINE, ACTION_COMPARE, ACTION_COMPARE_CLEAR, ACTION_COMPARE_NEXT, ACTION_COMPARE_PREVIOUS, ACTION_COMPARE_REFRESH, ACTION_COPY, ACTION_CURSOR_TO_MOUSE, ACTION_CUT, ACTION_DELETE, ACTION_DELETE_BLANK_LINES, ACTION_DELETE_LINE, ACTION_DELETE_NEXT_WORD, ACTION_DELETE_PREV_WORD, ACTION_DELETE_TO_LINE_START, ACTION_DELETE_WHITE_SPACE, ACTION_DOWN, ACTION_DUPLICATE_LINE, ACTION_ECLIPSE_COPY, ACTION_ECLIPSE_CUT, ACTION_ECLIPSE_DELETE, ACTION_ECLIPSE_PASTE, ACTION_ECLIPSE_PREFIX, ACTION_ECLIPSE_PRINT, ACTION_ECLIPSE_REDO, ACTION_ECLIPSE_SELECT_ALL, ACTION_ECLIPSE_SHIFT_LEFT, ACTION_ECLIPSE_SHIFT_RIGHT, ACTION_ECLIPSE_STRIP_PREFIX, ACTION_ECLIPSE_UNDO, ACTION_END, ACTION_EXEC_COMMAND, ACTION_EXPAND_HIDE_AT_MOUSE, ACTION_FILTER_SELECTION, ACTION_FIND, ACTION_FIND_AND_REPLACE, ACTION_FIND_AND_REPLACE_NEXT, ACTION_FIND_AND_REPLACE_UP, ACTION_FIND_BLOCK_END, ACTION_FIND_BLOCK_START, ACTION_FIND_LAST_CHANGE, ACTION_FIND_MARK, ACTION_FIND_NEXT, ACTION_FIND_QUICK_MARK, ACTION_FIND_SELECTION, ACTION_FIND_UP, ACTION_GET, ACTION_HELP, ACTION_HEX_EDIT_LINE, ACTION_HOME, ACTION_INSERT_FILE_NAME, ACTION_INSERT_LEFT_BRACE, ACTION_INSERT_NOT, ACTION_INSERT_RIGHT_BRACE, ACTION_INSERT_TAB, ACTION_INSERT_TO_TAB, ACTION_INVALID, ACTION_JOIN, ACTION_KEY_RECORDER_PLAY, ACTION_KEY_RECORDER_START, ACTION_KEY_RECORDER_STOP, ACTION_KILL_LINE, ACTION_KILL_REGION, ACTION_LEFT, ACTION_LOCATE_LINE, ACTION_LOWER_CASE_REGION, ACTION_LOWER_CASE_WORD, ACTION_NAME_MARK, ACTION_NEW_LINE, ACTION_NEXT_TAB_STOP, ACTION_NEXT_WORD, ACTION_NULL_ACTION, ACTION_ONE_SPACE, ACTION_OPEN_LINE, ACTION_PAGE_DOWN, ACTION_PAGE_LEFT, ACTION_PAGE_RIGHT, ACTION_PAGE_UP, ACTION_PASTE, ACTION_POPUP_AT_CURSOR, ACTION_POPUP_AT_MOUSE, ACTION_PREFERENCES, ACTION_PREFIX_BACK_SPACE, ACTION_PREFIX_DELETE, ACTION_PREFIX_END, ACTION_PREFIX_HOME, ACTION_PREFIX_LEFT, ACTION_PREFIX_RIGHT, ACTION_PREFIX_TRUNCATE, ACTION_PREV_TAB_STOP, ACTION_PREV_WORD, ACTION_PRINT, ACTION_PROCESS_PREFIX, ACTION_REDO, ACTION_RELOAD, ACTION_RENAME, ACTION_RIGHT, ACTION_SAVE, ACTION_SAVE_AS, ACTION_SAVE_TO_WRITER, ACTION_SCROLL_BOTTOM, ACTION_SCROLL_CENTER, ACTION_SCROLL_TOP, ACTION_SET_ACTION_ARGUMENT, ACTION_SET_PARSER, ACTION_SET_QUICK_MARK, ACTION_SET_QUICK_MARK_ALL, ACTION_SET_QUICK_MARK_WORD, ACTION_SHOW_ALL, ACTION_SPLIT, ACTION_SPLIT_AND_SHIFT, ACTION_SPLIT_LINE, ACTION_TEXT_WINDOW, ACTION_TOGGLE_CASE_SENSITIVE, ACTION_TOGGLE_INSERT, ACTION_TOGGLE_KEY_RECORDING, ACTION_TOGGLE_REGULAR_EXPRESSION, ACTION_TOP, ACTION_TRANSPOSE_CHARACTERS, ACTION_TRANSPOSE_LINES, ACTION_TRANSPOSE_WORDS, ACTION_TRUNCATE, ACTION_UNDO, ACTION_UP, ACTION_UPPER_CASE_REGION, ACTION_UPPER_CASE_WORD, ACTION_USER, ACTION_WINDOW_BOTTOM, ACTION_WINDOW_TOP, ACTION_WORD_END, ACTION_WORD_START, ACTION_YANK, ACTION_YANK_PREVIOUS, BLOCK_PARAMETER_BOTTOM_ELEMENT, BLOCK_PARAMETER_BOTTOM_POSITION, BLOCK_PARAMETER_DEFAULT_TYPE, BLOCK_PARAMETER_ELEMENT_TEXT, BLOCK_PARAMETER_IN_VIEW, BLOCK_PARAMETER_TEXT, BLOCK_PARAMETER_TOP_ELEMENT, BLOCK_PARAMETER_TOP_POSITION, BLOCK_PARAMETER_TYPE, COMPARE_PARAMETER_IGNOREALLBLANKS, COMPARE_PARAMETER_IGNORECASE, COMPARE_PARAMETER_IGNORELEADINGBLANKS, COMPARE_PARAMETER_IGNORETRAILINGBLANKS, FIND_TEXT_PARAMETER_ASIS, FIND_TEXT_PARAMETER_BLOCK, FIND_TEXT_PARAMETER_COLUMNS, FIND_TEXT_PARAMETER_EMPHASIS, FIND_TEXT_PARAMETER_END_COLUMN, FIND_TEXT_PARAMETER_FIND_TEXT, FIND_TEXT_PARAMETER_MARK, FIND_TEXT_PARAMETER_REGULAR_EXPRESSION, FIND_TEXT_PARAMETER_REPLACE_TEXT, FIND_TEXT_PARAMETER_START_COLUMN, FIND_TEXT_PARAMETER_WRAP, HELP_BLOCK_PANEL, HELP_CCPP, HELP_COBOL, HELP_COMMAND_MAP, HELP_COMPARE_PANEL, HELP_CONTROLS_PANEL, HELP_DEFAULT_PROPERTIES_FILE, HELP_FINDTEXT_PANEL, HELP_FONT_PANEL, HELP_HEXEDITLINE_DIALOG, HELP_HLASM, HELP_JAVA, HELP_JCL, HELP_PALETTE_PANEL, HELP_PARAMETER_CONFIGURATION, HELP_PARAMETER_HOMEPAGE, HELP_PARAMETER_LOCATION, HELP_PARSERASSOCIATIONS_PANEL, HELP_PARSERS_PANEL, HELP_PLI, HELP_POPUP_PANEL, HELP_PREFERENCE_PANELS, HELP_PRINT_PANEL, HELP_PRINTFONT_PANEL, HELP_ROOT_PANEL, HELP_SAVE_PANEL, HELP_SEQUENCENUMBERS_PANEL, HELP_SQL, HELP_TABS_PANEL, HELP_USERACTIONS_PANEL, HELP_USERCOMMANDS_PANEL, HELP_USERKEYACTIONS_PANEL, HELP_USERMOUSEACTIONS_PANEL, HELP_USERPROFILE_PANEL, HELP_VIEWPARSER_PANEL, HELP_VIEWROOT_PANEL, HELP_VIEWSAVE_PANEL, HELP_VIEWSEQUENCENUMBERS_PANEL, HELP_VIEWSOURCEENCODING_PANEL, LPEX_VERSION, MSG_ACTION_ALT, MSG_ACTION_CONTROL, MSG_ACTION_INCOMPLETE, MSG_ACTION_INVALID, MSG_ACTION_KEYACTIONSINVALID, MSG_ACTION_KEYINVALID, MSG_ACTION_META, MSG_ACTION_MOUSEACTIONSINVALID, MSG_ACTION_MOUSEEVENTINVALID, MSG_ACTION_SHIFT, MSG_ACTION_USERACTIONSINVALID, MSG_CLASS_INVALID, MSG_CLASS_NOTFOUND, MSG_CLASSNAME_INVALID, MSG_COMMAND_INCOMPLETE, MSG_COMMAND_INTEGERMISSING, MSG_COMMAND_INVALID, MSG_COMMAND_INVALID_QUOTED_PARAMETER, MSG_COMMAND_INVALIDPARAMETER, MSG_COMMAND_NOPARAMETERS, MSG_COMMAND_USER_COMMANDS_INVALID, MSG_COMMANDLINE_ALL, MSG_COMMANDLINE_CASE_SENSITIVE, MSG_COMMANDLINE_END_COLUMN, MSG_COMMANDLINE_FILE_NAME, MSG_COMMANDLINE_FILL_CHARACTER, MSG_COMMANDLINE_FIND, MSG_COMMANDLINE_FIND_MARK, MSG_COMMANDLINE_LINE_NUMBER, MSG_COMMANDLINE_NAME_MARK, MSG_COMMANDLINE_NEXT, MSG_COMMANDLINE_PREV, MSG_COMMANDLINE_REGULAR_EXPRESSION, MSG_COMMANDLINE_REPLACE, MSG_COMMANDLINE_REPLACE_ALL, MSG_COMMANDLINE_REPLACE_NEXT, MSG_COMMANDLINE_RESTRICT_SEARCH_TO_COLUMNS, MSG_COMMANDLINE_RESTRICT_SEARCH_TO_SELECTION, MSG_COMMANDLINE_SELECT_FOUND_TEXT, MSG_COMMANDLINE_SEQUENCE_NUMBER, MSG_COMMANDLINE_SET_PARSER, MSG_COMMANDLINE_START_COLUMN, MSG_COMMANDLINE_WRAP, MSG_COMPARE_FILENOTFOUND, MSG_COMPARE_MISMATCHES, MSG_COMPARE_NOMISMATCHES, MSG_COMPARE_NOMOREMISMATCHES, MSG_ENCODING_INVALID, MSG_FILE_CREATED, MSG_FILE_ERROR_READING, MSG_FILE_ERROR_WRITING, MSG_FILE_NOT_FOUND, MSG_FILE_SAVE_NONAME, MSG_FILE_SAVE_TRUNCATION, MSG_FILEDIALOG_COMPARE, MSG_FILEDIALOG_GET, MSG_FILEDIALOG_SAVEAS, MSG_FINDTEXTCOMMAND_COLUMNSMISSING, MSG_FINDTEXTCOMMAND_INVALIDPATTERN, MSG_FINDTEXTCOMMAND_NOFINDTEXT, MSG_FINDTEXTCOMMAND_NOTFOUND, MSG_FINDTEXTCOMMAND_ONLYOCCURRENCE, MSG_FINDTEXTCOMMAND_WRAPPED, MSG_HELP_ERROR, MSG_HELP_OPEN, MSG_LOCATECOMMAND_ELEMENTNOTFOUND, MSG_LOCATECOMMAND_LINENOTFOUND, MSG_LOCATECOMMAND_MARKNOTFOUND, MSG_LOCATECOMMAND_NOSEQUENCETEXT, MSG_LOCATECOMMAND_SEQUENCENUMBERNOTFOUND, MSG_LOCATECOMMAND_SEQUENCETEXTNOTFOUND, MSG_MARK_1_LINE_EXCLUDED, MSG_MARK_N_LINES_EXCLUDED, MSG_MARK_QUICK_MARK_SET, MSG_POPUP_BLOCKCOPY, MSG_POPUP_BLOCKDELETE, MSG_POPUP_BLOCKMARKALL, MSG_POPUP_BLOCKMARKCHARACTER, MSG_POPUP_BLOCKMARKLINE, MSG_POPUP_BLOCKMARKRECTANGLE, MSG_POPUP_BLOCKMOVE, MSG_POPUP_BLOCKOVERLAY, MSG_POPUP_BLOCKUNMARK, MSG_POPUP_COPY, MSG_POPUP_CUT, MSG_POPUP_ERRORS, MSG_POPUP_FILTERSELECTION, MSG_POPUP_FILTERVIEW, MSG_POPUP_FINDSELECTION, MSG_POPUP_PASTE, MSG_POPUP_SHOWALL, MSG_PREFERENCES_APPEARANCE_DESCRIPTION, MSG_PREFERENCES_APPEARANCE_TITLE, MSG_PREFERENCES_APPLY, MSG_PREFERENCES_BLOCK_DEFAULT_TYPE, MSG_PREFERENCES_BLOCK_DESCRIPTION, MSG_PREFERENCES_BLOCK_TITLE, MSG_PREFERENCES_CANCEL, MSG_PREFERENCES_CHANGE, MSG_PREFERENCES_COMPARE_DESCRIPTION, MSG_PREFERENCES_COMPARE_IGNOREALLBLANKS, MSG_PREFERENCES_COMPARE_IGNORECASE, MSG_PREFERENCES_COMPARE_IGNORELEADINGBLANKS, MSG_PREFERENCES_COMPARE_IGNORETRAILINGBLANKS, MSG_PREFERENCES_COMPARE_TITLE, MSG_PREFERENCES_CONTROLS_COMMANDLINE, MSG_PREFERENCES_CONTROLS_DESCRIPTION, MSG_PREFERENCES_CONTROLS_EXPANDHIDE, MSG_PREFERENCES_CONTROLS_FORMATLINE, MSG_PREFERENCES_CONTROLS_HIDESEQUENCENUMBERS, MSG_PREFERENCES_CONTROLS_MESSAGELINE, MSG_PREFERENCES_CONTROLS_PREFIXAREA, MSG_PREFERENCES_CONTROLS_STATUSLINE, MSG_PREFERENCES_CONTROLS_TITLE, MSG_PREFERENCES_DEFAULT, MSG_PREFERENCES_DELETE, MSG_PREFERENCES_FIND_TEXT_ASIS, MSG_PREFERENCES_FIND_TEXT_BLOCK, MSG_PREFERENCES_FIND_TEXT_COLUMNS, MSG_PREFERENCES_FIND_TEXT_DESCRIPTION, MSG_PREFERENCES_FIND_TEXT_EMPHASIS, MSG_PREFERENCES_FIND_TEXT_END_COLUMN, MSG_PREFERENCES_FIND_TEXT_FIND_TEXT, MSG_PREFERENCES_FIND_TEXT_MARK, MSG_PREFERENCES_FIND_TEXT_REGULAR_EXPRESSION, MSG_PREFERENCES_FIND_TEXT_REPLACE_TEXT, MSG_PREFERENCES_FIND_TEXT_START_COLUMN, MSG_PREFERENCES_FIND_TEXT_TITLE, MSG_PREFERENCES_FIND_TEXT_WRAP, MSG_PREFERENCES_FONT_BOLD, MSG_PREFERENCES_FONT_DESCRIPTION, MSG_PREFERENCES_FONT_ITALIC, MSG_PREFERENCES_FONT_NAME, MSG_PREFERENCES_FONT_SAMPLE, MSG_PREFERENCES_FONT_SIZE, MSG_PREFERENCES_FONT_STYLE, MSG_PREFERENCES_FONT_TITLE, MSG_PREFERENCES_HELP, MSG_PREFERENCES_INCORRECT_VALUE, MSG_PREFERENCES_OK, MSG_PREFERENCES_PALETTE_DESCRIPTION, MSG_PREFERENCES_PALETTE_PALETTE, MSG_PREFERENCES_PALETTE_TITLE, MSG_PREFERENCES_PARSER_ASSOCIATIONS_DESCRIPTION, MSG_PREFERENCES_PARSER_ASSOCIATIONS_EXTENSION, MSG_PREFERENCES_PARSER_ASSOCIATIONS_PARSER, MSG_PREFERENCES_PARSER_ASSOCIATIONS_TABLEEXTENSION, MSG_PREFERENCES_PARSER_ASSOCIATIONS_TABLEPARSER, MSG_PREFERENCES_PARSER_ASSOCIATIONS_TITLE, MSG_PREFERENCES_PARSERS_CLASSNAME, MSG_PREFERENCES_PARSERS_DESCRIPTION, MSG_PREFERENCES_PARSERS_NAME, MSG_PREFERENCES_PARSERS_TABLECLASSNAME, MSG_PREFERENCES_PARSERS_TABLENAME, MSG_PREFERENCES_PARSERS_TITLE, MSG_PREFERENCES_POPUP_ACTION, MSG_PREFERENCES_POPUP_ADD_AFTER, MSG_PREFERENCES_POPUP_ADD_AS_CHILD, MSG_PREFERENCES_POPUP_DESCRIPTION, MSG_PREFERENCES_POPUP_MENU_ITEM, MSG_PREFERENCES_POPUP_SEPARATOR, MSG_PREFERENCES_POPUP_SUBMENU, MSG_PREFERENCES_POPUP_TEXT, MSG_PREFERENCES_POPUP_TITLE, MSG_PREFERENCES_PRINT_BOTTOM_MARGIN, MSG_PREFERENCES_PRINT_DESCRIPTION, MSG_PREFERENCES_PRINT_FONT_DESCRIPTION, MSG_PREFERENCES_PRINT_FONT_SCREEN, MSG_PREFERENCES_PRINT_FONT_TITLE, MSG_PREFERENCES_PRINT_LEFT_MARGIN, MSG_PREFERENCES_PRINT_LINE_NUMBERS, MSG_PREFERENCES_PRINT_RIGHT_MARGIN, MSG_PREFERENCES_PRINT_TITLE, MSG_PREFERENCES_PRINT_TOKENIZED, MSG_PREFERENCES_PRINT_TOP_MARGIN, MSG_PREFERENCES_RESET, MSG_PREFERENCES_ROOT_DESCRIPTION, MSG_PREFERENCES_ROOT_EDITOR_PROFILE, MSG_PREFERENCES_ROOT_NO_PARSER, MSG_PREFERENCES_ROOT_TITLE, MSG_PREFERENCES_SAVE_DESCRIPTION, MSG_PREFERENCES_SAVE_TEXT_LIMIT, MSG_PREFERENCES_SAVE_TITLE, MSG_PREFERENCES_SAVE_TRIM, MSG_PREFERENCES_SEQUENCE_NUMBERS_COLUMN, MSG_PREFERENCES_SEQUENCE_NUMBERS_DESCRIPTION, MSG_PREFERENCES_SEQUENCE_NUMBERS_TITLE, MSG_PREFERENCES_SEQUENCE_NUMBERS_WIDTH, MSG_PREFERENCES_SEQUENCE_TEXT_COLUMN, MSG_PREFERENCES_SEQUENCE_TEXT_WIDTH, MSG_PREFERENCES_SET, MSG_PREFERENCES_TABS_DESCRIPTION, MSG_PREFERENCES_TABS_EXPAND_TABS, MSG_PREFERENCES_TABS_TAB_INCREMENT, MSG_PREFERENCES_TABS_TAB_STOPS, MSG_PREFERENCES_TABS_TITLE, MSG_PREFERENCES_TITLE, MSG_PREFERENCES_USER_ACTIONS_CLASS_NAME, MSG_PREFERENCES_USER_ACTIONS_DESCRIPTION, MSG_PREFERENCES_USER_ACTIONS_NAME, MSG_PREFERENCES_USER_ACTIONS_TABLE_CLASS_NAME, MSG_PREFERENCES_USER_ACTIONS_TABLE_NAME, MSG_PREFERENCES_USER_ACTIONS_TITLE, MSG_PREFERENCES_USER_COMMANDS_CLASS_NAME, MSG_PREFERENCES_USER_COMMANDS_DESCRIPTION, MSG_PREFERENCES_USER_COMMANDS_NAME, MSG_PREFERENCES_USER_COMMANDS_TABLE_CLASS_NAME, MSG_PREFERENCES_USER_COMMANDS_TABLE_NAME, MSG_PREFERENCES_USER_COMMANDS_TITLE, MSG_PREFERENCES_USER_KEY_ACTIONS_ACTION, MSG_PREFERENCES_USER_KEY_ACTIONS_DESCRIPTION, MSG_PREFERENCES_USER_KEY_ACTIONS_KEY, MSG_PREFERENCES_USER_KEY_ACTIONS_TABLE_ACTION, MSG_PREFERENCES_USER_KEY_ACTIONS_TABLE_KEY, MSG_PREFERENCES_USER_KEY_ACTIONS_TITLE, MSG_PREFERENCES_USER_MOUSE_ACTIONS_ACTION, MSG_PREFERENCES_USER_MOUSE_ACTIONS_DESCRIPTION, MSG_PREFERENCES_USER_MOUSE_ACTIONS_MOUSE_EVENT, MSG_PREFERENCES_USER_MOUSE_ACTIONS_TABLE_ACTION, MSG_PREFERENCES_USER_MOUSE_ACTIONS_TABLE_MOUSE_EVENT, MSG_PREFERENCES_USER_MOUSE_ACTIONS_TITLE, MSG_PREFERENCES_USER_PROFILE_CLASS_NAME, MSG_PREFERENCES_USER_PROFILE_DESCRIPTION, MSG_PREFERENCES_USER_PROFILE_TITLE, MSG_PREFERENCES_VIEW_PARSER_DESCRIPTION, MSG_PREFERENCES_VIEW_PARSER_PARSER, MSG_PREFERENCES_VIEW_PARSER_TITLE, MSG_PREFERENCES_VIEW_ROOT_DESCRIPTION, MSG_PREFERENCES_VIEW_ROOT_NAME, MSG_PREFERENCES_VIEW_SOURCE_ENCODING_DESCRIPTION, MSG_PREFERENCES_VIEW_SOURCE_ENCODING_SOURCE_ENCODING, MSG_PREFERENCES_VIEW_SOURCE_ENCODING_TITLE, MSG_PRINTCOMMAND_FONTMISSING, MSG_REDO_1CHANGEUNDONE, MSG_REDO_ALLCHANGESREDONE, MSG_REDO_NCHANGESUNDONE, MSG_REDO_NOREDOABLECHANGES, MSG_RESEQUENCECOMMAND_OVERFLOW, MSG_SEQUENCENUMBERS_OUTOFORDER, MSG_SEQUENCENUMBERS_OVERFLOW, MSG_SEQUENCENUMBERS_RESEQUENCED, MSG_SEQUENCENUMBERS_SHOWELEMENT, MSG_SEQUENCENUMBERS_TOOBIG, MSG_STATUS_1CHANGE, MSG_STATUS_BROWSE, MSG_STATUS_COLUMN, MSG_STATUS_COMMAND, MSG_STATUS_INSERT, MSG_STATUS_NCHANGES, MSG_STATUS_REPLACE, MSG_STATUS_ROW, MSG_TEXTLIMIT_OVERFLOW, MSG_UNDO_1CHANGEUNDONE, MSG_UNDO_DOCUMENTATORIGINALSTATE, MSG_UNDO_NCHANGESUNDONE, MSG_UNDO_NOMORECHANGES, MSG_UNDO_NORECORDEDCHANGES, MSG_UNTITLED_DOCUMENT, MSG_USERPROFILE_INVALID, MSG_VI_EDITUNSAVEDCHANGES, MSG_VI_QUITUNSAVEDCHANGES, PARAMETER_ACTION_ARGUMENT, PARAMETER_ACTION_CLASS, PARAMETER_ACTION_KEY, PARAMETER_ACTION_KEY_TEXT, PARAMETER_ACTION_REPEAT, PARAMETER_ACTIONS, PARAMETER_AUTO_CHECK, PARAMETER_BASE_PROFILE, PARAMETER_BEEP, PARAMETER_BLOCK, PARAMETER_CHANGES, PARAMETER_CLASS, PARAMETER_CLASSES, PARAMETER_COMMAND_CLASS, PARAMETER_COMMAND_LINE, PARAMETER_COMMANDS, PARAMETER_COMPARE, PARAMETER_CURRENT, PARAMETER_CURRENT_KEY, PARAMETER_CURSOR_BLINK, PARAMETER_CURSOR_ROW, PARAMETER_DEFAULT, PARAMETER_DEFAULT_PROFILE, PARAMETER_DIRTY, PARAMETER_DISPLAY_POSITION, PARAMETER_DOCUMENT_ID, PARAMETER_ELEMENT, PARAMETER_ELEMENT_CLASSES, PARAMETER_ELEMENTS, PARAMETER_EMPHASIS_LENGTH, PARAMETER_EXCLUDED_CLASSES, PARAMETER_EXPAND_HIDE, PARAMETER_EXPAND_HIDE_AREA_WIDTH, PARAMETER_EXPAND_TABS, PARAMETER_EXPANDED, PARAMETER_FIELDS, PARAMETER_FIND_TEXT, PARAMETER_FONT, PARAMETER_FORCE_ALL_VISIBLE, PARAMETER_FORCE_VISIBLE, PARAMETER_FORMAT_LINE, PARAMETER_FORMAT_LINE_TEXT, PARAMETER_HEADER_MARK, PARAMETER_HELP, PARAMETER_HEX, PARAMETER_HIDE_SEQUENCE_NUMBERS, PARAMETER_IN_PREFIX, PARAMETER_INCLUDED_CLASSES, PARAMETER_INSERT_MODE, PARAMETER_INSTALL, PARAMETER_INSTALL_PROFILE, PARAMETER_KEY_ACTION, PARAMETER_KEYS, PARAMETER_LENGTH, PARAMETER_LINE, PARAMETER_LINES, PARAMETER_MAINTAIN_SEQUENCE_NUMBERS, PARAMETER_MARK, PARAMETER_MARK_EXCLUDED, PARAMETER_MARK_EXCLUDED_HEADER, PARAMETER_MARK_HIGHLIGHT, PARAMETER_MARK_ID, PARAMETER_MARK_INCLUDED, PARAMETER_MARK_PROTECT, PARAMETER_MARK_STYLE, PARAMETER_MESSAGE_LINE, PARAMETER_MESSAGE_TEXT, PARAMETER_MOUSE_ACTION, PARAMETER_MOUSE_EVENTS, PARAMETER_NAME, PARAMETER_PALETTE, PARAMETER_PARSER, PARAMETER_PIXEL_POSITION, PARAMETER_POPUP, PARAMETER_POSITION, PARAMETER_PREFIX_AREA, PARAMETER_PREFIX_AREA_TEXT, PARAMETER_PREFIX_AREA_WIDTH, PARAMETER_PREFIX_POSITION, PARAMETER_PREFIX_PROTECT, PARAMETER_PREFIX_TEXT, PARAMETER_PRINT, PARAMETER_READONLY, PARAMETER_RECORDING, PARAMETER_REPEAT, PARAMETER_ROW_HEIGHT, PARAMETER_ROWS, PARAMETER_SAVE, PARAMETER_SCROLL, PARAMETER_SEQUENCE_DEFAULT_TEXT, PARAMETER_SEQUENCE_NUMBER, PARAMETER_SEQUENCE_NUMBERS, PARAMETER_SEQUENCE_NUMBERS_FORMAT, PARAMETER_SEQUENCE_TEXT, PARAMETER_SHIFT_IN_CHARACTER, PARAMETER_SHIFT_OUT_CHARACTER, PARAMETER_SHOW, PARAMETER_SHOW_SOSI, PARAMETER_SOURCE_ENCODING, PARAMETER_STATUS, PARAMETER_STATUS_LINE, PARAMETER_STYLE, PARAMETER_STYLE_ATTRIBUTES, PARAMETER_SYSTEM_PROPERTY, PARAMETER_TABS, PARAMETER_TEXT, PARAMETER_TEXT_AREA_WIDTH, PARAMETER_TEXT_WIDTH, PARAMETER_TOP_EXPANDED, PARAMETER_UPDATE_PROFILE, PARAMETER_USE_SOURCE_COLUMNS, PARAMETER_VERSION, PARAMETER_VISIBLE, PARSE_PENDING_CHANGE_MASK, PARSE_PENDING_NEXT_DELETED_MASK, PARSE_PENDING_NEXT_SHOW_DELETED_MASK, PARSE_PENDING_PREV_DELETED_MASK, PARSE_PENDING_PREV_SHOW_DELETED_MASK, PLATFORM_AWT, PLATFORM_SWT, PLATFORM_SWT_KEY, PRINT_PARAMETER_BOTTOM_MARGIN, PRINT_PARAMETER_FONT, PRINT_PARAMETER_LEFT_MARGIN, PRINT_PARAMETER_LINE_NUMBERS, PRINT_PARAMETER_RIGHT_MARGIN, PRINT_PARAMETER_TOKENIZED, PRINT_PARAMETER_TOP_MARGIN, SAVE_PARAMETER_TEXT_LIMIT, SAVE_PARAMETER_TRIM, STATUS_FILE_ERRORREADING, 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, UPDATE_PROFILE_PARAMETER_BASE_PROFILE, UPDATE_PROFILE_PARAMETER_EXTENSIONS, UPDATE_PROFILE_PARAMETER_NO_PARSER, UPDATE_PROFILE_PARAMETER_PALETTE, UPDATE_PROFILE_PARAMETER_PALETTE_ATTRIBUTES, UPDATE_PROFILE_PARAMETER_PALETTES, UPDATE_PROFILE_PARAMETER_PARSER, UPDATE_PROFILE_PARAMETER_PARSER_ASSOCIATION, UPDATE_PROFILE_PARAMETER_PARSER_CLASS, UPDATE_PROFILE_PARAMETER_PARSERS, UPDATE_PROFILE_PARAMETER_USER_ACTIONS, UPDATE_PROFILE_PARAMETER_USER_COMMANDS, UPDATE_PROFILE_PARAMETER_USER_KEY_ACTIONS, UPDATE_PROFILE_PARAMETER_USER_MOUSE_ACTIONS, UPDATE_PROFILE_PARAMETER_USER_PROFILE
 
Constructor Summary
TestParser2(LpexView lpexView)
          Constructor for the parser.
 
Method Summary
 void parseAll()
          Parse the entire document.
 void parseElement(int element)
          Parse a change in the document.
 void parseOneElement(int element)
          Parse one element in the document.
 
Methods inherited from class com.ibm.lpex.core.LpexCommonParser
addMessage, blockMarkWord, cursorIndent, getAutoIndent, getHelpPage, getLanguage, getLanguage, getPopupParserItems, getPopupViewItems, getProfile, getProperty, getToken, indentText, indentText, isTokenDelimiter, lpexView, matchToken, newLine, openLine, parse, proto, removeMessages, resetParser, setAutoIndent, setErrorMessages, setProperty, setStyle, setStyleAttributes, splitLine, styleString, terminateParser, textIndent, tokenBegin, tokenEnd, totalParse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TestParser2

public TestParser2(LpexView lpexView)
Constructor for the parser. In adition to calling superclass LpexCommonParser's constructor, we must also initialize what's needed for parsing and tokenizing the document: we define two style display attributes 't' and 'c', for text and comments, enable the element classes, and query their allocated bit-masks.
 public TestParser2(LpexView lpexView)
 {
    super(lpexView);

    String toBackground = LpexPaletteAttributes.background(view);
    // text style = blue/white
    String attributes = LpexPaletteAttributes.convert("0 0 255 255 255 255",
                                                      BACKGROUND_COLOR,
                                                      toBackground);
    view.doDefaultCommand("set styleAttributes.t " + attributes);
    // comment style = green/white
    attributes = LpexPaletteAttributes.convert("0 128 128 255 255 255",
                                               BACKGROUND_COLOR,
                                               toBackground);
    view.doDefaultCommand("set styleAttributes.c " + attributes);

    // enable the "text" and "comment" element classes and
    // get the bits allocated for them
    classText    = view.registerClass(CLASS_TEXT);
    classComment = view.registerClass(CLASS_COMMENT);

    // keep a bit-mask of all our element classes
    classAll = classText | classComment;
 }
Remember that LpexCommonParser's variable view, pointing to the LpexView associated with this parser object, and used here throughout to access the Java LPEX API, is set by LpexCommonParser in its constructor (the first thing called in our own constructor above).
Parameters:
lpexView - the LpexView object associated with this parser object.
See Also:
LpexCommonParser.view, LpexView.doDefaultCommand(java.lang.String), LpexView.classMask(java.lang.String)
Method Detail

parseAll

public void parseAll()
Parse the entire document.
 public void parseAll()
 {
    for (int element = 1; element <= view.elements(); element++)
       parseOneElement(element);
 }
During the development of a parser, one can easily verify the operation of the parser by querying, from the command line of Test, the style and elementClasses being set in the document for each element.
Overrides:
parseAll in class LpexCommonParser

parseElement

public void parseElement(int element)
Parse a change in the document.
 public void parseElement(int element)
 {
    parseOneElement(element);
 }
Overrides:
parseElement in class LpexCommonParser
Parameters:
element - the element whose committed change triggered the parse, or the element that precedes / follows a deleted block.

parseOneElement

public void parseOneElement(int element)
Parse one element in the document. Our own method (which could very well be declared private), called by parseAll() and parseElement().

We query the text of the element, analyze it, and set display styles for the text and comment portions. We also set the element classes of the element according to its contents. LpexCommonParser's utility method styleString is used to create the style strings for the element.

 public void parseOneElement(int element)
 {
    // query element's text and current classes (as possibly set by others)
    String text    = view.elementText(element);
    long   classes = view.elementClasses(element) & ~classAll;

    // establish the new styles, and which of our element classes to set
    String styles = "";
    int i = text.indexOf("//");
    if (i < 0) {                                     // 1.- no comment found
       if (text.length() > 0) {                      //   any regular text?
          styles = styleString('t', text.length());
          classes |= classText;
          }
       }
    else {                                           // 2.- there is a comment
       styles = styleString('t', i) + styleString('c', text.length() - i);
       classes |= classComment;
       if (i > 0)                                    //   any regular text?
          classes |= classText;
       }

    // set the element's display styles, and our element classes
    view.setElementStyle(element, styles);
    view.setElementClasses(element, classes);
 }
Parameters:
element - one document element to parse
See Also:
LpexCommonParser.styleString(char, int), LpexView.elementText(int), LpexView.elementClasses(int), LpexView.setElementStyle(int, java.lang.String), LpexView.setElementClasses(int, long)