* parsetree.py: Improved error message generation. Instead of
relying on the scanner to produce errors, the parser now checks
things explicitly and produces errors directly. The parser has
better knowledge of the context, so its error messages are more
precise and helpful.
* yapps_grammar.g: Instead of setting self.rule in the setup()
method, pass it in the constructor. To make it available at
construction time, pass it along as another attribute in the
attribute grammar.
2003-08-11 Amit Patel <amitpcs.stanford.edu>
* parsetree.py: Generated parsers now include a context object
that describes the parse rule stack. For example, while parsing
rule A, called from rule B, called from rule D, the context object
will let you reconstruct the path D > B > A. [Thanks David Morley]
* *: Removed all output when things are working
properly; all warnings/errors now go to stderr.
* yapps_grammar.g: Added support for A? meaning an optional A.
This is equivalent to [A].
* yapps2.py: Design - refactored yapps2.py into yapps2.py +
grammar.py + parsetree.py. grammar.py is automatically generated
from grammar.g. Added lots of docstrings.
2003-08-09 Amit Patel <amitpcs.stanford.edu>
* yapps2.py: Documentation - added doctest tests to some of the
set algorithms in class Generator.
* yapps2.py: Style - removed "import *" everywhere.
* yapps2.py: Style - moved to Python 2 -- string methods,
list comprehensions, inline syntax for apply
2003-07-28 Amit Patel <amitpcs.stanford.edu>