|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jruby.lexer.yacc.LexerSource
public abstract class LexerSource
This class is what feeds the lexer. It is primarily a wrapper around a Reader that can unread() data back onto the source. Originally, I thought about using the PushBackReader to handle read/unread, but I realized that some extremely pathological case could overflow the pushback buffer. Better safe than sorry. I could have combined this implementation with a PushbackBuffer, but the added complexity did not seem worth it.
Field Summary | |
---|---|
protected int |
line
|
protected int |
offset
|
Constructor Summary | |
---|---|
protected |
LexerSource(java.lang.String sourceName,
java.util.List<java.lang.String> list,
int line,
boolean extraPositionInformation)
Create our food-source for the lexer |
Method Summary | |
---|---|
protected void |
captureFeature(int c)
|
java.lang.String |
getFilename()
What file are we lexing? |
int |
getLine()
What line are we at? |
int |
getOffset()
The location of the last byte we read from the source. |
ISourcePosition |
getPosition()
Where is the reader within the source {filename,row} |
ISourcePosition |
getPosition(ISourcePosition startPosition,
boolean inclusive)
Where is the reader within the source {filename,row} |
ISourcePositionFactory |
getPositionFactory()
|
static LexerSource |
getSource(java.lang.String name,
java.io.InputStream content,
java.util.List<java.lang.String> list,
ParserConfiguration configuration)
Create a source. |
abstract boolean |
lastWasBeginOfLine()
|
abstract boolean |
matchMarker(ByteList marker,
boolean indent,
boolean withNewline)
Match marker against input consumering lexer source as it goes...Unless it does not match then it reverts lexer source back to point when this method was invoked. |
abstract boolean |
peek(int c)
|
abstract int |
read()
|
abstract ByteList |
readLineBytes()
|
abstract ByteList |
readUntil(char c)
|
abstract int |
skipUntil(int c)
|
abstract void |
unread(int c)
|
abstract void |
unreadMany(java.lang.CharSequence line)
|
abstract boolean |
wasBeginOfLine()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected int line
protected int offset
Constructor Detail |
---|
protected LexerSource(java.lang.String sourceName, java.util.List<java.lang.String> list, int line, boolean extraPositionInformation)
sourceName
- is the file we are readingreader
- is what represents the contents of file sourceNameline
- starting line number for source (used by eval)extraPositionInformation
- will gives us extra information that an IDE may wantMethod Detail |
---|
public java.lang.String getFilename()
public int getLine()
public int getOffset()
public ISourcePosition getPosition(ISourcePosition startPosition, boolean inclusive)
public ISourcePosition getPosition()
public ISourcePositionFactory getPositionFactory()
public static LexerSource getSource(java.lang.String name, java.io.InputStream content, java.util.List<java.lang.String> list, ParserConfiguration configuration)
name
- the name of the source (e.g a filename: foo.rb)content
- the data of the source
protected void captureFeature(int c)
public abstract boolean matchMarker(ByteList marker, boolean indent, boolean withNewline) throws java.io.IOException
marker
- to match againstindent
- eat any leading whitespacewithNewline
- includes a check that marker is followed by newline or EOF
java.io.IOException
- if an error occurred reading from underlying IO sourcepublic abstract int read() throws java.io.IOException
java.io.IOException
public abstract ByteList readUntil(char c) throws java.io.IOException
java.io.IOException
public abstract ByteList readLineBytes() throws java.io.IOException
java.io.IOException
public abstract int skipUntil(int c) throws java.io.IOException
java.io.IOException
public abstract void unread(int c)
public abstract void unreadMany(java.lang.CharSequence line)
public abstract boolean peek(int c) throws java.io.IOException
java.io.IOException
public abstract boolean lastWasBeginOfLine()
public abstract boolean wasBeginOfLine()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |