==============================================================================
                 Release of version 1.90 of Parse::RecDescent
==============================================================================


NAME

    Parse::RecDescent - generate recursive-descent parsers


DESCRIPTION

    RecDescent incrementally generates top-down recursive-descent text
    parsers from simple yacc-like grammar specifications. It provides:

        * Regular expressions or literal strings as terminals (tokens),

        * Multiple (non-contiguous) productions for any rule,

        * Repeated, optional and alternate subrules within productions,

	* Late-bound (run-time dispatched) subrules

        * Full access to Perl within actions specified as part of the grammar,

        * Simple automated error reporting during parser generation and parsing,

        * The ability to commit to, uncommit to, or reject particular
          productions during a parse,

        * Incremental extension of the parsing grammar (even during a parse),

	* Precompilation of parser objects,

	* User-definable reduce-reduce conflict resolution via
	  "scoring" of matching productions.

    See the file "RecDescent.pod" for excruciating detail on all of this.


LIMITATIONS

    * There's no support for parsing directly from an input stream.

    * The generator doesn't handle left-recursion.


PREREQUISITES

    Parse::RecDescent requires Text::Balanced, which is included in the
    distribution.


INSTALLATION

    It's all pure Perl, so just put the .pm files in their appropriate
    local Perl subdirectories.


CHANGES AND FUTURE DEVELOPMENT

    This readme refers to versions 1.XX.
    For details of changes, refer to the file Changes.

    Version 2.00 will provide a cleaner interface and better
    parsing performance.


AUTHOR

    Damian Conway (damian@csse.monash.edu.au)


COPYRIGHT

     Copyright (c) 1997-2000, Damian Conway. All Rights Reserved.
     This module is free software. It may be used, redistributed
     and/or modified under the terms of the Perl Artistic License
          (see http://www.perl.com/perl/misc/Artistic.html)


==============================================================================

CHANGES IN VERSION 1.90



	- BACKWARDS INCOMPATIBLE CHANGE: The key of an %item entry for
	  a repeated subrule now includes the repetition specifier.
	  For example, in:

		sentence: subject verb word(s)

	  the various matched items will be stored in $item{'subject'},
	  $item{'verb'}, and $item{'word(s)'} (i.e. *not* in $item{'word'},
	  as it would have been in previous versions of the module).
	  (thanks Anthony)

	- Changed argument passing behaviour. If no arguments specified
	  for subrule, it is now passed current rule's @arg instead. To 
	  get old (no arguments) behaviour use: subrule[]

	- Fixed bug in <reject> handling: failed to reject if $return
	  had been set. (thanks Nick)

	- Added two useful demos of restructuring nested data (thanks Marc)

	- Fixed doc bug re use of // (thanks Randal)

	- Localized filehandles, like a good citizen should

	- Misc doc bug fixes (thanks all)

	- Fixed Text::Balance dependency in Makefile.PL (thanks Dominique)

	- Fixed bug that @itempos wasn't set up if referred to only in
	  an autoaction. (thanks Eric)

	- Fixed truncation bug in tracing contexts

	- Dramatically improved speed of line counting (thanks John)

	- Made item(s) and item(s /,/) behave consistently wrt %item
	  (thanks Marcel)

	- Added prototype <autorule:...> handling

	- Added outer block markers for <perl_codeblock>

	- Fixed multi-grammar precompilation (thanks Dominique)

	- Fixed numerous snafus in tutorial.html (thanks Ralph)

	- Added nesting level information to traces

	- Fixed resetting of $text after an <uncommit> rule.



==============================================================================

AVAILABILITY

Parse::RecDescent has been uploaded to the CPAN

==============================================================================
