|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.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 | |
---|---|
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 | |
---|---|
protected java.lang.Object |
makeNil()
|
protected Pair |
makePair(java.lang.Object car,
int line,
int column)
|
protected Pair |
makePair(java.lang.Object car,
java.lang.Object cdr,
int line,
int column)
|
static java.lang.Object |
parseNumber(char[] buffer,
int start,
int count,
char exactness,
int radix,
int flags)
Parse a number. |
static java.lang.Object |
parseNumber(java.lang.CharSequence str,
int radix)
|
protected java.lang.Object |
readAndHandleToken(int ch,
int startPos,
ReadTable rtable)
|
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)
|
int |
readHexEscape()
|
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 void |
setCdr(java.lang.Object pair,
java.lang.Object cdr)
|
protected boolean |
validPostfixLookupStart(int ch,
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, readDelimited, readDigitsInBuffer, readOptionalExponent, readUnicodeChar, reset, seenErrors, setInteractive, setMessages, skip_quick, skip, tokenBufferAppend, tokenBufferString, 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
public static final int SCM_NUMBERS
Constructor Detail |
---|
public LispReader(LineBufferedReader port)
public LispReader(LineBufferedReader port, SourceMessages messages)
Method Detail |
---|
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
protected java.lang.Object readAndHandleToken(int ch, int startPos, 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(int ch, ReadTable rtable) throws java.io.IOException
java.io.IOException
public static java.lang.Object parseNumber(java.lang.CharSequence str, int radix)
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
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 int readHexEscape() 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 Pair makePair(java.lang.Object car, int line, int column)
protected Pair makePair(java.lang.Object car, java.lang.Object cdr, int line, int column)
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 |