Revision history for Perl extension Parse::RecDescent. 1.00 Mon Aug 11 13:17:13 1997 - original version 1.01 Mon Sep 8 18:04:14 EST 1997 - changed "quotemeta" to "quotemeta $_" in Text::Balanced to workaround bug in Perl 5.002 and 5.003 1.10 Tue Sep 30 14:51:49 EST 1997 - fixed fatal bug in tracing code - added m<delim>...<delim> format for regex tokens - added support for trailing modifiers (/.../gimsox) in regex tokens - added $thisline variable 1.20 Thu Oct 2 11:46:57 EST 1997 - fixed handling of trailing regex modifiers (now no whitespace allowed before between last delimiter and first modifier) - added trace diagnostic for failure/success of actions (demystifies failures caused by an action returning undef) - added context for "Matched rule..." trace - added a test so that an integer value (N>1) in the $::RD_TRACE variable now truncates (to N characters) all contexts reported in any trace - added "start-up" actions: actions appearing before the first rule were previously an error. They are now executed (once) at the start of the parser's namespace. 1.21 Sat Oct 4 17:12:23 EST 1997 - modified truncation of context in trace diagnostics (successful matches now report first N/2 and last N/2 chars, instead of first N) - fixed incorrect version number in Balanced.pm 1.22 Tue Oct 7 11:53:27 EST 1997 - fixed lurking trace problem with certain pathological regexes - fixed bug in generation of special namespaces (this was serious as it prevented the use of more than one alternation in a parser, as well as preventing the use of more than one parser in a script! 1.23 Fri Oct 17 10:15:22 EST 1997 - fixed error message generation for <error?:msg> directives - fixed error message handling of empty productions - fixed handling of multi-line start-up actions - removed spurious debugging message for implicit subrule generation - changed naming scheme for alternations (pseudo-rule's name now describes location of alternation exactly) - added support for repetition specifiers on alternations. - Text::Balanced::extract_.... altered to honour the context in which they are called (see Balanced.pod for details). 1.24 - fixed minor problem in tracing code (context string now correctly reported for actions) - added explicit namespace declaration at beginning of generated code, to ensure that any "start code" is declared in the appropriate namespace. - fixed left recursion check on empty productions - added $::RD_AUTOSTUB flag and associated autostubbing behaviour (see new section - "Autostubbing" - in RecDescent.pod) - eliminated hierarchical precedence between $::RD_HINT and $::RD_TRACE. Enabling tracing now does _not_ automatically turn on hinting (although error and warning messages are still automatically enabled). - fixed bug in Text::Balanced. Division now correctly handled in code blocks. 1.25 Mon Feb 09 12:19:14 EST 1998 - Resynchronized numbering schemes for RecDescent and Balanced. 1.26 Wed Feb 25 13:52:15 EST 1998 - Fixed bug (and inefficiency) in <resync:pattern> directive. - Improved checking of regexes within grammars - Added subrule arguments (major change to internal grammar parser) - Added <matchrule:...> directive - started work on Compile() option (not complete yet - do not use!) - Made generated code "use strict" - Fixed bug which incorrectly warned against items following a <error?> directive. - Improved $thisline (added assignment and resync) - Fixed expectation messages for subrules - Rearranged tar file to co-operate with CPAN.pm 1.30 Fri May 22 05:52:06 1998 - Added <rulevar> directive - Added culling of productions starting with <reject> or <rulevar> - Cleaned up and improved format (and speed) of tracing code - Added warning levels - Optimized generation of token separator checking code. - Fixed bug encountered when parsing a literal string - Added $::RD_AUTOACTION to simplify standard actions at the end of each production 1.31 Fri May 22 06:11:26 1998 - Fixed bug in naming archive file 1.33 Fri May 22 06:15:26 1998 1.35 Wed Jun 24 09:57:02 1998 - Removed "foreach my $var ( @list )" constructs, which were biting users with perl 5.003 and earlier. - Fixed bug calling &Parse::RecDescent::toksepcode instead of &Parse::RecDescent::Rule::toksepcode - Changed grammar so that colons in rule definitions must appear on the same line as the rule name (as documented). Added an explicit error message when this is not the case. - Added $thiscolumn, which indicates the current column at any point in the parse. - Added $thisoffset, which indicates the absolute position in the original text string at any point in the parse. - Added $prevline and $prevcolumn, which indicate line and column of the last char of the last successfully matched item. - Added @itempos which provides: $itempos[$n]{offset}{from} $itempos[$n]{offset}{to} $itempos[$n]{line}{from} $itempos[$n]{line}{to} $itempos[$n]{column}{from} $itempos[$n]{column}{to} corresponding to each $item[$n]. See new documentation. - Several trivial lexical changes to make xemacs happy 1.41 Mon Aug 10 14:52:53 1998 - Enhanced POD in response to user feedback - Fixed subtle bug in Text::Balanced::extract_codeblock. It only bit when '(?)' appeared in implicit subrules - Added ability to pass args to the start-rule. 1.42 ???? - Added a test.pl - Modified behaviour of repetitions, so that the results of repeated subrules which succeed but don't consume are preserved (at least up to the minimal number of repetitions) - Fixed bug: @itempos now not incorrectly reset if grammar contained alternations - Fixed bug: Embedded unmatched '}' in regex tokens now works correctly - Miscellaneous tweaks to RecDescent.pod (e.g. updated meta-grammar) 1.43 Sat Aug 15 06:43:46 1998 - Resychronized Balanced.pm versions 1.50 Thu Aug 27 09:29:31 1998 - Changed <rulevar:...> parser to use extract_codeblock, so as to handle embedded '>' chars (e.g. <rulevar: $tmp = $self->{tmp}> ) - Added <defer:...> to allow deferred actions which are only executed if they are part of a rule that eventually succeeds. (see the new section under "Directives" in RecDescent.pod) - Fixed matching interpolated literals (was broken when literal contained pattern metacharacters) 1.51 Thu Aug 27 16:25:08 1998 - Maintenance release, rectifying bad soft links in the 1.50 distributions 1.60 Wed Oct 21 09:44:15 1998 [Never released] 1.61 Wed Oct 21 11:06:19 1998 - Added <token:...> directive for supporting (future) token-stream parsing (see pod) - Added feature that data is consumed if passed as a reference (see pod) - Fixed bug in autogenerated errors: now ignores directives - Modified behaviour of <defer> directive so that deferred actions only executed if total parse succeeds (i.e. returns a defined value) - Made error messages "anti-deferred". That is, only those errors invoked in paths that eventually caused a parse to fail are printed - see documentation. - Miscellaneous fixes for Text::Balanced subroutines - Made private namespaces inherit Parse::RecDescent namespace (leads to more intuitive behaviour when calling methods of $thisparser) - *** NON-BACKWARDS COMPATIBLE CHANGE! *** Changed the behaviour of token separator specification. Now uses <skip:...> directive. See pod for new details. 1.62 Wed Dec 9 11:26:29 1998 - Reinstated missing $prevoffset variable - Corrected a possible bug with autoactions (thanks Mitchell) - *** IMPORTANT CHANGE *** $::RD_WARN now initialized 3 by default. Serious but non-fatal errors are automatically reported, unless you explicitly undefine $::RD_WARN. - Fixed bug in AUTOLOADing non-method subs defined in package Parse::RecDescent (thanks Mario) 1.63 Thu Mar 25 09:13:21 1999 - Rewrote documentation to replace the concept of a token separator with that of a token prefix. - Fixed obscure bug in replacement of rules containing implicit subrules (alternations). Thanks Craig. 1.64 Sun Mar 28 05:44:14 1999 - Synchronized with Text::Balanced version - Fixed obscure bug in the treatment of escaped backslashes in literal tokens. Thanks Matthew. 1.65 Wed May 19 12:35:05 1999 - Added <leftop:...> and <rightop:...> directives - Added level 2 warning and autoreject for lone <error?> directive in a production. 1.66 Fri Jul 2 13:35:06 1999 - Improved error message when an action fails to parse (Thanks Tuomas). - Allowed predefined subroutines in package Parse::RecDescent to be used as rules in grammars - Changed error report on bad regexes to level 3 warning, since compile-time interpolation failure may falsely invalidate regexes that would work at run-time. 1.70 Fri Oct 8 14:15:36 1999 - Clarified use of "eofile" idiom in POD file Clarified meaning of "free-form" in description of grammars Fixed <resync> examples, which were invalidated by earlier change in semantics of <error>. (Thanks Knut). - Added grammar precompiler (see documentation) - Tweaked message for <reject> optimization. - Fixed bug when using '@' as a terminal (thanks Abigail) - Fixed nasty bug when $return set to zero - Added <score> and <autoscore> directives (see documentation) 1.77 Mon Nov 22 06:11:32 1999 - IMPORTANT: Now requires 5.005 or better. - Added <perl_quotelike>, <perl_codeblock>, and <perl_variable> directives (see documentation) - Added <autotree> directive (see documentation) - Added %item hash (see documentation - thanks Stef!) - Tweaked internal parser in line with changes to Text::Balanced - Added <nocheck> directive to switch off recursion checking and other checks in stable grammars (see documentation). - Refined code generation WRT positional variables ($thisoffset, etc) - Added positional entries for %item (see documentation) - Fixed bug with (missing) start actions under precompiler (thanks Theo) 1.78 Mon Mar 20 12:03:17 2000 - Fixed error messages and documentation for Parse::RecDescent::Precompile (thanks Jim) - Moved demos to /demo subdirectory - Added tutorial in /tutorial subdirectory - Added <autotree> directive - Added (s /sep/) notation (thanks Greg) - Circumvented \G and /gc calamities - Added more comprehensible error message when parser invoked through non-existent startrule (thanks Jeff) - Fixed serious bug with creating new parsers after existing ones had failed. (Thanks Paul) - Fixed problem with nested implicit subrules (thanks Marc). 1.79 Mon Aug 21 11:27:39 2000 - Pod tweak (thanks Abigail) - Documented need to use do{..} within some <reject:...> directives (thanks Paul) - Added Save method - Fixed bug that was preventing precompiled parsers being subsequently extended (thanks Jeff). - Changed keys used by %item. Now uses "named positionals" rather that simple positionals for non-subrule items (see documentation) - Added trimmer for surrounding whitespace in matchrules. - Squelched bug in (not) handling invalid directives (thanks John) 1.80 Mon Sep 4 12:29:28 2000 - Fixed Save so that saved parsers can still be used after saving (thanks Supun) - Fixed bug in line number tracking (thanks Theo) 1.80 Sat Jan 20 05:02:35 2001 - Fixed bug in (s /pat/) shorthand (thanks Julien) - Improved docs on <rulevar> (thanks Steve)