Package org.eclipse.jface.text.rules
Class RuleBasedScanner
- java.lang.Object
-
- org.eclipse.jface.text.rules.RuleBasedScanner
-
- All Implemented Interfaces:
ICharacterScanner
,ITokenScanner
- Direct Known Subclasses:
BufferedRuleBasedScanner
public class RuleBasedScanner extends Object implements ICharacterScanner, ITokenScanner
A generic scanner which can be "programmed" with a sequence of rules. The scanner is used to get the next token by evaluating its rule in sequence until one is successful. If a rule returns a token which is undefined, the scanner will proceed to the next rule. Otherwise the token provided by the rule will be returned by the scanner. If no rule returned a defined token, this scanner returns a token which returnstrue
when callingisOther
, unless the end of the file is reached. In this case the token returnstrue
when callingisEOF
.- See Also:
IRule
-
-
Field Summary
Fields Modifier and Type Field Description protected int
fColumn
The cached column of the current scanner positionprotected IToken
fDefaultReturnToken
The token to be returned by default if no rule firesprotected char[][]
fDelimiters
The cached legal line delimiters of the documentprotected IDocument
fDocument
The document to be scannedprotected int
fOffset
The offset of the next character to be readprotected int
fRangeEnd
The end offset of the range to be scannedprotected IRule[]
fRules
The list of rules of this scannerprotected int
fTokenOffset
The offset of the last read tokenprotected static int
UNDEFINED
Internal setting for the un-initialized column cache.-
Fields inherited from interface org.eclipse.jface.text.rules.ICharacterScanner
EOF
-
-
Constructor Summary
Constructors Constructor Description RuleBasedScanner()
Creates a new rule based scanner which does not have any rule.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getColumn()
Returns the column of the character scanner.char[][]
getLegalLineDelimiters()
Provides rules access to the legal line delimiters.int
getTokenLength()
Returns the length of the last token read by this scanner.int
getTokenOffset()
Returns the offset of the last token read by this scanner.IToken
nextToken()
Returns the next token in the document.int
read()
Returns the next character or EOF if end of file has been reachedvoid
setDefaultReturnToken(IToken defaultReturnToken)
Configures the scanner's default return token.void
setRange(IDocument document, int offset, int length)
Configures the scanner by providing access to the document range that should be scanned.void
setRules(IRule[] rules)
Configures the scanner with the given sequence of rules.void
unread()
Rewinds the scanner before the last read character.
-
-
-
Field Detail
-
fRules
protected IRule[] fRules
The list of rules of this scanner
-
fDefaultReturnToken
protected IToken fDefaultReturnToken
The token to be returned by default if no rule fires
-
fDocument
protected IDocument fDocument
The document to be scanned
-
fDelimiters
protected char[][] fDelimiters
The cached legal line delimiters of the document
-
fOffset
protected int fOffset
The offset of the next character to be read
-
fRangeEnd
protected int fRangeEnd
The end offset of the range to be scanned
-
fTokenOffset
protected int fTokenOffset
The offset of the last read token
-
fColumn
protected int fColumn
The cached column of the current scanner position
-
UNDEFINED
protected static final int UNDEFINED
Internal setting for the un-initialized column cache.- See Also:
- Constant Field Values
-
-
Method Detail
-
setRules
public void setRules(IRule[] rules)
Configures the scanner with the given sequence of rules.- Parameters:
rules
- the sequence of rules controlling this scanner
-
setDefaultReturnToken
public void setDefaultReturnToken(IToken defaultReturnToken)
Configures the scanner's default return token. This is the token which is returned when none of the rules fired and EOF has not been reached.- Parameters:
defaultReturnToken
- the default return token- Since:
- 2.0
-
setRange
public void setRange(IDocument document, int offset, int length)
Description copied from interface:ITokenScanner
Configures the scanner by providing access to the document range that should be scanned.- Specified by:
setRange
in interfaceITokenScanner
- Parameters:
document
- the document to scanoffset
- the offset of the document range to scanlength
- the length of the document range to scan
-
getTokenOffset
public int getTokenOffset()
Description copied from interface:ITokenScanner
Returns the offset of the last token read by this scanner.- Specified by:
getTokenOffset
in interfaceITokenScanner
- Returns:
- the offset of the last token read by this scanner
-
getTokenLength
public int getTokenLength()
Description copied from interface:ITokenScanner
Returns the length of the last token read by this scanner.- Specified by:
getTokenLength
in interfaceITokenScanner
- Returns:
- the length of the last token read by this scanner
-
getColumn
public int getColumn()
Description copied from interface:ICharacterScanner
Returns the column of the character scanner.- Specified by:
getColumn
in interfaceICharacterScanner
- Returns:
- the column of the character scanner
-
getLegalLineDelimiters
public char[][] getLegalLineDelimiters()
Description copied from interface:ICharacterScanner
Provides rules access to the legal line delimiters. The returned object may not be modified by clients.- Specified by:
getLegalLineDelimiters
in interfaceICharacterScanner
- Returns:
- the legal line delimiters
-
nextToken
public IToken nextToken()
Description copied from interface:ITokenScanner
Returns the next token in the document.- Specified by:
nextToken
in interfaceITokenScanner
- Returns:
- the next token in the document
-
read
public int read()
Description copied from interface:ICharacterScanner
Returns the next character or EOF if end of file has been reached- Specified by:
read
in interfaceICharacterScanner
- Returns:
- the next character or EOF
-
unread
public void unread()
Description copied from interface:ICharacterScanner
Rewinds the scanner before the last read character.- Specified by:
unread
in interfaceICharacterScanner
-
-