1Coco/R for C and C++ 2==================== 3 4Version 1.00 - Apr-13-1994 5 6- First released version 7 8Version 1.02 - Sep-15-1994 9 10- Minor bug repaired in SCANNER.FRM file. 11- Some bugs found in CRA.C (incorrect deterministic automata on 12 transitions with character sets with some elements in common; not a 13 complete inclusion). Algorithm corrected. 14- Minor bug fixed in the CONTEXT management of CRA.C (reported by 15 Universidad Rafael Landivar's students). 16- Minor bug repaired in State0 vector generation (thank to Jean Carlo 17 Solis of the Universidad Rafael Landivar for the fix). 18- Improved portability in the source code and generated scanners still 19 further (thank to Martin Mueller of the University of New Mexico for 20 changes to NextStep). 21- Improved internal table dump routines. 22 23Version 1.03 - Oct-12-1994 24 25- Fixed minor bug in SCANNER.FRM file when using MS-DOS. (O_BINARY 26 added to the open mode options. Thanks to L. Barrera and L. Bocalleti 27 of the Universidad del Valle de Guatemala for the fixes). 28 29Version 1.04 - Jan-15-1995 30 31- Minor bug repaired in the documentation for Cocol (the grammar for 32 productions had semantic actions before "=", needed only for Modula 33 or Pascal versions). 34- Simple bug fixed in the generation of literal token generation. 35- Corrected some of the .FRM files when checking the number of arguments 36 to the compiler. 37- Corrected the management of TAB characters in reporting an error's 38 column number. (TAB character is assumed to be 8 characters long, 39 same as UNIX TAB). 40 41 Thank to Markus Klingspor of Wuerzburg University, Germany, for reporting 42 the bugs and his suggested corrections. 43 44Version 1.05 - Mar-10-1995 45 46- Corrected compiler.frm: (Included some function header definitions to 47 work with GNU g++, thanks to Markus Klinsgpor). 48- Improved performance of the generated scanner. 49- Corrected a bug in CRA.C in the CONTEXT management. 50- Corrected an interesting bug in GenCompiler(), which had remained 51 unnoticed for so long, because it works in many DOS and UNIX 52 compilers (it did not work in Watcom C++ - thanks again for 53 discovering the problem to Markus Klingspor and his students) 54 55Version 1.06 - Mar-29-1996 56 57- Support provided for C++. The scanner and parser may optionally 58 be generated as classes. This allows you to have multiple scanners 59 and parsers in the same program. (Thanks to Pat Terry, Markus 60 Klinsgpor, and some of our students for comments, testing and for 61 fixing some bugs.) 62- Fixed a bug in the parser's ExpectWeak function. (Thanks to Pat 63 Terry.) 64- Special thanks to Pat Terry of Rhodes University for testing and 65 improvements to many of the new object classes, source code and 66 examples. 67- Support added for customizing file extensions in the generated 68 parsers and scanners (CRCEXT and CRHEXT environment variables). 69- Improved source debugging (-d option) on the ".atg" file. 70 With these new fixes, you can set breakpoints on any part of 71 the ".atg" file. Previous versions only supported breakpoints 72 on semantic actions. 73 74Version 1.061 - Aug-27-1996 75- Fixed a bug in the comments generation. (Pat Terry) 76 77Version 1.062 - Nov-25-1996 78- Fixed a bug in the expression graph construction. 79 Function crt.c:LinkGraph. It did not work fine when using 80 meaningless "(" ... ")" constructs like: ("A" "B") "C". 81 Thanks to Joe Armstrong <joe@erix.ericsson.se> for reporting 82 83Version 1.07 - Oct-10-1997 84- Coco/R did not report an error when using a CHARACTER SET name 85 in the productions. 86 Thanks to Barrie Stott (UK) for discovering the bug. 87- Incorrect token names were generated for token strings starting 88 with a digit character (for example "2bOrNot2b"), or for names 89 that became too long. 90 Thanks to Soteri Panagou (RU) for reporting these bugs. 91- Fixed a bug that sometimes allowed undefined character set names 92 to cause the system to loop 93- Fix all main drivers frames (compiler.frm, cr.frm, etc.) to support 94 relative and absolute paths in filenames. 95 In the Unix version, only the "-" character is valid to supply the 96 command line options. /cplus2/cr_error.[hc]pp was also fixed. 97 All other frame files kept the same as in version 1.06. 98- Improved documentation compatible with that in Pat Terry's book 99 "Compilers and Compiler Generators" (International Thomson, 100 1997, ISBN 1-85032-298-8) 101 102Version 1.08 - Mar-31-1998 103 104- Support for MS Visual C++ 5.0 105- Support for defining variables in the command line using the 106 -Dvarname=value option. For example: 107 cocor -DCRHEXT=hxx -DCRCEXR=cxx -DCRFRAMES=..\frm taste.atg 108 109 NOTE: a simple -D without a variable means DEBUG! 110 111- Reorganized the code to support user defined file extensions. 112 113Version 1.09 - Aug-24-98 114 115- Minor cosmetic changes to adapt code to allow for greater consistency with 116 Java version; a few minor bugs fixed in comment handling. 117- Taste package slightly improved 118- Fixed a bug in the scanner generator (ConvertToStates function) 119- Fixed bug in use of high ASCII characters in strings 120- Literal token strings of zero length no longer allowed 121 122Version 1.10 - Oct-06-98 123 124- Fixed elusive bug in CRA module in AddMeltSets that caused problems with 125 very complex scanners 126- Fixed bug in CRX.C that occasionally resulted in first sets being incorrectly 127 initialized in parser. 128- Added debugging assert macros to help detect obscure memory leaks; small 129 changes in CRA, COLLECT and CRT to handle this. 130 131Version 1.11 - Nov-05-98 132 133- Applied Ken Stout's fix to allow long file pointers 134- Eliminated allowing incomplete strings within attributes and actions 135- Minor improvements to documentation 136 137Version 1.12 - Jul-09-99 138 139- Attributes may now be demarcated by matching <. and .> or by < and >. This 140 extension allows for the > character to appear in an actual parameter. 141- Omitting the closing .) in an action can lead to errors that are hard to 142 find, so the digraph (. appearing within a semantic action is now flagged as 143 an error (Thanks to Hans Ellenberger for this suggestion). 144- Small additions to C++ interface to allow position of token to be extracted, 145 and text to be extracted from a known position 146 147Version 1.13 - Sep-02-99 148 149- Fixed minor bug in parser that caused a crash when the TOKENS section had 150 (illegally) supplied tokens with semantic attributes 151 152Version 1.14 - Nov-18-99 153 154- Improved the scanner generator (LeftContext) 155- Fixed minor bug in comment handling when they were not properly sepcified 156- Changed hidden token names to EOF_Sym and No_Sym to avoid name clashes 157- Fixed errors in string handling with embedded quotes like 'xxx\'xxx' 158- Fixed nasty bug whereby EOF_Sym sometimes went missing from AllSyncs 159- Added CHR('A') as an alternative to CHR(65) in CHARACTER specification 160- Improved function header generation for void functions in C version 161- Better support for ANSI C compilers, WIN32 compilers and latest EGCS - for 162 example, function prototypes use (void) instead of (), main returns an int 163 and so on. 164- Added /q option to support interaction with editors (for exqample QEdit) 165- Most frame files changed to correspond to these changes. 166- Added -q directive to provide listing output more suited to interfacing 167 with editors that can interrogate error messages by line, column. 168 169Version 1.15 - Apr-30-00 170 171- Insistence that IGNORE CASE appear first if it appears at all 172- Improved the scanner generator (LeftContext No longer needed) 173 174Version 1.16 - June-19-01 175 176- Minor bug fixed in scanner that caused trouble with tokens of the silly form 177 ttt = hhh [ { hhh } ] . 178 179- Definition of string changed as below 180 181 CHARACTERS 182 cntl = CHR(0)..CHR(31). 183 back = CHR(92) . 184 noQuote1 = ANY - '"' - cntl - back . 185 noQuote2 = ANY - "'" - cntl - back . 186 graphic = ANY - cntl . 187 TOKENS 188 string = '"' {noQuote1 | back graphic } '"' 189 | "'" {noQuote2 | back graphic } "'" . 190 191 (This may break some existing source. The effect is that \" \' and \\ in 192 strings are all treated as in C. Previously this was not so consistent. 193 194Version 1.17 - Sep-17-02 195 196- Removed test for bad context clauses which has been proven wrong 197 198- Minor changes to CRA.C 199 200- Provided Borland C++ 5.5 32 bit make files for use with their free release 201 compiler 202 203- Extra checks incorporated for bad comment description 204 205- Error message text altered 206 207=end= 208