2019-10-07  Per Bothner  <per@bothner.com>

	* LispLanguage.java (getPrimaryPrompt): Simplify prompt.
	Don't include "hider button" in prompt for DomTerm, as it
	is now added automatically by DomTerm.

2019-08-06  John Smith <gitlab@mg.gitlab.com>

	* LispReader.java (parseNumber): Fix off-by-one bug testing radix.
	This fixes GitLab issue #56 "string->number not working with base 36".

2019-07-12  Per Bothner  <per@bothner.com>

	* LangObjType.java: New GVector type.
	* LispLanguage.java: Define "gvector".

2019-02-22  Per Bothner  <per@bothner.com>

	* LispLanguage.java: Fix NPE if mainClass is null.
	This fixes GitLab issue #52
	"load/eval `define-library` causes NullPointerException".

2018-10-28  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java: Don't hard-wire escape character.

2018-09-08  Per Bothner  <per@bothner.com>

	* LispLanguage.java (getPrimaryPrompt): Add DomTerm "hider" button.

2018-07-29  Jamison Hope  <jrh@theptrgroup.com>

	* LangPrimType.java (isTrueType): Fix copy-paste mistake.

2017-12-04  Per Bothner  <per@bothner.com>

	* LispPackage.java (getNamedType): Handle "array" and "arrayN".
	This fixes GitLab issue #31 "no such class: array".
	(decodeArrayType): New helper method.

2017-11-08  Helmut Eller  <eller.helmut@gmail.com>

	* LispPackage.java (KeywordNamespace): Set
	Keyword.keywordNamespace as the exported namespace, analogous to
	EmptyNamespace and KAWA package.
	(createSymbol): New helper.
	(makeUninternedSymbol): Deleted.

2017-11-07  Helmut Eller  <eller.helmut@gmail.com>

	* LispPackage.java (makeUninternedSymbol): New helper that ensures
	that we create SimpleSymbols resp. Keywords for the KAWA
	resp. KEYWORD package. (lookup): Fix a bug. The previous code
	would go into an endless recursion when it had to search inherited
	symbols. (keywordp, symbolPackage, intern, findPackage): New. Java
	part of the implementation for the corresponding CL functions.
	LispPackage seemed like the right place for this code.

2017-09-27  Per Bothner  <per@bothner.com>

	* LangObjType.java (getConstructor): Add parameter type for regex.
	This lets '(regex "foo")' work.

2017-09-24  Per Bothner  <per@bothner.com>

	* LangPrimType.java: Implement new interface HasOwningField.
	This lets use compile code referencing 'boolean' at runtime.

2017-08-23  Per Bothner  <per@bothner.com>

	* LispReader.java (isTerminatingChar): New protected method.
	(readToken): Use isTerminatingChar.

2017-07-20  Per Bothner  <per@bothner.com>

	* LangObjType.java (coercioMethod): Make more robust.

2017-06-13  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java (readContent): Use LispReader.eofError.
	This throws an exception, which is what the JLine code expects.
	Thus multi-line literals are handled.

2017-06-08  Per Bothner  <per@bothner.com>

	* LispReader.java (readObject): Always wrap top-level in begin.
	(makePair, setCar): New methods, to set end-position, too.
	* ReaderParens.java: Also record end-positions.

2017-05-23  Per Bothner  <per@bothner.com>

	* ReaderXmlElement.java (readElementConstructor): Better error recovery.
	Skip past malformed or unquoted atribute values.

2017-05-03  Per Bothner  <per@bothner.com>

	* LispLanguage.java (getTypeFor): Add missing semicolon.
	Was only a problem if JAVA7 wasn't selected.

2017-02-03  Per Bothner  <per@bothner.com>

	* LangObjType.java: (bitvectorType, c16vectorType): New static.
	Also, implement casts from Java array to uniform vector types,

2017-01-20  Per Bothner  <per@bothner.com>

	* LangPrimType.java (isTrueType): New special value.
	* LispReader.java (readSpecial): Handle #!if.

2017-01-06  Per Bothner  <per@bothner.com>

	* LispReader.java (symbolReadCase): New ThreadLocation.

2016-12-04  Per Bothner  <per@bothner.com>

	* LangObjType.java (istringType, istringType): New Types.
	* LispLanguage.java (getTypeFor): Map java.lang.String to
	LangObjType.jstringType rather than Type.toStringType.
	Also handle arrays.

2016-12-03  Per Bothner  <per@bothner.com>

	* LangObjType.java (isCompatibleWithValue): Use Type.isSame.
	For 'dynamic' only return 2 if if incoming type is non-primitive.
	* LangPrimType.java (isCompatibleWithValue): Change return value
	for converting anything to boolean.
	* SeqSizeType.java (Type.isCompatibleWithValue): Add Type.isSame test.

2016-09-08  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): Fix handling of unquoted literal #!eof.

2016-09-02  Per Bothner  <per@bothner.com>

	* LispReader.java (readGeneralArray): Allow specifying only
	the lower bounds without specify lengths - as Guile also allows.

2016-08-31  Per Bothner  <per@bothner.com>

	Handle Common Lisp reader syntax for bitvectors.
	* ReaderDispatchMisc.java (read): Handle "#*".
	* ReaderDispatch.java (create): Bind "#*".

2016-06-02  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): Skip ending newline.
	(getPrimaryPrompt, getSecondaryPrompt): New methods.

	* GenArrayType.java (emitCoerceFromObject): Remove method.

2016-05-27  Per Bothner  <per@bothner.com>

	* GenArrayType.java: New type for multi-dimensional arrays.
	* BracketApply.java: Can also construct a GenArrayType.

2016-05-01  Per Bothner  <per@bothner.com>

	* LangObjType.java (constVectorType): The ConstVector type was removed,
	so now read-only FVectors.

2016-02-24  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): Save entire command if in interactive
	mode, in case we get a completion request.
	* ReadTable.java: Treat COMPLETE_REQUEST as a letter.
	* ReaderParens.java (readList): If we're in tentative mode,
	on end-of-file append special value rather than throw fatal error.

2016-02-11  Per Bothner  <per@bothner.com>

	* LangObjType.java (isCompatibleWithValue): Check if types identical.

2016-02-02  Per Bothner  <per@bothner.com>

	Support more flexible nested comment syntax.
	* LispReader.java (readNestedComment): Add explicit character end pair
	parameters rather than requiring to be the start pair reversed.
	* ReaderNestedComment.java: New class - extends ReadTableEntry,
	* ReaderDispatch.java: Use ReaderNestedComment instance.
	* ReaderDispatchMisc.java: Remove nested comment handling from here.
	* ReaderExtendedLiteral.java: Update accordingly.

2016-01-31  Per Bothner  <per@bothner.com>

	* ReaderDispatchMisc.java (read): Fix handling of #F.
	For example #1F32@0:10... would read '@' as part of the token.

2016-01-26  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): In a REPL it works better if we parse
	forms until end-of-line.

	* LispReader.java (readValuesAndAppend): Fix off-by-one error
	in column number.

2016-01-16  Per Bothner  <per@bothner.com>

	Support for #A array reader syntax with Guile extensions.
	* LispReader.java (readGeneralArray): New method.
	(dimensionsFromNested, fromNested): New helper methods.
	(readSimpleVector [2 methods], convertListToArray):
	Remove methods specifically for uniform vectors.
	* ReaderDispatch.java: Add entry for "#A".
	* ReaderDispatchMisc.java: Handle #A.
	Change uniform verctors syntax (#U8, #S8, etc) to use readGeneralArray.

2016-01-11  Per Bothner  <per@bothner.com>

	* ReaderDispatch.java (read): Use new Lexer.readIntDigits.
	* ReaderDispatchMisc.java: Better error message for #MAXr.

2015-10-12  Per Bothner  <per@bothner.com>

	* LangPrimType.java (emitCoerceFromObject): Handle stringCursorType.

2015-08-16  Per Bothner  <per@bothner.com>

	* LangObjType.java (emitConvertFromPrimitive):  Fix how we
	convert unsigned int to IntNum.

2015-07-31  Per Bothner  <per@bothner.com>

	* LispReader.java  (parseNumber): Handle generalized FString.

2015-06-23  Per Bothner  <per@bothner.com>

	* LangObjType.java (dynamicType): New type.
	(DYNAMIC_TYPE_CODE): New type code.
	(isCompatibleWithValue, getConstructor): Support dynamicType.
	* LispLanguage.java (getTypeMap): Add 'dynamic'.

2015-06-11  Per Bothner  <per@bothner.com>

	* LangObjType.java (getInstanceFromClass): New static method.
	(elementGetterMethodName, elementSetterMethodName): New methods.
	* LispLanguage.java (getTypeFor): Use getInstanceFromClass.

	* LangObjType.java (sequenceType): New "sequence" type, implemented
	as java.util.List.

	* LispLanguage.java (getTYpeMap): Add binding for "sequence".

2015-06-08  Per Bothner  <per@bothner.com>

	* LangObjType.java (class SimpleVectorBuilder):	Modify constructor.
	(SimpleVectorBuilder.useBuilder): New method.
	(SimpleVectorBuilder.addProc): New field.
	(SimpleVectorBuilder.buildAddChild): Use addProc.
	(getBuildObject): Factor and update.
	(getConstructor): Remove obsolete U8VECTOR_TYPE_CODE case.

2015-06-07  Per Bothner  <per@bothner.com>

	* LangObjType.java (getElementType): New method.
	(class SimpleVectorBuilder): New class to optimize constructor
	calls to uniform vector such as U32Vector using 'add' method.
	(getBuildObject): New method.
	* LispReader.java (convertListToArray): New helper method to help
	convert and range-check uniform vector elements.
	(readSimpleVector): Use convertListToArray.

2015-06-04  Per Bothner  <per@bothner.com>

	* LangPrimType.java (coerceFromObject): Handle unsigned types.
	(compare): Simplify - use PrimType.compare.

2015-06-03  Per Bothner  <per@bothner.com>

	* LispLanguage.java (getTypeFor): Add reverse mappings
	for uniform vector classes, such as F64Vector.

2015-06-02  Per Bothner  <per@bothner.com>

	* LangObjType.java (emitConvertFromPrimitive): Handle unsigned types.

2015-05-29  Per Bothner  <per@bothner.com>

	* LangPrimType.java (isUnsigned): New field.  Set appropriately.
	(isUnsigned): New method.
	* LangObjType.java (emitConvertFromPrimitive): Update call to
	emitConvert.

2015-05-20  Per Bothner  <per@bothner.com>

	* LangPrimType.java (convertIntegerLiteral): New method.

	* LangPrimType.java (unsignedLongType, unsignedIntType)
	unsignedShortType, unsignedByteType): New LangPrimType constants.
	(boxedType, encodeType): Update accordingly.
	* LispLanguage.java (getTypeMap): Add bindings for ulong, uint,
	ushort, and ubyte.

(2015-05-09  Per Bothner  <per@bothner.com>

	* LispReader.java (SCM_LEXPONENT_IS_BIGDECIMAL): New flags value.
	(parseNumber): Only map 'l' exponent marker to BigDecimal if above
	flag is set.
	* ReadTable.java (extraFlags): New field.

2015-05-02  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber): If specified as exact, do exact
	calculation even if decimal point or exponent seen.
	Honor radix request even for complex numbers.

2015-04-18  Per Bothner  <per@bothner.com>

	* LispLanguage.java (dots3_sym): New constant.
	* SeqSizeType.java: New constructor.  Re-order arguments
	of old constructor to avoid ambiguity.

2015-04-12  Per Bothner  <per@bothner.com>

	* LispReader.java (handlePostfix): Make protected.

2015-03-18  Per Bothner  <per@bothner.com>

	* LangPrimType.java (boxedStringCursorType): New constant ClassType.
	(boxedType, emitTestIf): Handle stringCursorType.

2015-02-23  Per Bothner  <per@bothner.com>

	* ReaderTypespec.java (read): Allow non-terminating-macro characters.
	After '>' call readToken to handle anything else.
	* LispReader.java (handleToken): New method
	(readAndHandleToken): Use handleToken.

2014-12-22  Per Bothner  <per@bothner.com>

	* LangObjType.java (emitCoercionOrNull): New method.
	(emitTestIf): Use emitCoercionOrNull.

	* SeqSizeType.java: New class, extends LangObjType.

2014-12-21  Per Bothner  <per@bothner.com>

	* LangObjType.java (coercionMethod): For default case, return null
	if getConstructor() returns null.

2014-12-18  Per Bothner  <per@bothner.com>

	* LangObjType.java (emitTestIf): Fix handling for types without
	a coercion method.

2014-12-09  Per Bothner  <per@bothner.com>

	* LangPrimType.java (emitTestIf): Fix handling of boolean,
	character, character-or-eof, and char types.
	(emitIsInstance): Remove special handling for booleans.

2014-11-24  Per Bothner  <per@bothner.com>

	* LispLanguage.java (quasiquote_sym): New constant.
	* LispReader.java (handlePostfix): Use quasiquote rather than quote
	for colon notation.

2014-11-17  Per Bothner  <per@bothner.com>

	* LispLanguage.java (resolve): Error if module has both statements
	and a submodule with the same classname.

2014-11-17  Jamison Hope  <jrh@theptrgroup.com>

	* LispReader.java (parseNumber): Add support for quaternion
	literals.

2014-11-03  Per Bothner  <per@bothner.com>

	* BracketApply.java (rewrite): Generalize handling of ParameterizedType
	to LangObjType and other language-specific types.

2014-10-27  Per Bothner  <per@bothner.com>

	* LispReader.java (readAndHandleToken): Complain if token is ".".

2014-10-24  Per Bothner  <per@bothner.com>

	* ReaderParens.java (readList): Report error if no value after '.'.

2014-10-13  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): Check if reader is null.

	* LispLanguage.java: Use new setPedantic method.

2014-09-23  Per Bothner  <per@bothner.com>

	* LispReader.java (readNumberWithRadix): Check for and append '#'
	tokenBuffer, so we can handle '#' beyond teh initial character.

2014-09-17  Per Bothner  <per@bothner.com>

	* LispReader.java (returnMutablePairs): New field.
	(setReturnMutablePairs): New method.
	(makePair): Return plain mutable Pair if returnMutablePairs.
	(handlePostfix): Use makePair.

2014-09-16  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber): Interpret a negative radix as
	an overloadable default.  Needed for string->number.

2014-09-14  Per Bothner  <per@bothner.com>

	* ReaderDispatch.java (read): Return a non-empty value on an
	invalid dispatch character - it seems less likely to cause confusion.

2014-08-28  Per Bothner  <per@bothner.com>

	* LangPrimType.java (isCompatibleWithValue): Add hack for charType.

2014-08-27  Per Bothner  <per@bothner.com>

	* LangObjType.java (isCompatibleWithValue): New override.

	* LangObjType.java (emitCoerceFromObject): Support promiseType.

	* LangPrimType.java (voidType): Just make an alias for Type.voidType.

2014-08-11  Per Bothner  <per@bothner.com>

	* LangPrimType.java (emitCoerceFromObject): Optimize for char or
	character if matching boxed type.

2014-08-05  Per Bothner  <per@bothner.com>

	* LispReader.java (readCharacter): Handle non-BMP characters.

2014-08-01  Per Bothner  <per@bothner.com>

	* LangPrimType.java (coerceFromObject): Convert character types
	to raw type suitable for reflection - i.e. Integer.

2014-07-27  Per Bothner  <per@bothner.com>

	* LangObjType.java: Change to extend SpecialObjectType.
	Some methods and fields moved to SpecialObjectType.

2014-07-22  Per Bothner  <per@bothner.com>

	* LangPrimType.java (stringCursorType): New 'string-cursor' type.
	* LispLanguage.java (getTypeMap):  Add 'string-cursor'.

2014-07-02  Per Bothner  <per@bothner.com>

	* LangPrimType.java (characterType, characterOrEofType): New instances.
	Add support for the new types, whose implementation type is int.
	* LispLanguage.java (getTypeMap): Update "character".
	Add binding for "character-or-eof".
	* LangObjType.java (compare): Minor tweak.

2014-06-30  Per Bothner  <per@bothner.com>

	* LangObjType.java (encodeType): New method.
	* LangPrimType.java (encodeType): New method.

2014-06-26  Per Bothner  <per@bothner.com>

	* LispReader.java (readCharacter): Better error if character
	value out of range.

2014-05-12  Per Bothner  <per@bothner.com>

	* ReadTable.java (initialize): Revert previous change.  Instead
	handle '@' as splice operator in Scheme's createReadTable.

2014-05-05  Per Bothner  <per@bothner.com>

	* ReadTable.java (initialize): Read @FOO as ($splice$ FOO).
	* LispLanguage.java (splice_str, splice_sym): New static fields.
	* ReaderQuote.java (kind): New field.
	(getKind): Return kind.
	* LispReader.java (handlePostfix): Warn for deprecated TYPE:@ syntax.
	(validPostfixLookupStart): Check for '@'.

2014-04-27  Per Bothner  <per@bothner.com>

	* LispLanguage.java (keywordsAreSelfEvaluating): New method.

2014-03-17  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java (scanTag): Alloc ">>". 

2014-03-08  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java (scanTag): Allow ">".

2014-02-23  Per Bothner  <per@bothner.com>

	* LispReader.java (checkEncodingSpec): New method.
	(readNestedComment): Check for "coding" spec.
	* ReaderIgnoreRestOfLine.java (read): Likewise.

2014-02-16  Per Bothner  <per@bothner.com>

	* ReaderDispatchMacro.java: Make sure Error is uncaught or re-thrown.
	* ReaderDispatchSyntaxQuote.java: Likewise.

2014-02-12  Per Bothner  <per@bothner.com>

	* LangPrimType.java: Change charType to recognize both gnu.text.Char
	and java.lang.Character.

	* ClassNamespace.java: Use WrappedException.rethrow.

2014-02-05  Charles Turner  <chturne@gmail.com>

	* LispPackage.java: Manage Lisp packages explicity in the
	namespace map.

2014-01-05  Per Bothner  <per@bothner.com>

	* Makefile.am: Merge into ../../../gnu/Makefile.am and remove.

2013-12-22  Per Bothner  <per@bothner.com>

	* LangObjType.java: Add some handling for coercing an LProcess
	or a Blog to a vtevector.
	* ReaderExtendedLiteral.java (scanTag): New method to handle
	tag name.  Extend from just allowing NCName to also allowing
	'&`' and '&<'.

2013-12-21  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java (readContent): Warn about ']]>'.

2013-11-11  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): No longer need to set firstForm.

2013-11-10  Per Bothner  <per@bothner.com>

	* DefineNamespace.java: Update for new APIs.
	* LispLanguage.java: Likewise.

2013-11-03  Per Bothner  <per@bothner.com>

	* LispPackage.java (findSymbol): Optimize by using new
	Values.Values2 class.

2013-10-30  Per Bothner  <per@bothner.com>

	* ReaderXmlElement.java (readElementConstructor): Allow an unquoted
	enclosed expression for the value (only) of an attribute.
	Report error if value not otherwise starts with '\'' or '"'.
	In namespace-declaration the prefix becomes a symbol, not a string.

2013-10-23  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): Remove unused local variable 'forms'.

	* ReaderXmlElement.java (xmlProcInstSymbol): Fix typo - missing '$'.

2013-09-28  Per Bothner  <per@bothner.com>

	* ReaderDispatchMisc.java (read): Support R7RS's #true/#false.
	* LispReader.java (readSimpleVector): Split into two methods.
	(readTokenString): Utility method to reduce some duplication.

	* LispReader.java: Allow '\|' (vertical-bar), useful in symbols.

2013-09-27  Per Bothner  <per@bothner.com>

	* LispReader.java (readToken): Allow r7rs-style general escape
	inside |bars| when reading a symbol.

2013-09-22  Per Bothner  <per@bothner.com>

	* LispReader (readSpecial): Allow ' ' after '#!'.
	If lines ends with '\', skip next line as well.
	This helps with handling the scsh-style "meta-arg".
	Also ApplicationMainSupport.commandName if unset.

2013-07-05  Charles Turner  <chturne@gmail.com>

	* LispPackage.java (valueOf, valueOfNoCreate, findSymbol)
	(exportPkg, importPkg, allSymbols, allExternalSymbols)
	(allInternalSymbols, signal): New methods adding extra support for
	CL packages.

2013-09-05  Per Bothner  <per@bothner.com>

	* LangObjType.java (getConstructor): Add case for bytevector.

2013-08-31  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber): Allow arbitrary-case for inf and nan.

2013-08-25  Per Bothner  <per@bothner.com>

	* ReaderDispatch.java (create): Take nonTerminating parameter.
	* ReadTable.java (createInitial): Pas parameter.
	(initialize): Take sharpIsTerminating parameter.

2013-06-12  Charles Turner  <chturne@gmail.com>

	* LispPackage.java
	(pkgUsesList,pkgUsedByList,addNickNames,usePackages,makeLispPackage):
	New methods adding extra support for CL packages.

2013-06-12  Charles Turner  <chturne@gmail.com>

	* LispPackage.java: Add preliminary support for Common Lisp
	package. Create the standard CL packages, the special *package*,
	and fix the USE method.

