1Revision history for Perl extension Yapp. 2 3 - original version; created by h2xs 1.18 40.01 Thu Jun 25 20:02:09 1998 50.02 Never released 60.03 Never released 70.04 Never released 8 - Fix installation of yapp.pl to $INST_SCRIPT 9 - $VERSION is now in Yapp/Driver to check compatibility 10 - Add debugging driver and debug option 11 - Bug in error recovery fixed: do not shift an $error reduction 12 - Add LeftValue, Curtok and Curval methods 13 - Add driver version compatibility check 140.05 Thu Jul 03 20:05:05 1998 15 - Add LeftValue, Curtok and Curval methods 160.06 Tue Jul 07 20:36:17 GMT 1998 17 - Error token '$error' becomes 'error' (like in yacc) 18 - The '$end' token becomes '' 190.07 Never released 20 - Default action become a separate entry in states hash 21 - $COMPATIBLE value changed to 0.08 22 - The grammar parser is now a Yapp parser module 23 - Comments can be either Perl (#...\n) or C /* ... */ style 24 - The parser accepts %type, %union and <type> constructs and 25 almost ignore them, except checking consistency between token 26 and non-terminal declarations (warnings) 27 - The parser now has error recovery and consistent error line numbers 28 - The parser now accepts "in rule" actions and generates pseudo 29 empty rules to reduce, named @x-y, where x is a sequential 30 number and y the 'dot position' in the rule for the driver 31 to know how many parameters to pass to semantic action sub 32 - Add "in rule" actions handling in Driver.pm 33 - Empty rhs need not be the first one anymore 34 - Warning if more than one empty rhs for a given lhs 350.08 Fri Jul 10 22:04:31 GMT 1998 36 - Changed 'print STDERR' to 'warn' in parser. 37 - Use of literal 'error' produces a warning and is treated as 38 the error token 39 - Add prefix 'YY' before each parser object methods to avoid 40 clashes with user written methods 41 - Renamed YYUserData to YYData (shorter and more consistent with 42 other methods names) 43 - Renamed YYLeftVal to YYSemval for same reasons 44 - Modified Driver.pm so Semval(-n..n) reacts like $-n..$n in yacc 450.09 Never released 46 - Changed test suite to 't/' style and add base tests for semantic 47 actions/values and associativity tests 48 - Check code to be (almost) Perl's -w compatible 49 - Updates to pod section in Yapp.pm reflecting most of those changes 500.10 Mon Jul 13 20:53:40 GMT 1998 51 - Cosmetic changes 520.11 Wed Jul 15 19:46:17 GMT 1998 53 - Renamed Yapp::Parse parameters with a leading yy 54 - Updated Yapp.pm pod section 550.12 Tue Jul 21 22:34:00 GMT 1998 560.13 Never released. (I'm not supersticious, but who knows...8-)) 57 - Renaming to Parse::Yapp for better CPAN entry... 580.14 Wed Jul 29 21:43:03 GMT 1998 59 - Doc change: empty token is '', not undef (perl -w complains otherwise) 60 - Bug in _ReduceGrammar: used $ruleno instead of $#{$grammar{RULES}} 61 making no-terminal pointing to wrong rhs if useless rules. 620.15 Mon Aug 17 11:39:01 CEST 1998 63 - YappParse.yp modified to allow empty tail section (not even \n) 64 - YappParse.yp modified to diagnose lack of rules in grammar section 65 - Driver.pm has been modified so there is no performance impact at 66 loading when debugging is not used and to insure thread safety at 67 runtime 68 - Output.pm can now include driver code into the parser module to 69 make it 'standalone' 70 - Copyright notice in Driver has been changed to reflect its use 71 if included in a standalone parser 72 - A -s option has been added to yapp.pl to generate standalone parsers 73 - Usage in yapp.pl reflects this new option 74 - Updated Yapp.pm pod to add Standalone Parsers item 750.16 Sun Oct 25 12:36:05 CET 1998 76 - Output.pm modified not to use DATA handle, which seems broken on windows 77 systems when Parse::Yapp module is untarred and Output.pm hasn't its \n 78 converted to \r\n pairs. 79 - Added the %expect declaration, a la bison 80 - Updated Yapp.pm pod to reflect this new option 81 - The core of Parse::Yapp seems very stable now so I change the status from 82 alpha to beta and jump to version 0.20 directly. 830.20 Sun Dec 20 16:13:21 CET 1998 84 - Added YYExpect method in Parse/Yapp/Driver.pm 85 - Updated Yapp.pm pod to reflect this new method 86 - Modified Makefile.PL for using current Parse::Yapp version if recompiling 87 Parse/Yapp/Parse.pm from YappParse.yp ( $(PERL) -I. ) 88 - Modified yapp.pl to add -V option and make output default to final name 89 of package, if -m option is specified. Usage updated. 90 - Added missing $@ check after eval of debugging driver. 910.21 Thu Dec 24 17:55:47 GMT 1998 92 - Corrected a weird bug in Lalr.pm (_SolveConflicts & _SetDefaults) about 93 shift/reduce conflicts on non-associative tokens 94 - Added a test in base.t to check non-associative conflicts and error 95 token handling 96 - Added some doc to explain YYExpect can include YYCurtok when non-associ- 97 ative errors happen 980.22 Wed Mar 10 17:03:39 CET 1999 99 - Moved Parse path tree under lib to be conformant with standard Perl 100 modules distributions 101 - Added Parse::Yapp::Options class as parent of Parse::Yapp::Grammar 102 to handle various options. 103 - As the Output method is not really 'public' yet, it now takes its 104 arguments as hash list, like YYParse. Can break code of people not 105 using the yapp.pl front-end. 106 Of course, its arguments are handled by Parse::Yapp::Options 107 - Added #line "inputfile" trace in generated grammar by default for input 108 source line numbers (obvious reason for adding that :-). 109 - Added language, linenumbers, inputfile, classname, standalone and input 110 options which default to ( 'Perl', 1, undef, 'Parser', 0, undef ) 111 - Modified yapp.pl for new parameter list 112 - Idem for t/base.t and t/calc.t 113 - Modified Grammar.pm so it uses linenumbers option to know it must output 114 line numbers and inputfile as the filename. If inputfile is undef, then 115 use 'unkown'. 116 - Added a new flag -n to yapp.pl to disable line numbers in parser output 117 - Renamed yapp.pl to yapp (bored of typing .pl) 118 - Wrote pod for yapp frontend (so now there's a man 1 page !) 119 - Added article in copyright notice when using the standalone parser option 1200.30 Sat Apr 3 15:36:58 CEST 1999 121 - Corrected a silly bug in yapp front-end, calling Output method with 122 inputfile parameter, which was already done with the constructor 123 - Change to yapp frontend so the F<*.output> file goes to the same 124 directory than the F<*.yp> source file 125 - Corrected Head method in Parse::Yapp::Grammar so it returns '' if there 126 is no header code, to avoid a warning with perl's -w switch 127 - Same for Tail method, so no line number is output if there is no trailer 128 code 129 - Corrected a bug in Grammar.pm, to make useful rules useless if their lhs 130 are not reachable. 1310.31 Fri May 7 21:06:32 CEST 1999 132 - Won some milliseconds in Driver.pm by not calling an anonymous sub if 133 there is no semantic action: just get the first semantic value as result 134 - Added a patch from Andy Wardley (thanks) which allow people to specify 135 their own template rather than the standard one from Output.pm 136 - Added option C<-b> to yapp to specify a 'shebang'. If value is an empty 137 string, $Config{perlpath} is used. 1381.00 Wed Oct 20 17:52:38 CEST 1999 139 - Corrected a bug in Options.pm to have it run with Perl 5.6.0 1401.01 Tue Mar 28 18:50:19 CEST 2000 141 - In YappParse.yp, if declaring a token with %left/%right/%nonassoc and 142 later redefining it with token lost precedence/associativity. Now, it 143 emits a warning 144 - In Lalr.pm, _FirstSfx, incorrectly looped when epsilon was in firstset 145 instead of beeing nullable (this one was weird) 146 - In Driver.pm, check for a call to YYErrok after calling error routine 147 to abort error recovery and continue normal parsing 148 - New method YYLexer added in Driver.pm, to get a reference to the lexer 149 routine 150 - In Driver.pm, $check variable was not always cleaned up 1511.02 Mon May 1 13:42:03 CEST 2000 152 - English corrections in README file (thanks to Donald Lancon) 153 - New email address 154 - Updated copyright boundaries 155 - Various cleanups in Grammar.pm and Lalr.pm 1561.03 Sun Nov 5 13:14:49 CEST 2000 157 - In Lalr.pm, _Preds, recursivity removed 158 - English corrections in Parse::Yapp pod section (thanks to Julian Trudy) 159 - Updated copyright boundaries 160 - Stress test added (compile and check a full C++ grammar) 1611.04 Mon Feb 12 16:46:37 CET 2001 162 - Bug correction in YappParse.yp _Lexer sub to accept '\\' litterals 163 (Thanks to Denis Barbier to catch this one) 1641.05 Sun Nov 4 20:32:32 CET 2001 165