|
SWT LPEX v3.0.0 | |||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.ibm.lpex.core.LpexCommonParser
com.ibm.lpex.samples.TestParser1
Sample document parser: STEP 1 - minimum code.
This is a sample skeleton for a document parser extending LpexCommonParser. It shows the minimum code needed to implement such a parser. TestParser2 will build on this foundation to carry out a simple parsing of comments in text files.
When a new file is opened as a document, the editor looks for the parser associated with that file's name extension. Parsers may be set up via the updateProfile.parserClass, updateProfile.parserAssociation, and updateProfile.parser editor parameters.
For example, opening sample.cpp may point the editor to the parser class "CppParserWIN.class". Once found, the editor will load this class - CppParserWIN's constructor will instantiate one object for the newly-created document view -, and then call one of its public methods to carry out a total parse on the document sample.cpp. Afterwards, each time the user modifies (edits) sample.cpp, a method in CppParserWIN will be called to do an incremental parse on the changes in the document.
Whatever the parser chooses to do is at its discretion. Usually, a parser will scan the file to understand its structure, and colorize the various tokens as an aid to the programmer editing that type of files: say, keywords in blue, numbers in red, and comments in green. While the user is editing the file, the parser will 'play catch-up' and maintain its information of the file structure (and the displayed token colours) up-to-date.
At a minimum, a parser written by extending class LpexCommonParser should have a constructor, and implement two methods (defined as abstract in LpexCommonParser): parseAll() and parseElement(). LpexCommonParser handles the rest.
public class TestParser1 extends LpexCommonParser { public TestParser1(LpexView lpexView) { super(lpexView); } public void parseAll() {} public void parseElement(int element) {} } |
See the rest of the documentation below. It shows and explains the code of this example. TestParser2 will do some real parsing, building on this framework.
Document parsers developed for LPEX may also employ tools that generate Java code from a language grammar definition. One interface for such tools, provided by LPEX, is LpexCharStream.
Field Summary |
---|
Constructor Summary | |
---|---|
TestParser1(LpexView lpexView)
The parser's constructor. |
Method Summary | |
---|---|
void | parseAll()
Total parse. |
void | parseElement(int element)
Incremental parse. |
Methods inherited from class com.ibm.lpex.core.LpexCommonParser |
---|
addMessage, addMessage, addMessage, blockMarkWord, cursorIndent, expandProtoKeyword, getCommentStyleCharacters, getInstallStyleAttributes, getLanguage, getLanguage, getLshToken, getPopupItems, getPopupParserItems, getPopupViewItems, getProfile, getProperty, getStyleName, getStyles, getTextIndent, getToken, getTokenLocation, indentText, indentText, indentText, isDebuggable, isTokenDelimiter, lineComment, lpexView, matchToken, newLine, openLine, parse, removeMessages, removeMessages, resetParser, setProperty, setStyle, splitLine, 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 |
public TestParser1(LpexView lpexView)
public TestParser1(LpexView lpexView) { super(lpexView); } |
One instance of the parser controls one LpexView of a document. When several edit views are created for the same document, several parser objects will be instantiated, one for each view, and each will be called to parse the document.
Method Detail |
public void parseAll()
Nothing is being done here right now:
public void parseAll() { } |
public void parseElement(int element)
Nothing is done here right now, therefore there is no visible effect on the editing:
public void parseElement(int element) { } |
|
SWT LPEX v3.0.0 | |||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |