Have an SgmlParser::init method. Then EasyParser::parser_ won't need
to be a pointer.

Invert sense of HAVE_BOOL define.

Messages from application should use MessageReporter.

In filenames turn RS/RE back into system's line termination
convention.

Don't do a pass 2 unless have entity reference in prolog that used a
definition from the base DTD, and that entity was defined in an active
LPD.

In RastEventHandler recognize character references in attribute value
literal in link rule selection processing instruction.  Also resolve
issue of whether concrete syntax to be used is reference concrete
syntax or document concrete syntax.

?Construct link attributes from definition if no applicable link rule.
(RAST doesn't want this.  Make it a separate method in LinkProcess and
use in SgmlsEventHandler.)

Give an error message when we generate RAST-PI-ERROR (need to have
some method for registering message sources with message reporter).

Recover better from entity reference with name group in literal.

Start and end LPD events.

At start of pass 2 clear everything in pass1LPDs except entity sets.

Give an error if EXPLICIT > 1 and LPDs don't chain as required by
436:5-7 and 436:18-20.

?nsgmls command line switch to activate all links

Rename lpd_ to activeLpd_; allLpd_ to lpd_.

InputContext should be renamed now it's used by LinkProcess as well.

InputContext flags and MessageEvent::Type should be merged.

Activate links for subdocs in nsgmls.

Try harder to rewind in StdioStorageObject.

Need way to parse SUBDOC named in entity attribute, so that it doesn't
count against SUBDOC quantity limit.

Support both trusted/non-trusted mode for external entities per SGML
Open Entity Management proposal.

Make sure all files use #pragma i/i.

Get rid of OutputCharStream::open.  Instead have
OutputCharStream::setEncoding.  (Perhaps make a friend so we can use
ostream if we're not interested in encodings.)  Allow use of ostream
instead of OutputCharStream.  Change EasyParser::errorStream_'s coding
system when we change the coding system.

Do some options decoding (optionally) in EasyParser.

Rename EntityManger to ExternalEntityXXXer and then rename Portable
to PortableEntityManager (or just EntityManager).

Better Japanese support.  Implement JIS encoding system.  Optionally
use JIS numbers as universal codes, and recognize Japanese character
sets.

Handle quantity errors by reporting at the end of the prolog and the
end of the instance any quantities that need to be increased.

Better hash function for wide characters.

Don't ever give a non-existent file as a location in a error message.

Make noSuchReservedName error more helpful.

Function characters should perform their function even when markup
recognition is suppressed.

Give a warning for notation attribute that is #CONREF.

String.C should avoid calling new T[0].

Try to separate out Parser::compileModes().

In CompiledModelGroup have vector that gives an index for each element type
that occurs in the model group.  Then in each leaf content token have a
vector that maps this index to a LeafContentToken *, if there
is a simple transition (no and groups involved) to that element type.

Replace uses of Char(-1) by charMax defined as constant in file included
only by .C files.

What to do if we encounter USELINK or USEMAP declaration after DTD in
prolog?  Should stop prolog and start DTD.  If we have SCOPE INSTANCE
then if we get an unknown declaration type in prolog, don't give
error, but unget token and start instance.

?Have separate version of reportNonSgml() for case where datachar is allowed.

Have a common version of Owner for all things that have a virtual
destructor.

Have a common version of ResourcePointer for things that have a
virtual destructor.

Inheritance in AttributeSemantics unnecesary.

Implement CONCUR.

Implement DATATAG.

Implement capacity checking.

Implement SDIF.

Complete Esis+ (marked section start/end, comments, attribute spec
spacing, entity start/end).

Give warning for mixed content models that don't allow PCDATA everywhere.

?Handle non-regular files by copying them to a temporary file, but
only if we might need to seek on them; or perhaps this could be an
option.

Have a location in ElementType saying where the first mention of the
element name was.  Useful for giving warnings about undefined
elements.

Avoid looping with <!element a (a)>
and <!element a (b, a)> <!element b - o  empty>

?When generating RAST use the document character set to determine the
constant strings and to determine which characters are printable.

How to detect 310:8-10?

Provide a function that sets/clears a location that is used by error
messages instead of the current location.  Use this around start tag
omission.

AttributeDefinition constructors should have Owner<DeclaredValue> &,
arguments to avoid storage leaks when exceptions are thrown.

Create a list like IList but which keeps track of length.  Then
combine tagLevel into openElement stack, and inputLevel into
inputStack.

Improve treatment of entity references.  parseEntityReference
shouldn't return origin.  Instead return data structure representing
info about the reference.

Have a namedCharRefEvent and a namedCharRef TextItem type so as to
avoid keeping too much information around in EntityOrigin.

AttributeDefinition::makeValue should return
ConstResourcePointer<AttributeValue>.

Find better way to unpack entity information in entity attribute.

AttributeSemantics should return const pointers rather than ResourcePointer's

Provide raw option for PosixEntityManager that doesn't do RS RE
conversion and doesn't keep track of line numbers.

Rename Parser -> ParserImpl SgmlParser -> Parser
Syntax::isB -> Syntax::isBlank

Should store DTD name in EntityOrigin.

Text of messages should be able to specify that an open quote or close
quote should be inserted at a particular point.

Handle revisions in CharsetRegistry::findCharset.

Find out what's different between revision 1 of the C1 set of ISO 6429
(as specified in ISO 6429:1989)

Rename ISet -> RangeSet.

Syntax member functions should use reference for result.

Have a LocationKey data structure that can be used to determine the
relative order of locations in possibly different concurrent
instances.  Contains: offset in document instance; is it a replacement
of named character reference; for each entity and numeric character
reference: location in entity and index of dtd in which instance is
declared.

On systems with fixed stacks, avoid unlimited stack growth: hard
limits on number of SUBDOCS and GRPLVL.

With extendData and extendS don't extend more than some fixed amount
(eg 1024), otherwise could overrun InputSource buffer on 16-bit
system.

PosixExternalInfo::convertOffset: when the position is the character
past the last character and the last character was a newline, line
number should be number of lines + 1.

What to do about 457:19-21?

What mode should be used for parsing other prolog after document element?

Flag out of context data.

Support external character sets.  If we do this, then we need not
support unknown character sets.  Handle characters identified by
strings by mapping them onto a private universal character.  Include
in UnivCharsetDesc (or somewhere else) a ResourcePointer to an object
that maps the codes onto names.

Support extensions to SGML declaration described in Handbook.  In
particular support multiple literals for [LU]CNMCHAT/STRT.

With SCOPE INSTANCE, which syntax should be used for delimiters in
bracketed text entities?

Exit after some number (50 say) of errors.
