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