2013-06-13  Charles Turner  <chturne@gmail.com>

	* LispLanguage.java (getTypeMap): Add a type alias `simple-symbol' of
	class SimpleSymbol for more readable error messages.

2013-06-11  Matthieu Vachon  <matthieu.o.vachon@gmail.com>

	* LispReader.java: Fix wrong reading of empty string symbol (i.e. '||)
	This fixes Savannah bug #39229 "Empty string symbol lexer problem".

2013-06-02  Per Bothner  <per@bothner.com>

	Improve handling of boolean type - specifically comparison and union.
	This fixes Savannah bug #39047
	"Wrong incompatible type (boolean) with expected int".
	* LangPrimType.java (isCompatibleWithValue): New method.
	Add special handling for boolean type.
	(compare): Remove special handling for boolean type.

2013-05-12  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java (readContent): Generalize handling
	of format specifiers to allow multiple specifiers in a row, and
	to allow leaving out an empty enclosed expression-list.

2013-05-11  Per Bothner  <per@bothner.com>

	* LangObjType.java (compare):  Remove special handing for
	integerType, dflonumType, realType. No longer needed thanks
	to 2010-10-06 changes to PrimType.java.	This fixes
	Savannah bug #38891 "Wrong warning with literal double value".

2013-03-20  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java: Add support for printf-style '%'
	format specifiers.

2013-03-02  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java (readContent): Generalize so logic
	can also work for ReaderXmlElement.
	(checkDelim, isNestableStartDelim, isNestableEndDelim):
	New protected methods.
	* ReaderXmlElement.java (readContent): Remove.
	(checkDelim, isNestableStartDelim, isNestableEndDelim): New.

2013-03-02  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java (readContent): Tweak logic of &| so
	it skip initial newline.

2013-02-23  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java (startEnclosedSymbol,
	endEnclosedSymbol): Change values to not require symbol-escaping.

2013-02-02  Per Bothner  <per@bothner.com>

	* ReaderExtendedLiteral.java: Change how enclosed expressions are
	translated - use begin/end markers ($[$ and $]$) instead of $unquote$.
	Add support for continuaton markers '&-'.
	(readEnclosed): New protected convenience method.

2013-01-23  Per Bothner  <per@bothner.com>

	* ReaderXmlElement.java (readElementConstructor): Add support for
	enclosed expression that evaluate to an attribute node.

2013-01-21  Per Bothner  <per@bothner.com>

	* LispReader.java (readToken): Break on '{' in token starting with '&'.
	(handlePostfix): If we see '[' or '{' following a '&SYMBOL',
	then parse a SRFI-108 named quasi-symbol.
	(makePair2): New convenience method.
	(deprecatedXmlEnlosedReported): New boolean.
	* ReaderExtendedLiteral.java: New class, extending ReaderConstituent.
	Support for SRFI-108 and SRFI-109 string and named quasi-literals.
	Lots of code factored out from ReaderXmlElement.java.
	* ReaderXmlElement.java: Re-factored to use inherited code.
	Also, deprecated '{...}' for enclosed expressions in favor of '[...]'.
	* Makefile.am: Update accordingly.
	* ReaderTable.java (initialize): Bind '&; to ReaderExtendedLiteral.
	* LispLanguage.java (constructNamespace, entityNamespace): New statics.
	* ReadTableEntry.java (ampersand): New field.

2013-01-21  Per Bothner  <per@bothner.com>

	* LispReader.java (readToken): Remove unused readCase parameter.
	Update callers.
	* ReaderConstituent.java: Change to extend ReaderMisc.
	(read): Override 3-parameter version, not 4-parameter version.
	* ReaderMisc.java (read): Likewise.

2013-01-20  Per Bothner  <per@bothner.com>

	* ReaderConstituent.java: New class, extends ReadTableEntry.
	* Makefile.am: Update acccordingly.
	* ReaderMisc.java (read): New method.
	* ReadTableEntry.java (singleEscape, multipleEscape,
	constituent, brace): Initialize to ReaderConstituent instances.
	* LispReader.java (readValues): Is now trivial - no switch statement.

2013-01-19  Per Bothner  <per@bothner.com>

	* LispReader.java (readAndHandleToken): When done, restore
	tokenBufferLength to startPos.

2013-01-18  Per Bothner  <per@bothner.com>

	* ReaderDispatchMisc.java (read): Move handling of #|...|# comments to
	(readNestedComment): ... new method..

	* ReadTable.java (unquoteEntry): Inline field where used ...
	(initialize): ... here.
	(makeSymbol): Make non-static and protected.

2013-01-13  Per Bothner  <per@bothner.com>

	* ReaderVector.java (readVector): On EOF, use vector's start
	position for error message.

2013-01-05  Per Bothner  <per@bothner.com>

	* LispLanguage.java (quote_sym, unquote_sym, unquotesplicing_sym)
	quasiquote_sym): Rename static fields to quote_str, unquote_str,
	unquotesplicing_str, and quasiquote_str.

2012-12-27  Per Bothner  <per@bothner.com>

	* DefineNamespace.java (scanForDefinitions): Also use prefix when
	creating Namespace object.

2012-12-26  Per Bothner  <per@bothner.com>

	* LispReader.java (readValuesAndAppend): New method.
	* ReaderVector.java (readVector): Use readValuesAndAppend.

2012-12-19  Charles Turner  <chturne@gmail.com>

	* LispLanguage.java (unitNamespace): Moved here from Scheme class.

2012-11-11  Per Bothner  <per@bothner.com>

	* LangObjType.java (compare): Add test for nullType.

2012-10-21  Per Bothner  <per@bothner.com>

	* ReaderXmlElement.java: Change reading of XML literals so it returns
	"call" of a symbol like $xml-element$, and not a literal Procedure.
	This enables better quotation behavior and read/write round-tripping.
	Also some other improvememts like using a symbol in place of a string.
	Also, pass String to MakeElement instead of wrapping in MakeText.
	* ResolveNamespace.java: Update to match ReaderXmlElement changes.
	* MakeXmlElement.java: Update to call MakeElement#setStringIsText.

2012-10-21  Per Bothner  <per@bothner.com>

	* ReadTable.java (makeSymbol): Simplify.

2012-10-20  Charles Turner <chturne@gmail.com>
	    Per Bothner  <per@bothner.com>

	Re-factor type lookup to avoid Scheme dependencies.
	* LispLanguage.java (getTypeMap, getPackageStyleType,
	getNamedType, getTypeFor(Class)): New methods.

2012-10-02  Per Bothner  <per@bothner.com>

	Fix line number support for top-level non-pairs.
	* LispReader.java (readObjectWithSharing): Rename to ...
	(readObject(int,boolean)):  Take extra topLevel parameter.  If true
	and read object is not a list, wrap it in a begin form.
	(readCommand): Update with extra parameter to readObject.
	* ReaderDispatchMisc.java: Likewise.

2012-09-18  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): If seeing an unexpected ')', skip it.

2012-08-18  Per Bothner  <per@bothner.com>

	* BracketApply.java (rewrite): New convenience method errorWithPosition.

2012-02-05  Per Bothner  <per@bothner.com>

	Support #, and #,@ inside quasisyntax.  Complicated becaue of backward
	compatibility: Need to support , and ,@.  Also need to support SRFI10.
	* ReaderDispatchSyntaxQuote.java: New class, extends ReadTableEntry.
	* Makefile.am: Update.
	* ReaderQuote.java (read): New static method.
	* ReaderDispatchMisc.java: Move #, handing to ReaderDispatchSyntaxQuote.
	* ReadTable.java (unquoteEntry): New field.
	* LispReader.java (inQuasiSyntax): New field.

2012-01-28  Per Bothner  <per@bothner.com>

	* BracketApply.java (rewrite): Update for 'promise'.

2012-01-27  Per Bothner  <per@bothner.com>

	* LangObjType.java (promiseType): New static field.
	(PROMISE_TYPE_CODE): New constant.
	(getConstructorType): New method.

2011-12-29  Per Bothner  <per@bothner.com>

	* LangObjType.java (compare): Handle LazyType.
	(coerceNumeric, coerceRealNum, coerceDFloNum, coerceRatNum,
	coerceIntNum, coerceToClassOrNull, coerceToClass, coerceToClassType,
	coerceToTypeOrNull, coerceToProcedureOrNull): Force lazy value.
	* BracketApply.java (rewrite): Handle lazy[TYPE].

2011-12-01  Per Bothner  <per@bothner.com>

	* BracketApply.java (rewrite): Use Language#getTypeFor on type
	parameters, so it also works for not-yet-compiled classes.

2011-10-24  Per Bothner  <per@bothner.com>

	* ReaderParens.java (readList): Pass 'last' variable as parameter.
	If non-null, use that as the initial "list head".
	(read): Above change allows simplification when command is provided.
	It also fixes the column number of the first pair following a command.
	* LispReader.java: Update calls to readList.

2011-10-01  Jamison Hope  <jrh@theptrgroup.com>

	* LispReader.java (readSpecial): Handle #!native.

2011-07-11  Per Bothner  <per@bothner.com>

	Support reading cyclic lists and vectors using SRFI-38 #N= notation.
	* LispReader.java (bindSharedObject): New helper method.
	(readValues): Take extra sharingIndex parameter.
	(readObjectWithSharing, setCar): New methods.
	* ReadTableEntry.java (read(Lexer,int,int,int)): New method,
	takes sharingIndex.
	* ReaderDispatchMisc.java (read): Use readObjectWithSharing.
	* ReaderParens.java: Handle self-referential lists.
	* ReaderVector.java: Handle self-referential vectors.
	* ReaderDispatch.java: Update to new APIs.
	* ReaderXmlElement.java: Likewise.

2011-06-29  Per Bothner  <bothner@kuling.bothner.com>

	* BracketApply.java (rewrite): Parse TYPE[ARGS] like Java's TYPE<ARGS>.
	I.e. create a ParameterizedType value.

2011-04-17  Per Bothner  <per@bothner.com>

	* LispLanguage.java (getLexer): Change to more specific return type.
	* LispReader.java (readCase): New field.
	(getReadCase): Changed to just return the value of the readCase field.
	(loookupReadCase): Lookup value of symbol-read-case.
	(setReadCase): New method.
	(readSpecial): Handle special tokens '#!fold-case' and
	'#!no-fold-case' by setting readCase.

	* LispLanguage.java (defaultReadTable): Make protected.
	Don't initialize here, but do it lazily.
	* ReadTable.java (getCurrent): In needed, initialize defaultReadTable.
	* LispReader.java (validPostfixLookupStart): Don't hardwire ':'.

2011-03-01  Per Bothner  <per@bothner.com>

	* LangObjType.java (makePathProc, makeFilepathProc, makeURIProc):
	Remove static fields, to avoid needs reflection during startup.
	(getConstructor): Instead create PrimProcedure objects on-the-fly.

2011-02-24  Per Bothner  <per@bothner.com>

	* LangObjType.java (s8vectorType, u8vectorType, s16vectorType,
	u16vectorType, s32vectorType, u32vectorType, s64vectorType,
	u32vectorType, f32vectorType, f64vectorType): New LangObjType statics.

2011-01-19  Per Bothner  <per@bothner.com>

	* LispLanguage.java (makeBody): Remove method - now in Translator.
	(defSntxStFld): mangleNameIfNeeded is now in super-class.
	* LangPrimType.java: emitPushBoolean and emitCoerceToBoolean are
	now in Compilation, not Language.

2011-01-17  Per Bothner  <per@bothner.com>

	* LispLanguage.java (getCompilationClass): New method.
	(getCompilation, makeApply, checkDefaultBinding): Removed methods.

2011-01-03  Per Bothner  <per@bothner.com>

	Support square brackets for constructing immutable vectors.
	* BracketApply.java: New Syntax.  Currently handles 'type[]'.
	* Makefile.am: Update accordingly.
	* LangObjType.java (CONST_VECTOR_TYPE_CODE): New constant.
	(constVectorType): New static LangObjectType field.
	* ReadTable.java (defaultBracketMode): No default -2, which
	treats [x y z] as an immutable-sequence constructor.
	(setBracketMode): Handle new mode==-2
	* LispReader.java (handlePostfix): Handle 'exp[exps]'.

	* ReaderVector.java (readVector):  Return ConstVector rather than
	FVector, to produce immutable result.

	* ReaderTypespec.java (read): Update belatedly to use
	ReadTable#makeSymbol.

2010-12-27  Per Bothner  <per@bothner.com>

	* LangObjType.java (procedureType): New static field.
	(PROCEDURE_TYPE_CODE): New constant.
	(compare, coercionMethod, coercionOrNullMethod, coerceFromObject:
	Update accordingly.
	(coerceToProcedureOrNull, coerceToProcedure): New methods.

2010-11-26  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): Move check for unexpected ')' inside loop.

	* LispPackage.java (lookup): Update, since Symbol constructor is
	now protected.

2010-11-14  Per Bothner  <per@bothner.com>

	* ReaderIgnoreRestOfLine.java (read): Unread line-ending.

2010-10-21  Per Bothner  <per@bothner.com>

	* LispReader.java (makePair): New overloaded method.

2010-10-15  Per Bothner  <per@bothner.com>

	* LangObjType.java (convertValue): Just return null for 'integer',
	to avoid some hiding of static type mismatches.

2010-10-05  Per Bothner  <per@bothner.com>

	* LangPrimType.java (convertValue): New method.
	* LangObjType.java (coercionMethod, convertValue): New methods.
	(emitCoerceFromObject): Make use of coercionMethod.

2010-09-17  Per Bothner  <per@bothner.com>

	* LangPrimType.java (compare): Return -1 for (char,gnu.text.Char).

2010-08-01  Per Bothner  <per@bothner.com>

	* DefineNamespace.java (scanForDefinitions): Set IS_SINGLE_VALUE
	on namespace variable.

	* LispLanguage.java (parse): Use new Compilation convenience methods.

2010-06-27  Per Bothner  <per@bothner.com>

	* ReaderXmlElement.java (readContent): Need to reset tokenBufferLength
	before reading escaped expression.

2010-06-18  Per Bothner  <per@bothner.com>

	* ReadTable.java (hexEscapeAfterBackslash): New field.
	* LispReader.java (readToken): Possibly handle R6RS inline hex escape.

2010-05-31  Per Bothner  <per@bothner.com>

	Add support for xmlsns="xxx" - i.e. default namespace declarations.
	* ReaderXmlElement.java (DEFAULT_ELEMENT_NAMESPACE): New constant.
	(readQNameExpression): Extra parameter forElement, in which case
	use DEFAULT_ELEMENT_NAMESPACE if there is no prefix.
	(readElementConstructor): Update calls to readQNameExpression.
	* ResolveNamespace.java (rewriteForm): If DEFAULT_ELEMENT_NAMESPACE
	default to EmptyNamespace.
	* MakeXmlElement.java (rewriteForm): If prefix is empty,
	declare namespace declaration using DEFAULT_ELEMENT_NAMESPACE.

2010-05-24  Per Bothner  <per@bothner.com>

	* ReaderXmlElement.java: New class, extends ReadTableEntry.
	Implements XML literals: #<NAME ...>...</>.
	* MakeXmlElement.java: New Syntax helper class used by the above to
	handle and declare namespace attributes during the re-write phase.
	* ResolveNamespace.java: New Syntax helper class to resolve QName
	literals after namespace declarations are added.
	* Makefile.am: Update accordingly.
	* ReaderDispatch.java (create): Map '<' to ReaderXmlElement.
	* LispReader.java (readToken): Add special handling of '{' and'}'.
	* ReadTable.java (initialize): Set up above handling.
	* ReadTableEntry.java (brace): New final field.

	*  ReadTableEntry.java (illegal): New final field.
	(getIllegalInstance): New method.
	* ReadTable.java (lookup): If no entry, default to illegal instance.
	* LispReader.java: Allows minor simplifications.
	* ReaderParens.java: Likewise.
	* ReaderTypespec.java: Likewise.

	* LispReader.java (makePair): Change to more precise return type.
	(setCdr): Change to more lenient cast.

	* LispLanguage.java (parse): If we've seen errors in single-line-mode
	then skip to end of line.

2010-05-23  Per Bothner  <per@bothner.com>

	* LispReader.java: Change syntax for literal uri in symbols
	from 'prefix:{uri}local' (incomplete) to 'prefix{uri}:local'.
	(returnSymbol, handleToken): Remove and merge into readAndHandleToken.
	(readToken): Remove redundant case-folding.
	Instead, do it only in readAndHandleToken.

2010-05-19  Per Bothner  <per@bothner.com>

	* DefineNamespace.java: Update Namespace.getInstance -> valueOf.
	* ReadTable.java (putReaderCtor(String,Type)): New overloaded method.

	* LispReader.java (handlePostfix): Handle extended syntax
	for a compound symbol: PREFIX:{URI}NAME

	* ReaderDispatchMisc.java (read): Fix broken handling of #,(NAME ...).
	The symbol NAME is no longer implemented by a String, but by a Symbol.

2010-04-01  Per Bothner  <per@bothner.com>

	* LispLanguage.java (bracket_list_sym, bracket_apply_sym):
	New constants.
	* ReaderParens.java (command): New hook for creating an application
	with a fixed "function".  Future use for square brackets.

2010-04-04  Per Bothner  <per@bothner.com>

	* LangObjType.java (stringType): If java.lang.CharSequence is
	unavailable, define string as gnu.lists.CharSeq rather than FString.
	* ReaderString.java (readString): If java.lang.CharSequence is
	unavailable, return type should be FString, not String.
	* ReaderDispatchMisc.java: Fixi handling of the case when
	java.util.regex is unavailable.

2010-02-24  Per Bothner  <per@bothner.com>

	* ReaderString.java (readString): Check poer.getConvertCR() before
	doing CR-conversion.
	This fixes Savavvah bug #28926 "EOL conversion in READ".

2010-01-06  Per Bothner  <per@bothner.com>

	Make space be options before and after :: in type specifier.
	* ReaderColon.java:  New class, extends ReadTableEntry.
	* Makefile.am: Update accordingly.
	* ReadTable.java (initialize): Enter ReaderColon.
	* LispReader.java (readToken): Check for '::'.

2009-11-03  Per Bothner  <per@bothner.com>

	* COPYING: Removed obsolete file.

2009-10-19  Per Bothner  <per@bothner.com>

	* LangObjType.java (getRealType): New method.

2009-10-17  Per Bothner  <per@bothner.com>

	* LangObjType.java (getConstructor): Update to use FVector.make.

2009-09-30  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber): Map 2f2 to java.lang.Float etc.

	* LangObjType.java (dflonumType): New static.
	(DFLONUM_TYPE_CODE): New type code constant.
	(coerceDFloNum): New method.
	(coercionOrNullMethod, coerceFromObject, emitConvertFromPrimitive,
	emitCoerceFromObject): Implement support for numericType.

2009-09-20  Per Bothner  <per@bothner.com>

	* LangObjType.java (numericType): New static.
	(NUMERIC_TYPE_CODE): New type code constant.
	(coerceToNumeric): New method.
	(coercionOrNullMethod, coerceFromObject, emitConvertFromPrimitive,
	emitCoerceFromObject): Implement support for numericType.

2009-09-19  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber): Parse R6RS +nan.0, +inf.0, and -inf.0.

2009-09-15  Per Bothner  <per@bothner.com>

	* LangPrimType.java (byteType, shortType, intType, longType, floatType,
	doubleType): Semi-depecate - use gnu.bytecode.PrimType objects.
	(emitCoerceToObject): Remove special-handling for
	byteType/... - use default PrimType handling.
	(coerceToObject): Likewise.
	* LangObjType.java (emitConvertFromPrimitive): New method.

2009-09-11  Per Bothner  <per@bothner.com>

	* LangObjType.java (realType, rationalType): New static objects.
	(coerceRealNum, coerceRatNum): New methods.
	* LangObjType.java (getDeclaredMethod): New method.

2009-08-31  Per Bothner  <per@bothner.com>

	* LispReader.java (sharedStructureTable): New field.
	* ReaderDispatchMisc.java: Add support for #n#= and #n# as in
	CommonLisp and SRFI-38.
	* ReaderDispatch.java: Update accordingly.

2009-08-29  Per Bothner  <per@bothner.com>

	Allow ||: as a keyword, as recommended by SRFI-88.
	* LispReader.java (readToken): Set seenEscapes on a MULTIPLE_ESCAPE.
	(returnSymbol): Allow zero-length keyword if seenEscapes.

2009-08-10  Per Bothner  <per@bothner.com>

	* LispLanguage.java (getNamedPartLocation): New static, moved from
	kawa.lang.Translator.

2009-08-05  Per Bothner  <per@bothner.com>

	* LangObjType.java (getMethods): Update for new API.

2009-07-29  Per Bothner  <per@bothner.com>

	* LangObjType.java (getMethods(Filter,int,Vector,String)): Generalize
	Vector argument to List<Method>, as in superclass.

2009-07-10  Per Bothner  <per@bothner.com>

	* ReaderString.java (readString): Intern the result string.
	This is an alternative/additional fix for Savannah bug #26993
	"String literals in syntax-rules don't match".

2009-06-01  Per Bothner  <per@bothner.com>

	* LispReader.java (readCharacter): Fix two bugs so we can
	read "long" hex character constants, such as #\x10ffff. 

2009-05-30  Per Bothner  <per@bothner.com>

	New support for regex Pattern types and literal syntax.
	* LangObjType.java (regexType): New static LangObjType, bound to
	java.util.regex.Pattern.
	* ReaderString.java (readString): New static method.
	* LispReader.java (readEscape): Handle backslash-newline also
	for other whitespace after the backslash.
	* ReaderDispatchMisc.java (readRegex): New method.
	(read): On '/' call readRegex.
	* ReaderDispatch.java (create):  Map '/' to ReaderDispatchMisc.

2009-04-21  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber): Translate 'd'/'s'/... exponent
	marker to the standard 'e' before calling parseDouble.

2009-03-10  Per Bothner  <per@bothner.com>

	* LispReader.java (initialColonIsKeyword, finalColonIsKeyword,
	setInitialColonIsKeyword, setFinalColonIsKeyword): Move to ...
	* ReadTable.java: ... here.
	* LispLanguage.java (getLexer): Revert 03-07 change.

2009-03-08  Per Bothner  <per@bothner.com>

	* ReaderDispatchMisc.java (read): Support SRFI-62 S-expression comments.
	* ReaderDispatch.java (create): Likewise.

2009-03-07  Per Bothner  <per@bothner.com>

	* LispReader.java (readEscape): Implement R6RS behavior for
	backslash-whitespace - i.e. skip initial whitespace on next line.

	* LispReader.java (readCharacter): Handle hex escapes.

	* LispReader.java (initialColonIsKeyword, finalColonIsKeyword):
	Change defaults to false.
	(setInitialColonIsKeyword,setFinalColonIsKeyword): New methods.
	* LispLanguage.java (getLexer): Remove method - now in subclasses.

2009-03-01  Per Bothner  <per@bothner.com>

	* LispLanguage.java (getCompilation): Update to pass NameLookup.

2008-11-13  Per Bothner  <per@bothner.com>

	* LangPrimType.java: Update to use Type.byteType instead of
	semi-deprecated Type.byte_type.

2008-06-08  Per Bothner  <per@bothner.com>

	* LispReader.java (makePair): Remove unused method.
	(setCdr): Use setCdrBackdoor, since pairs may be PairWithPosition.

2008-06-01  Per Bothner  <per@bothner.com>

	* LangObjType.java (vectorType, stringType, listType): New Type statics.
	(emitIsInstance): Optimize cases that are a plain Java type.

2007-11-02  Per Bothner  <per@bothner.com>

	* LangObjType.java (integerType): New field, represents the
	"integer" type, using gnu.math.IntNum, but with conversions.
	* LangObjType.java (getField, getMethod): New methods.
	* LangPrimType.java (compare): If other is LangObjType,
	let it handle the compare.

2007-03-31  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber): Don't try to parse quantities.
	Because unit names are context-dependent, better to parse quantities
	at name-resolution-time.
	(lookupUnit): Remove method.
	(handleToken): Don't check for potentialNumber, since it doesn't
	recognize quantities.

2007-03-06  Per Bothner  <per@bothner.com>

	* LispReader.java (readSpecial): Handle #!abstract.

2007-02-18  Per Bothner  <per@bothner.com>

	* DefineNamespace.java: Update for symbol representation changing
	from String to Symbol and strings changing to CharSequence.
	* LispReader.java: Likewise.
	* ReaderDispatch.java: Likewise: Pass Symbol to ReaderQuote.
	* ReadTable.java: Likewise.
	(makeSymbol): Change to return SimpleSymbol.
	* ReaderString.java (read): Change to return String rather
	than FString, assuming we're using CharSequence.
	* LispLanguage.java (lookup_sym): Change type to Symbol.
	* LispReader.java (parseNumber(CharSequence,int)): New method.

	* LispReader.java (validPostfixLookupStart): Allow unquote.

	* LispLanguage.java (checkDefaultBinding): New method.
	* LangObjType.java (typeClass, typeType, typeClassType): New constants.
	(compare, emitTestIf, emitCoerceFromObject): Handle new types.
	(coerceToClassOrNull. coerceToClass, coerceToClassTypeOrNull,
	coerceToClassType, coerceToTypeOrNull, coerceToType): New statics.

2007-01-02  Per Bothner  <per@bothner.com>

	* LangObjType.java: Extends ObjectType rather than ClassType.
	(compare, getMethod): New methods.

	* ReadTable.java (getReaderCtor): Generalize from Procedure to Object.
	* ReaderDispatchMisc.java (read): For "#," allow Type for
	constructor function.

	* LispReader.java (makePair): Create regular Pair if filename unknown.

2006-12-30  Per Bothner  <per@bothner.com>

	* LangObjType.java: New class.
	* Makefile.am: Update accordingly.

2006-11-19  Per Bothner  <per@bothner.com>

	* LispReader.java: Update Undefined.undefined -> Special.undefined.

2006-10-26  Per Bothner  <per@bothner.com>

	* XmlNamespace.java: MOved to gnu.kawa.xml.XmlNamespace.
	* Makefile.am: Update accordingly.
	* DefineNamespace.java: Likewise.

2006-08-22  Per Bothner  <per@bothner.com>

	* LispLanguage.java (getCompilation): New method.
	(parse): Remove method - use now-final method in superclass.

2006-06-28  Per Bothner  <per@bothner.com>

	* XmlNamespace.java (prefix): Remove field, since now in parent class.
	(get) Simplify - can now just use getSymbol.
	* LispPackage.java (lookup): Update to use new Symbol constructor.

2006-06-27  Per Bothner  <per@bothner.com>

	* LangPrimType.java (getConstructor): New method.

2006-06-16  Per Bothner  <per@bothner.com>

	* XmlNamespace.java: New class, extends Namespace.
	* Makefile.am: Update accordingly.
	* DefineNamespace.java (scanForDefinitions): Re-implement makeXML
	handling to create an XmlNamespace..

	* ClassNamespace.java (getClassType): New method.

2006-06-10  Per Bothner  <per@bothner.com>

	* ClassNamespace.java: New class, extends Namespace.
	* Makefile.am: Update accordingly.
	* DefineNamespace.java (scanForDefinitions): Creat a ClassNamespace
	rather than a plain Namespace if uri starts with "class:".

2006-05-25  Per Bothner  <per@bothner.com>

	Handle module dependencies and cycles.
	* LispLanguage.java (parse): New method overloading.

2006-05-01  Per Bothner  <per@bothner.com>

	* LispLanguage.java (getLexer): Since all subclasses except BRL and Q2
	use the standard LispReader, provide an implementation.
	(makeSymbol): Move method to ReadTable.
	(handleToken, returnSymbol, readToken): Take and pass a ReadTable
	parameter.
	* ReaderDispatchMisc.java: Update readToken call.
	* ReadTable.java (initialize): New method.
	(getInitial): Rename to createInitial and use new initialize method.
	(makeSymbol): New method.
	* ScmRead.java: Remove pointless sub-class of LispReader.
	* Makefile.am: Update accordingly.

	* LispReader.java (getReadCase): Make static and non-public.

2006-03-03  Per Bothner  <per@bothner.com>

	* LispReader.java (readNestedComment): On unexpected eof, print
	the starting rather than ending position.

2006-03-01  Per Bothner  <per@bothner.com>

	* DefineNamespace.java: Use new SetExp.makeDefinition factory method.

2006-02-19  Per Bothner  <per@bothner.com>

	* LangPrimType.java (coerceToObject): Handle "coercing to void".

2006-02-13  Per Bothner  <per@bothner.com>

	* LispLanguage.java (makeApply): Change return type to Expression.

	* LispReader.java (readToken): Don't check postfixMode parameter.
	(readToken, readValues): Hence remove the postfixMode parameter.
	* ReaderDispatchMisc.java: Update accordingly.
	* ReaderParens.java: Likewise.

2006-02-09  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): Use new Compilation.pushNewModule method.

2006-02-06  Per Bothner  <per@bothner.com>

	* DefineNamespace.java (scanForDefinitions): A namespace declaration
	is now essentially an alias declaration, except that if the bound
	value is a String literal then lookup the corresponding Namespace.
	* LispLanguage.java (lookup_syn): Update comment.
	* LispReader.java (readValues): Hack to force initial ':' to be
	treated as CONSTITUENT.

	* LispLanguage.java (lookup_sym): New static final.
	* LispReader.java (readValues): Take some extra parameters.
	If seeing SINGLE_ESCAPE or MULTIPLE_ESCAPE, just defer handling
	to readToken (which it used to do anyway), instead of duplicating work.
	(readToken): Take an extra postfixMode parameter.
	(handlePostfix): Set line+column on resulting $lookup$ form.
	(readObject): Pass line and column to handlePostfix.
	(validPostfixLookupStart): Readtable is passed in to look up
	class of following character - not just a letter.
	* ReaderParens.java: Pass extra argumenta to modified methods.
	* ReaderVector.java: Likewise.

2005-12-30  Per Bothner  <per@bothner.com>

	* ReadTable.java (ctorTable): New field.
	(initCtorTable, putReaderCtor, putReaderCtorFld, getReaderCtor):
	New methods.
	* ReaderDispatchMisc.java (read): Implement SRFI-10 for #,(TAG ....).

2005-12-22  Per Bothner  <per@bothner.com>

	* ReaderQuote.java (read): Set line/column numbers on returned list.
	Especially important for quasiquote and quasisyntax.

	* LispReader.java (makePair): Fix unknown line number to -1,
	which then gets increment to 1.

2005-12-05  Per Bothner  <per@bothner.com>

	* LispReader.java (readToken): Move ReadTable.getCurrent() out of loop.
	* LispReader.java (validPostfixLookupStart): New method.
	Requires following character to be letter, rather than any CONSTITUENT.
	We may extend it later - but we want to not conflict with existing
	useful uses of '\\' for SINGLE_ESCAPE.
	(handlePostfix): Use validPostfixLookupStart
	(readoken): Check if a character is postfixLookupOperator,
	and if validPostfixLookupStart then treat it as TERMINATING_MACRO.

2005-12-04  Per Bothner  <per@bothner.com>

	Handle syntax ObjectOpName as sugar for ($lookup$ Object 'Name).
	* ReadTable.java (postfixLookupOperator): New field.
	* LispReader.java (handlePostfix): New function.
	(readObject): Call handlePostfix after readValues.
	* ReaderParens.java (readList): Call handlePostfix after each car.

	* DefineNamespace.java (makeXML): New option.
	(define_xml_namespace): New constant field.
	(scanForDefinitions): Handle makeXML - i.e. "define-xml-namespace",.

2005-10-27  Per Bothner  <per@bothner.com>

	* LispLanguage.java (resolve): New methods.
	(parse): Modify since some actions have been moved to resolve.

2005-08-03  Per Bothner  <per@bothner.com>

	* DefineNamespace.java (scanForDefinitions): Fix bad error message.

	* LispLanguage.java (makeApply): Return more specific ApplyExp type.

2005-08-03  Chris Dean  <ctdean@sokitomi.com>
	    Per Bothner  <per@bothner.com>

	* DefineNamespace.java: Implement define-private-namespace.
	(makePrivate): New field.
	(define_private_namespace): New static field.
	(scanForDefinitions): Check makePrivate field.

2005-07-05  Per Bothner  <per@bothner.com>

	* DefineNamespace.java (scanForDefinitions): Set IS_NAMESPACE_PREFIX
	flag on namespace declaration.

2005-06-03  Per Bothner  <per@bothner.com>

	* LispLanguage.java (declFromField): New method, refines method
	in Language by checking for Syntax.

2005-05-06  Per Bothner  <per@bothner.com>

	* ReadTable.java (current): Update ThreadLocation constructor call.

2005-04-18  Per Bothner  <per@bothner.com>

	* ReadTable.java (current): Make non-public.

2005-04-03  Per Bothner  <per@bothner.com>

	* package.html: New file, for javadoc.

2005-03-29  Per Bothner  <per@bothner.com>

	* LispLanguage.java (parse): Save/set/restore current Compilation.

2005-03-20  Per Bothner  <per@bothner.com>

	* DefineNamespace.java (define_namespace): New static "instance" field.

2005-03-17  Per Bothner  <per@bothner.com>

	* ReadTable.java (current): Change to fluid.
	(getCurrent): Rewrite to use current and default to using Language's.
	(setCurent): New method.

	* LispLanguage.java (defaultReadTable): New field.
	(createReadTable): New abstract method.
	* LispReader.java (getReadTable): Remove method.
	(readValues, readToken):  Use current ReadTable.
	* ReaderParens.java (readList): Likewise.
	* ReaderTypespec.java (read): Likewise.
	* ReaderDispatch.java (getInitial): Rename to create.
	(read): Fix call to error so we get correct column number.
	* ReadTable (getInitial): Update ReaderDispatch.getInitial->create.
	* ScmRead.java (getReadTable): Remove method.
	(readtable, makeSchemeReadTable): Remove members - handle by
	new createReadTable method in Scheme.

2005-03-11  Per Bothner  <per@bothner.com>

	* LispLanguage.java (defSntxStFld): Call FieldLocation's setSyntax.

2005-03-07  Per Bothner  <per@bothner.com>

	* DefineNamespace.java: Update Interpreter -> Language.
	* LangPrimType.java: Likewise.

2005-03-06  Per Bothner  <per@bothner.com>

	* DefineNamespace.java: Moved here from gnu.kawa.xml.
	The reason is so namespaces can work even when --disable-xml.

2005-01-29  Per Bothner  <per@bothner.com>

	* LispLanguage.java: New class, renamed from ...
	* LispInterpreter.java: ... removed class.
	* Makefile.am (java_sources): Update accordingly.
	* ReadTable.java: Update LispInterpreter -> LispLanguage.

	* LispLanguage.java (langSymbolToSymbol): New staic method.
	(fromLangSymbol): New protected method.
	
2005-01-21  Per Bothner  <per@bothner.com>

	* LispInterpreter.java: Inherit from Language rather than Interpreter.

2004-12-20  Per Bothner  <per@bothner.com>

	* LispInterpreter.java: New method.
	* LispPackage.kava (lookup): Use new add method.

2004-12-05  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (defSntxStFld): New methods.
	* LispPackage.java: New class extends Namespace.
	* Makefile.am: Update accordingly.
	* LispReader.java: Update for new Location handling.

2004-11-08  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (parse): Update for new scanning api.

2004-10-26  Per Bothner  <per@bothner.com>

	* ScmRead.java (makeSchemeReadTable): New static method.
	(schemeReadTable): New static field, set using makeSchemeReadTable.
	(getReadTable): New methods override, returns schemeReadTable.

2004-08-05  Per Bothner  <per@bothner.com>

	* LangPrimType.java:  Now implement TypeValue.
	(emitTestIf, emitIsInstance):  New methods.
	(emitIsInstance(CodeAttr)): New method.

2004-07-20  Per Bothner  <per@bothner.com>

	* LispInterpreter.java:  Remove unused import statements.
	* ReadTable.java:  Likewise.
	* ReadTableEntry.java:  Likewise.
	* ReaderDispatchMisc.java:  Likewise.
	* ReaderParens.java:  Likewise.

2004-06-12  Per Bothner  <per@bothner.com>

	* LispReader.java (readValues):  Fatal on invalid char if interactive.

	* LispReader.java (readCommand):  New method.
	* LispInterpreter.java (parse):  Use readCommand instead of readObject.

	* ReaderParens (readList):  Use new pushNesting/popNesting methods.

2004-05-09  Per Bothner  <per@bothner.com>

	* ReaderParens.java (readList):  For list as a whole, set line/column
	to that of the initial paren, not the first car.

2004-05-04  Per Bothner  <per@bothner.com>

	* LispReader.java (readSimpleVector): Allow zero-length
	uniform/simple vectors.

	* LispReader.java (isPotentialNumber):  Minor cleanup.

2004-04-20  Per Bothner  <per@bothner.com>

	* LispReader.java (isPotentialNumber):  Allow initial '_' for symbols.

2004-02-13  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (makeApply):  New method - used by Translator.

2004-02-12  Per Bothner  <per@bothner.com>

	* ReadTable.java (lookup):  Unknown characters are "constituent".

2003-12-20  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (quote_sym, unquote_sym, unquotesplicing_sym,
	quasiquote_sym):  Move constants here from gnu.expr.Interpreter.
	* ReadTable.java (getInitial):  Update accordingly.

2003-11-08  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (parse):  Update to take a Lexer rather than
	an InPort.

2003-11-02  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (parse, parseFile):  Combined to single
	'parse' method.

2003-10-19  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (parse, parseFile):  Pass this to Translator.

2003-10-02  Per Bothner  <per@bothner.com>

	* LangPrimType.java (byteType, shortType, intType, longType, floatType,
	doubleType, charType, voidType):  Make final.
	* ReaderDispatchMisc.java:  Use Boolean FALSE/TRUE directly instead
	of via Interpreter falseObject/trueObject field.
	* LispReader.java:  Likewise use Undefined.undefined directly.

2003-09-04  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber):  Handle multi-unit products.

2003-08-23  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber):  Fix bug reported by Aubrey Jaffer.

2003-08-20  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber):  Unit.mul has been renamed to times.

	* LispReader.java (isPotentialNumber):  New method.
	(checkNumber):  Inlined in handleToken and removed.
	(parseNumber):  New extra 'exactness' parameter.
	Return error strings on all errors.
	Fix handling of #i-1/0 with new numeratorNegative variable.
	(handleToken):  Use isPotentialNumber to distinguish symbols
	from malformed numbers, and emit error in latter case.

2003-08-14  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber):  Move duplicated code to ...
	(valueOf):  New method for parsing integer strings.
	Fix logic for testing fits-in-long to account for radix.

2003-04-05  Per Bothner  <per@bothner.com>

	* LangPrimType.java (compare):  Fix thinko.
	Fixes bug reported by Vladimir Tsichevski <wowa1@online.ru>.

	* LispReader.java (readToken):  Allow "illegal" character if escaped.

2003-02-23  Per Bothner  <per@bothner.com>

	* ScmRead.java (scmReadTable):  Remove static field.
	(getReadTable):  Remove method
	* ReadTable.java (defaultBracketMode):  Move earlier, so it's set
	before call to getInitial.

2002-11-05  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (parseFile): Take and use new 'immediate'
	parameter.

2002-07-24  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (makeModuleExp):  Moved from Scheme.java.
	(parse, parseFile):  Update to new Interpreter API.

2002-06-05  Per Bothner  <per@bothner.com>

	* LangPrimType.java (emitCoerceToObject):  Combine similar code.

2002-03-02  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (parseFile):  Now throws IOException and
	SyntaxException.

2002-02-13  Per Bothner  <per@bothner.com>

	* LispReader.java:  Make non-abstract.

2002-01-23  Per Bothner  <per@bothner.com>

	* LispInterpreter.java (makeBody):  New method.

	* ReaderParens.java (readList):  Use Lexer's new eofError method.

	* ScmRead.java:  Remove some unused import declarations.

2002-01-13  Per Bothner  <per@bothner.com>

	* LispReader.java (readSpecial):  Skip Unix script header #!/PROGRAM.

2001-11-24  Per Bothner  <per@bothner.com>

	* ReadTable.java (setBracketMode):  New methods.
	(defaultBracketMode):  New static field
	(<init>):  Use new method.

2001-11-24  Bruce Lewis  <brlewis@users.sourceforge.net>

	* ReaderTypespec.java:	New class, extends ReadTableEntry
	* Makefile.am (java_sources):  Added ReaderTypespec.java

2001-11-24  Per Bothner  <per@bothner.com>
	
	* ScmRead.scm (<init>):  Revert change of 11-19.

2001-11-18  Per Bothner  <per@bothner.com>

	* LispReader.scm (initialColonIsKeyword, finalColonIsKeyword):  New.
	(returnSymbol):  Use new flags.
	* ScmRead.scm (<init>):  Set initialColonIsKeyword to false.
	
2001-11-14  Per Bothner  <per@bothner.com>

	* LangPrimType.java (compare):  Boolean is less specific than
	other types.

2001-10-19  Per Bothner  <per@bothner.com>

	* ReaderDispatchMacro.java (read):  Since apply3 now throws Throwable,
	we must catch it.
	* ReaderMacro.java (read)  Likewise, for apply2 call.

2001-09-21  Per Bothner  <per@bothner.com>

	* LangPrimType.java (compare):  Any type can be converted to
	boolean and vice versa, so return 0.

2001-08-23  Per Bothner  <per@bothner.com>

	* LangPrimType.java (implementationType):  New field.
	(<init>):  Set implementationType.
	(getImplementationType):  New method.

2001-08-16  Per Bothner  <per@bothner.com>

	Handle Guile-style keyword syntax '#:KEYWORD'.
	* ReaderDispatchMisc.java (read):  On ':', read a keyword.
	* ReaderDispatch.java (getInitial):  Register ':' dispatch syntax.

2001-07-18  Per Bothner  <per@bothner.com>

	* LispInterpreter.java:  If --applet was specified on command line,
	note that supertype was specified,

2001-07-17  Per Bothner  <per@bothner.com>

	* LispInterpreter.java:  New class, extends Interpreter.
	* Makefile.am (java_sourceses):  Added LispInterpreter.java.

2001-06-17  Per Bothner  <per@bothner.com>

	* ReaderParens.java (readList):  Fix handling of bad syntax.

2001-06-05  Per Bothner  <per@bothner.com>

	* ReaderParens.java (readList):  After seeing '.' that starts a token,
	set ch to '.'.  Fixes bug report of Thomas Kirk <tk@research.att.com>.

2001-06-03  Per Bothner  <per@bothner.com>

	* ReaderDispatch.java (read):  Better error message.

2001-05-16  Per Bothner  <per@bothner.com>

	* LangPrimType.java (compare):  New method, handles <boolean>.
	Fixes bug reported 05-11 by Allan Erskine <a.erskine@cs.ucl.ac.uk>.

	* LangPrimType.java:  New class, renamed from kawa.lang.SpecialType.
	* Makefile.am (java_sources):  Update accordingly.

2001-05-09  Per Bothner  <per@bothner.com>

	* LispReader.java (readValues):  Add missing read().

2001-04-26  Per Bothner  <per@bothner.com>

	* ReaderParens.java (readList):  Re-order tests so that the case
	that there is no closing delimiter (ch==-1).  Fixes Scheme.eval.

	* LispReader.java (makePair):  Don't used to-be-removed
	PairWithPosition constructor; use static make method instead.

2001-04-24  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber):  Use new Convert.parseDouble.

2001-04-23  Per Bothner  <per@bothner.com>

	* LispReader.java (parseNumber):  Set decimal_point correct.
	If no digits before decimal_point adjust digits_start to include point.

	* LispReader.java (makeSymbol):  New method.
	(returnSymbol):  Call makeSymbol.

	* LispReader.java (makeNil, makePair, setCdr):  Add implementations.
	* ScmRead.java (makeNil, makePair, setCdr):  Remove implementations.

	* LispReader.java (isDelimiter):  Remove - not used.
	* ScmRead.java (numError):  Likewise.

	* ReaderDispatch.java (kind):  New field.
	(getKind):  Return kind instead of hardwired value.
	Change constructors to set kind.
	* ReaderMacro.java:  New class, extends ReaderMisc.
	* ReaderDispatchMacro.java:  New class, extends ReaderMisc.
	* Makefile.am:  Update for new classes.

2001-04-22  Per Bothner  <per@bothner.com>

	* LispReader.java:  Complete re-write, having the reader be
	table-driven in the manner of Common Lisp readtables.
	* ScmRead.java:  Likewise.
	* ReadTable.java:  New class, extends gnu.kawa.util.RangeTable.
	* ReadTableEntry.java:  New class.
	* ReaderDispatch.java:  New class, extends ReadTableEntry.
	* ReaderDispatchMisc.java:  New class, extends ReadTableEntry.
	* ReaderIgnoreRestOfLine.java:  New class, extends ReadTableEntry.
	* ReaderMisc.java:  New class, extends ReadTableEntry.
	* ReaderParens.java:  New class, extends ReadTableEntry.
	* ReaderQuote.java:  New class, extends ReadTableEntry.
	* ReaderString.java:  New class, extends ReadTableEntry.
	* ReaderVector.java:  New class, extends ReadTableEntry.
	* Makefile.am:  Update for new classes.
	* COPYING:  New file.

2001-03-08  Per Bothner  <per@bothner.com>

	* ScmRead.java:  Various fixes to use new gnu.lists package,
	and name change UniformVector -> SimpleVector.

2000-06-17  Per Bothner  <per@bothner.com>

	* ScmRead.java (readString):  Avoid some code duplication.
	Fix so line number get updated correctly on line-continuation escape.

2000-06-10  Per Bothner  <per@bothner.com>

	* ScmRead.java (lookupUnit):  New method.
	(readNumber):  If units are literal Units, handle * and ^ now.

2000-06-09  Per Bothner  <per@bothner.com>

	* ScmRead.java (readSymbol):  Intern Keyword names.
	(readNumber):  Handle '^' and '*' in units.

2000-05-28  Per Bothner  <per@bothner.com>

	New package.
	* LispReader.java:  Moved from gnu.text.
	* ScmReader.java:  Moved from kawa.lang.
