|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.io.Reader gnu.text.Lexer gnu.kawa.lispexpr.LispReader
public class LispReader
A Lexer for reading S-expressions in generic Lisp-like syntax. This class may have outlived its usefulness: It's mostly just a wrapper around a LineBufferedReader plus a helper token-buffer. The functionality should be moved to ReadTable, though it is unclear what to do about the tokenBuffer.
Field Summary | |
---|---|
protected boolean |
finalColonIsKeyword
True if "IDENTIFIER:" should be treated as a keyword. |
protected boolean |
initialColonIsKeyword
True if ":IDENTIFIER" should be treated as a keyword. |
static int |
SCM_NUMBERS
|
protected boolean |
seenEscapes
If true, then tokenbuffer contains escaped characters. |
static char |
TOKEN_ESCAPE_CHAR
|
Fields inherited from class gnu.text.Lexer |
---|
interactive, nesting, port, tokenBuffer, tokenBufferLength |
Fields inherited from class java.io.Reader |
---|
lock |
Constructor Summary | |
---|---|
LispReader(LineBufferedReader port)
|
|
LispReader(LineBufferedReader port,
SourceMessages messages)
|
Method Summary | |
---|---|
java.lang.Object |
handleToken(int startPos,
int endPos,
ReadTable rtable)
Classify and return a token in tokenBuffer from startPos to endPos. |
static java.lang.Object |
lookupUnit(java.lang.String name)
Resolve a unit name, if possible. |
protected java.lang.Object |
makeNil()
|
protected java.lang.Object |
makePair(java.lang.Object car,
int line,
int column)
|
java.lang.Object |
makePair(java.lang.Object car,
java.lang.Object cdr)
|
static java.lang.Object |
parseNumber(char[] buffer,
int start,
int count,
char exactness,
int radix,
int flags)
Parse a number. |
static java.lang.Object |
readCharacter(LispReader reader)
|
java.lang.Object |
readCommand()
Read a "command" - a top-level expression or declaration. |
int |
readEscape()
Reads a C-style String escape sequence. |
int |
readEscape(int c)
|
void |
readNestedComment(char c1,
char c2)
Read a #|...|#-style comment (which may contain other nested comments). |
static java.lang.Object |
readNumberWithRadix(int previous,
LispReader reader,
int radix)
Read a number from a LispReader |
java.lang.Object |
readObject()
|
java.lang.Object |
readObject(int c)
|
static SimpleVector |
readSimpleVector(LispReader reader,
char kind)
|
static java.lang.Object |
readSpecial(LispReader reader)
|
java.lang.Object |
readValues(int ch,
ReadTable rtable)
|
java.lang.Object |
readValues(int ch,
ReadTableEntry entry,
ReadTable rtable)
May return zero or multiple values. |
protected java.lang.Object |
returnSymbol(int startPos,
int endPos,
ReadTable rtable)
|
protected void |
setCdr(java.lang.Object pair,
java.lang.Object cdr)
|
protected boolean |
validPostfixLookupStart(ReadTable rtable)
|
Methods inherited from class gnu.text.Lexer |
---|
checkErrors, checkNext, clearErrors, close, eofError, eofError, error, error, error, fatal, getColumnNumber, getErrors, getLineNumber, getMessages, getName, getPort, isInteractive, mark, peek, popNesting, pushNesting, read, read, readDigitsInBuffer, readOptionalExponent, reset, seenErrors, setInteractive, setMessages, skip_quick, skip, tokenBufferAppend, unread_quick, unread, unread |
Methods inherited from class java.io.Reader |
---|
mark, markSupported, read, read, ready, skip |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final char TOKEN_ESCAPE_CHAR
protected boolean seenEscapes
protected boolean initialColonIsKeyword
protected boolean finalColonIsKeyword
public static final int SCM_NUMBERS
Constructor Detail |
---|
public LispReader(LineBufferedReader port)
public LispReader(LineBufferedReader port, SourceMessages messages)
Method Detail |
---|
public static java.lang.Object lookupUnit(java.lang.String name)
public final void readNestedComment(char c1, char c2) throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
public java.lang.Object readValues(int ch, ReadTable rtable) throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
public java.lang.Object readValues(int ch, ReadTableEntry entry, ReadTable rtable) throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
public java.lang.Object readObject() throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
protected boolean validPostfixLookupStart(ReadTable rtable) throws java.io.IOException
java.io.IOException
public static java.lang.Object parseNumber(char[] buffer, int start, int count, char exactness, int radix, int flags)
buffer
- contains the characters of the numberstart
- startinging index of the number in the buffercount
- number of characters in buffer to useexactness
- either 'i' or 'I' force an inexact result,
either 'e' or 'E' force an exact result,
'\0' yields an inact or inexact depending on the form of the literal,
while ' ' is like '\0' but does not allow more exactness specifiers.radix
- the number base to use or 0 if unspecified
protected java.lang.Object returnSymbol(int startPos, int endPos, ReadTable rtable)
public java.lang.Object handleToken(int startPos, int endPos, ReadTable rtable)
public int readEscape() throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
public final int readEscape(int c) throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
public final java.lang.Object readObject(int c) throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
public java.lang.Object readCommand() throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
protected java.lang.Object makeNil()
protected java.lang.Object makePair(java.lang.Object car, int line, int column)
public java.lang.Object makePair(java.lang.Object car, java.lang.Object cdr)
protected void setCdr(java.lang.Object pair, java.lang.Object cdr)
public static java.lang.Object readNumberWithRadix(int previous, LispReader reader, int radix) throws java.io.IOException, SyntaxException
previous
- number of characters already pushed on tokenBufferreader
- LispReader to read fromradix
- base to use or -1 if unspecified
java.io.IOException
SyntaxException
public static java.lang.Object readCharacter(LispReader reader) throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
public static java.lang.Object readSpecial(LispReader reader) throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
public static SimpleVector readSimpleVector(LispReader reader, char kind) throws java.io.IOException, SyntaxException
java.io.IOException
SyntaxException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |