File: changelog

package info (click to toggle)
bisonc%2B%2B 6.09.02-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,984 kB
  • sloc: cpp: 9,375; ansic: 1,505; fortran: 1,134; makefile: 1,062; sh: 526; yacc: 84; lex: 60
file content (1904 lines) | stat: -rw-r--r-- 80,263 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
bisonc++ (6.09.02)

  * When %token-path (or option) is sepcified then the tokens.h file
    containing an empty Tokens_ enum in the struct Tokens so ParserBase can be
    derived from Tokens. At each new run of bisonc++ tokens.h is redefined, so
    it's always up-to-date.
  * The parser generates ./tokens/tokens.h containing its (own) 'struct
    Tokens' (rebis OK).
  * The 'build' script has a new argument 'strip', the -P option is removed.
  * When compiling source files the C++ standard to use is rerieved from the
    ICMAKE_CPPSTD environment variable (e.g., ICMAKE_CPPSTD=--std=c++26).

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 24 Aug 2025 10:42:19 +0200

bisonc++ (6.09.01)

  * Specifying %token-path now also works in combination with the
    %target-directory directive (or option)
  * scanner/lex.cc checks for non-empty d_matched strings when calling
    d_matched.back() (required when using g++ >= 15.0.0).
  * The usage info now also mentions the token options.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 27 Mar 2025 19:03:48 +0100

bisonc++ (6.09.00)

  * The manual shows the GPL V 3 (conditions for using bisonc++) which is now
    included in the source distribution (the file ./LICENCE).

  * End-of-line comment used in %polymorphic %type specifications is now 
    ignored.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 16 May 2024 09:21:26 +0200

bisonc++ (6.08.00)

  * The check for non-empty rules by the %prec directive was too strict.
    It now checks whether the rule's rhs is empty (cf. rules/rules.f:
    Rules::empty()).

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 24 Mar 2024 12:23:03 +0100

bisonc++ (6.07.00)

  * 6.07 is only used by Debian.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 01 Mar 2024 11:03:44 +0100

bisonc++ (6.06.00)

  * The %prec directive requires a non-empty grammar rule.

  * When using %polymorphic the Tag_ enum defines a last tag END_TAG_, and the
    parserbase.h declares the (empty) class EndPolyType_. END_TAG_ and
    EndPolyType_ are used by the default constructor of the Meta_::SType
    class, avoiding undefined SType objects that caused segmentation faults
    when the %prec directive was used in an empty grammar rule.

  * States having SR and/or RR conflicts now count 1 SR conflict when multiple
    LA-tokens are removed from the same production rule, and count 1 RR
    conflict when an earlier rule is kept, dropping one or more later rules.
    However, when RR conflicts are observed, Bisonc++ will report which rules
    are dropped from which states.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 15 Oct 2023 09:41:02 +0200

bisonc++ (6.05.00)

  * Changed 'typedef' declarations into 'using' declarations, also in
    generated parsers

  * Updated the documentation accordingly

  * Removed the superfluous flag -pthread from INSTALL.im

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 23 Mar 2023 10:01:08 +0100

bisonc++ (6.04.05)

  * Ready for libbobcat6

  * Added 'c++std' defining the c++ standard to use for
    compilation. Compilation commands also use -Werror

  * Repaired errors caused by warnings and -Werror

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 11 Sep 2022 13:06:55 +0200

bisonc++ (6.04.04)

  * Removed -q from bisonc++'s build script

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 26 Jun 2021 14:52:47 +0200

bisonc++ (6.04.03)

  * Added the descriptions of the %token-class, %token-namespace, and
    %token-path directives to the bisonc++input(7) man-page.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 18 Mar 2021 13:50:44 +0100

bisonc++ (6.04.02)

  * Bisonc++'s lexical scanner was generated by flexc++ 2.09.00

  * The .tar.gz extensions were removed from the man-pages' last lines.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 21 Feb 2021 13:35:41 +0100

bisonc++ (6.04.01)

  * Bisonc++'s lexical scanner was generated by flexc++ 2.08.00

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 13 Nov 2020 10:43:27 +0100

bisonc++ (6.04.00)

  * Added options and directives 'token-class', 'token-namespace', and
    'token-path' creating a 'Tokens' class containing the symbolic tokens of
    the generated grammar on a separate file. Starting with this release
    bisonc++'s own source files refer to the file parser/tokens.h, and its
    Scanner class now refers to Tokens::tokenName instead of
    Parser::tokenName.

  * The manual and man-pages were updated accordingly.

  * Updated icmake/findall in line with the icmake(1) man-page

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 21 Mar 2020 15:19:20 +0100

bisonc++ (6.03.00)

  * Polymorphic assignment member functions are explicitly implemented instead
    of using generic template functions. This allows the compiler to perform
    implicit conversions. E.g., when using template assignment operators and a
    polymorphic type INT -> int is defined then the assignment $$ = 'a' is not
    compiled. But if the assignment operators are separately defined for each
    of the polymorphic types the compiler performs the char -> int conversion
    and the assignment is compiled.

  * Fixed a flaw in the overview of bisonc++ options: -L by default uses the
    bisonc++polymorphic.code skeleton, -M by default uses the
    bisonc++polymorphic skeleton.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 13 Jun 2019 12:32:16 +0200

bisonc++ (6.02.05)

  * To avoid type conversion ambiguities when comparing StateTypes flags
    operator& was defined for two StateType values (skeletons/bisonc++.cc)

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 01 Mar 2019 15:45:01 +0100

bisonc++ (6.02.04)

  * The function print() (skeletons/bisonc++.ih; also in generated parser.ih
    files) no longer calls print_(). The function print_() displays tokens if
    the --print-tokens option is specified. However, if that option is
    specified print_() is already called from nextToken_ in parse.cc.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 21 Jan 2019 10:37:30 +0100

bisonc++ (6.02.03)

  * Fixed an off-by-one line error reported by Alex Es.

  * Added #define GNU to INSTALL.im to select either g++ or clang++ (->
    clang++-7). Using g++ by default.

  * Several source files received minor changes to prevent clang++ warnings.

  * Added the directory iuo/ to contain files which are only internally used.
    (currently containing module.modulemap)

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 10 Nov 2018 13:11:47 +0100

bisonc++ (6.02.02)

  * [[fallthrough]] requires a final semicolon (cf. C++ std 20, 10.6.5).
    Bisonc++'s internal and generated code is fixed accordingly.

  * Andreas Beckmann noticed two dangling symlinks below the
    bisonc++-doc/demos directory: fixed in this release. The files
    documentation/man/calculator/scanner/lexer and
    documentation/regression/calculator/scanner/lexer are now copies instead
    of one being a symlink to the other

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 03 Oct 2018 21:39:50 +0200

bisonc++ (6.02.01)

 * Migrated Bisonc++ from Github to Gitlab.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 16 Jun 2018 07:22:42 +0200

bisonc++ (6.02.00)

 *  Starting with version 6.02.00 bisonc++ reserved identifiers no longer end
    in two underscore characters, but in one. This modification was necessary
    because according to the C++ standard identifiers having two or more
    consecutive underscore characters are reserved by the language. In
    practice this could require some minor modifications of existing source
    files using bisonc++'s facilities, most likely limited to changing
    Tokens__ into Tokens_ and changing Meta__ into Meta_.

    The complete list of affected names is:

    Enums:  DebugMode_, ErrorRecovery_, Return_, Tag_, Tokens_;

    Enum values: PARSE_ABORT_, PARSE_ACCEPT_, UNEXPECTED_TOKEN_, sizeofTag_;

    Type / namespace designators: Meta_, PI_, STYPE_;

    Member functions: clearin_, errorRecovery_, errorVerbose_, executeAction_,
        lex_, lookup_, nextCycle_, nextToken_, popToken_, pop_, print_,
        pushToken_, push_, recovery_, redoToken_, reduce_, savedToken_,
        shift_, stackSize_, startRecovery_, state_, token_, top_, vs_,

    Protected data members: d_acceptedTokens_, d_actionCases_, d_debug_,
        d_nErrors_, d_requiredTokens_, d_val_, idOfTag_, s_nErrors_

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 15 May 2018 20:58:45 +0200

bisonc++ (6.01.03)

  * To avoid lintian reports about missing examples the 'examples/'
    directories were renamed to 'demos/'

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 08 Mar 2018 21:00:12 +0100

bisonc++ (6.01.02)

  * Added C++-17 attributes [[maybe_notused]] to bisonc++'s code, and removed
    unused parameters unless required.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 08 Mar 2018 20:16:50 +0100

bisonc++ (6.01.01)

  * Fixed a missing destination for the link to the sources of the rpn
    calculator mentioned in Ch. 6 of the user manual.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 23 Jan 2018 12:59:39 +0100

bisonc++ (6.01.00)

  * Removed std:: in front of thread_local in generated code

  * Removed definitions of the Yodl tr-macro from .yo files: it is a
    predefined macro in Yodl 4.02.00, and is not used in de documentation.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 20 Jan 2018 11:40:25 +0100

bisonc++ (6.00.00)

  * The generated code was rewritten. The protected interface of ParserBase
    and names of parse()-related members in Parser was modified. The names of
    all accessible members in parserbase.h and parser.h now have two trailing
    underscore characters.
    Predefined members in parser.ih no longer have trailing underscores, and
    can be redefined.
    The traditional error(char const *) member in fact never uses its argument
    (and bisonc++ only passed the default "Syntax error" argument). Its
    prototype now no longer defines a parameter.  Here's an overview of
    modified member names/signatures:

        --------------------------------------------------------
        Before 6.00.00               Starting with 6.00.00
        --------------------------------------------------------
        void error(char const *);    void error();

        void exceptionHandler__(...  void exceptionHandler(...

        void errorRecovery();        void errorRecovery__();
        void executeAction(int);     void executeAction__(int);
        void nextToken();            void nextToken__();
        --------------------------------------------------------

                                     added:
                                     ---------------------------
                                     void nextCycle__();
                                     ---------------------------
                                     removed:
                                     ---------------------------
                                     int lookup(bool);
                                     ---------------------------

    When re-generating parsers generated by bisonc++ before version 6.00.00,
    the signatures of the above functions in the file parser.h must be
    hand-modified to reflect the above changes. In addition, the
    implementations of error and exceptionHandler (default implementations
    were provided in parser.ih) must be adapted to their new signatures.

  * Added a warning to skeleton/binsonc++.h that until the #undef instruction
    Parser will be read as ParserBase.

  * With Polymorphic semantic values a tag mismatch is no considered fatal
    anymore if errors were already encountered. In that case the semantic
    value showing a tag mismatch is replaced by the default value of the
    semantic value of the expected polymorphic type.

  * Compilation of bisonc++ now starts with the construction of precompiled
    headers, significantly reducing the compilation time.

  * The state stack elements now consist of two values: the first
    element holds the state index, the second element the semantic value.

  * Added option and directive 'prompt': the generated parser shows a ?-prompt
    at each cycle when processing its input (which should not be provided on
    the standard input stream).

  * `thread-safe' can now also be specified as a directive. Previously it
    could only be specified as option.

  * Documentation was updated to reflect the above modifications

  * The build script now properly recognizes the 'strip' option

  * By default precompiled headers are used. The option -P (cf. log entry
    'bisonc++ (4.12.03)' below) is now opertational.
    Be advised that using -P removes all existing .ih.gch files from the
    directory containing 'main.ih' and from all its immediate subdirectories.

  * Removed the compiler option --std=c++14, since that's by now the default.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 18 May 2017 09:46:19 +0200

bisonc++ (5.03.00)

  * Added a declaration like 'Parser() = default' to the generated parser
    class header file.

  * Added an item about existing constructors and how to add additional
    constructors to parser classes generated by bisonc++

  * Corrected 'see also' references in the man-pages.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 28 Jan 2017 15:12:16 +0100

bisonc++ (5.02.02)

  * Updated the description of the %prec directive.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 24 May 2016 16:33:48 +0530

bisonc++ (5.02.01)

  * Repaired an error in 'build install LOG...'.

  * Verified that 'selection' in 'build install selection' was correctly
    specified.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 18 May 2016 17:34:28 +0530

bisonc++ (5.02.00)

  * The polymorphic semantic values implementation uses a unique_ptr when
    transferring semantic values inside the geerated parser (including
    bisonc++'s own parser). See the documentation for details.

  * Added new option/directive stack-expansion defining the number of elements
    to add to a completely full semantic value stack.

  * Enlarging the semantic value stack does not require copying existing
    semantic values to the enlarged semantic value stack. Either resizing is
    used (when the capacity allows it) or the stored semantic values are moved
    to the enlarged stack, which is then swapped with the parser's semantic
    values stack.

  * More in general: the generated parser itself does not internally copy
    semantic values anymore. Copying is only used in the grammar's action
    blocks .

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 13 May 2016 13:46:18 +0530

bisonc++ (5.01.00)

  * Reimplemented polymorphic semantic values: the Meta__::Base class now is
    a virtual bease class.

  * Some templated operator& functions cannot handle two DebugMode__
    arguments. To prevent compilation errors in those cases a
    DebugMode__ operator&(DebugMode__, DebugMode__) function was added to
    the parserbase-skeleton.

  * The documentation erroneously referred to an undefined --action-cases
    option. Instead, --debug should be used and setDebug(Parser::ACTIONCASES)
    should be called. Code and documentation modified accordingly.

  * Added the script documentation/regression/runone to run a single
    regression test.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 05 May 2016 20:35:39 +0530

bisonc++ (5.00.01)

  * Fixed verbinsert calls: yodl 3.07.01 implements a macro 'verbinsert'
    rendering bisonc++'s own definition superfluous. The new definition
    requires 1 argument, and the old one 2, so the verbinsert calls were
    updated accordingly.

  * Alexander Sedov noticed that line numbers in the default actions were
    incorrect. Line numbers of default actions are now set to the line of the
    '|' or ';' character following the production rule receiving a default
    action block.

  * Updated the 'required' file.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 25 Apr 2016 15:47:27 +0530

bisonc++ (5.00.00)

  * Options/directives:

    The default `default-actions std' option/directive unconditionally adds $$
    = $1 action blocks to non-empty production rules w/o final action blocks

    Added option/directive tag-mismatches. and option
    --polymorphic-code-skeleton (-L).

    The formerly available option --no-default-action-return was renamed to
    default-actions (-d replacing -N), and can now also be used as a
    directive: %default-actions.

    Option --polymorphic-inline-skeleton (-m) is not used anymore and was
    removed.

    The option --include-only has been dropped (although it was mentioned in
    the usage info, it had in fact not been available for quite some time).


  * Implementation:

    Reimplemented handling polymorphic semantic values. shared pointers are no
    longer used. Details: see README.polymorphic-technical and parser/data.cc

    Type specifications in %type directives are verified. With %union the
    check is a simple check whether '\btype\b' is found in the %union spec.

    Mismatches between the types of nonterminals and the types of the first
    elements of their production rules previously resulted in a `type clash of
    default action' warning. Such mismatches are now considered errors.

    After parsing a grammar file only plain warning messages (i.e., without
    file/line info) are issued. Switching to such plain message is now done in
    Parser::cleanup, and no longer in various members of objects being used
    after calling Parser::cleanup().

    Comment (to end-of-line and C-style) can now also be used in polymorphic
    type specifications.

    Renamed the top-level bisonc++.cc and bisonc++.ih files to main.cc and
    main.ih, respectively.

    Using new lexical scanner, built by Flexc++ V2.04.00.


  * Grammar files:

    New dollar-notations ($$(...), _$$, _$i) are available, $<tag>$,
    $<tag>i are not available anymore.


  * API:

    New member: setDebug(DebugMode__), shows the action case
    just before executing the action block.

    The SType::data() member is now obsolete and has been removed.

    The semantic value type STYPE__ (the class Meta__::SType) member `valid()
    const' returns true if its member tag() returns a valid Tag__, otherwise
    it returns false.  False is returned for default constructed STYPE__
    values.  Previous implementations of STYPE__ implemented an undocumented
    member pointer (->) operator for calling get() and data(). This operator
    is no longer available. Instead of -> the member selector operator (.)
    should be used. E.g., stype.get<Tag__::INT>().

    The member SType::emplace (See the 4.13.00 log entry) was renamed to
    SType::assign: it doesn't emplace, but assign. The construction
    $$(-optional arguments-); can be used in action blocks to do
    $$.emplace<Tag of the rule's semantic value>(-optional arguments-);


  * Documentation:

    Bisonc++'s man-page and manual was updated.

    Added new man-pages bisonc++input.7, describing the organization of
    bisonc++'s grammar file(s), and bisonc++api.3, describing the API of the
    software generated by bisonc++


  * Regression tests:

    The extensive calculator regression test declared a RuleValue(unsigned)
    constructor, but implemented a RuleValue(size_t) constructor, which does
    not compile on amd64 architectures. The regression test was modified by
    changing the constructor's size_t parameter type into unsigned.

    All regression test grammar files contain the directive
        %default-actions quiet
    preventing warning messages about adding default $$ = $1 action blocks to
    production rules without action blocks.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 13 Apr 2016 11:03:54 +0530

bisonc++ (4.13.01)

  * slightly modified the icmake build scripts to prevent multiple inclusions
    of some of the installed files.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 18 Dec 2015 13:41:08 +0100

bisonc++ (4.13.00)

  * 'build install' supports an optional LOG: argument: the (relative or
    absolute) path to a installation log file. The environment variable
    BISONCPP is no longer used.

  * Updated the usage info displayed by `./build', altered the procedure to
    install the files at their final destinations.

  * Following a suggestion made by gendx the polymorphic class Semantic now
    defines a variadic template constructor, allowing Semantic objects
    (and thus SType::emplace) to be initialized (c.q. called) using any set of
    argument types that are supported by Semantic's DataType. Also, the
    (internally used) classes HasDefault and NoDefault are now superfluous and
    were removed (from skeletons/bisonc++polymorphic and
    skeletons/bisonc++polymorphic.inline).

  * Adapted the icmake build files to icmake 8.00.04

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 13 Dec 2015 16:29:41 +0100

bisonc++ (4.12.03)

  * Kevin Brodsky observed that the installation scripts used 'chdir' rather
    than 'cd'. Fixed in this release.

  * Kevin Brodsky also observed that the combined size of all precompiled
    headers might exceed some disks capacities. The option -P was added to the
    ./build script to prevent the use of precompiled headers.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 05 Oct 2015 20:17:56 +0200

bisonc++ (4.12.02)

  * Refined the 'build uninstall' procedure

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 04 Oct 2015 16:27:18 +0200

bisonc++ (4.12.01)

  * The implementation of the ./build script was improved.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 01 Oct 2015 18:41:45 +0200

bisonc++ (4.12.00)

  * Added 'build uninstall'. This command only works if, when calling one of
    the 'build install' alternatives and when calling 'build uninstall' the
    environment variable BISONCPP contains the (preferably absolute) filename
    of a file on which installed files and directories are logged.
    Note that 'build (dist)clean' does not remove the file pointed at by the
    BISONCPP environment variable, unless that file happpens to be in a
    directory removed by 'build (dist)clean'. See also the file INSTALL.
    Defining the BISONCPP environment variable as ~/.bisoncpp usually works
    well.

  * Guillaume  Endignoux offered several valuable suggestions:
    - Classes may not have default constructors, but may still be used if
      the default $$ = $1 action is not used. This can now be controlled using
      option --no-default-action-return (-N). When this option is specified
      the default $$ = $1 assignment of semantic values when returning from an
      action block isn't provided. When this option is specified then Bisonc++
      generates a warning for typed rules (non-terminals) whose action blocks
      do not provide an explicit $$ return value.
    - To assign a value to $$ a member `emplace' is provided, expecting the
      arguments of the type represented by $$.
    - In cases where a $x.get<Tag::NAME>() cannot return a reference to a
      value matching tt(Tag::NAME) and the associated type does not provide a
      default constructor this function throws an exception reporting
        STYPE::get<tag>: no default constructor available

  * Bisonc++'s documentation about using polymorphic values was modified, in
      particular the information about how the various polymorphic values can
      be assigned and retrieved.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 29 Sep 2015 11:48:18 +0200

bisonc++ (4.11.00)

  * Cleanup of the manual, in particular how lexical scanners can access the
    various values of polymorphic semantic value types (cf. section
    `Polymorphism and multiple semantic values'). The man-page was modified
    accordingly.

  * The manual-stamp file is no longer used. Calling 'build manual' now always
    (re)builds the manual. The same holds true for 'build man'.

  * The in version 4.08.00 removed const members were reinstalled, as they are
    required in situations where, e.g., a function defines an STYPE__ const *
    parameter.

  * Added 'build uninstall'. This command only works if, when calling one of
    the 'build install' alternatives and when calling 'build uninstall' the
    environment variable BISONCPP contains the (preferably absolute) filename
    of a file on which installed files and directories are logged.
    Note that 'build (dist)clean' does not remove the file pointed at by the
    BISONCPP environment variable, unless that file happpens to be in a
    directory removed by 'build (dist)clean'. See also the file INSTALL.
    Defining the BISONCPP environment variable as ~/.bisoncpp usually works
    well.

  * The INSTALL file was updated to the current state of affairs.

  * Removed the file parser/reader, which contained code generated by
    bison. It was nowhere used and I simply couldn't see why it was added to
    the parser's directory at all.

  * Removed the file 'distribution' from this directory's parent directory. It
    is not used, and was superseded by the file sourcetar (both files are
    Internal Use Only).

  * Removed the file documentation/bison.ps.org/bison.ps.gz: it harbored an
    compression error (already at the very first bisonc++ release), and the
    bison documentation in html format remains part of the bisonc++
    distribution.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 30 Aug 2015 11:13:57 +0200

bisonc++ (4.10.01)

  * Production rules of non-terminal symbols that immediately follow dot
    positions of existing items are added as new (implied) items to that
    state's set of items. The --construction option no longer shows the
    indices of such newly added items as this information can easily be
    obtained from the provided construction output.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 17 May 2015 16:54:13 +0200

bisonc++ (4.10.00)

  * FOLLOW sets are not used when analyzing LALR(1) grammars. The class
    FollowSet and all operations on follow sets were removed.

  * The LA set computation algorithm was reimplemented, a description of the
    new algorithm is included in the manual and in several source files, in
    particular state/determinelasets.cc. Both the state items' LA computation
    and the LA propagation algorithms were completely reimplemented.

  * Rules causing conflicts (i.e., conflict remaining after processing %left,
    %right, %nonassoc and/or %expect) as wel as the involved LA characters re
    briefly mentioned immediately following the SR/RR conflict-counts.

  * The class Symtab now uses an unordered_map rather than a mere (ordered)
    map.

  * The class-dependency diagram (README.class-setup) was updated to reflect
    the latest changes. Same for the file CLASSES which is used by the build
    script.

  * Added the file `required' listing the non-standard software that is
    required to build bisonc++ and its user guide / man-page

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 17 May 2015 13:13:55 +0200

bisonc++ (4.09.02)

  * Wilko Kuiper reported an annoying bug in the skeleton lex.in, causing the
    compilation of parser.hh to fail. This release fixes that bug.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 28 Jul 2014 16:46:35 +0200

bisonc++ (4.09.01)

  * $#$#@ !! Forgot to update the help-info (bisonc++ --help) to reflect the
    new -D option. Now fixed.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 11 May 2014 09:05:48 +0200

bisonc++ (4.09.00)

  * Added option --no-decoration (-D), suppressing the actions that are
    normally associated with matched rules.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 10 May 2014 11:58:46 +0200

bisonc++ (4.08.01)

  * Members of the class `Generator' generating a substantial amount of code
    now read skeleton files instead of strings which are defined in these
    functions' bodies.

  * Added new skeleton files for the abovementioned functions. The names of
    these skeleton files are identical to the matching filenames in
    generator/, but use extensions `.in'

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 31 Mar 2014 11:45:41 +0200

bisonc++ (4.08.00)

  * std::shared_ptr doesn't slice: virtual ~Base() and dynamic_casts removed
    from the generated parserbase.h files

  * %polymorphicimpl removed from skeleton/bisonc++, matching files from
    Generator

  * The implementation of polymorphic semantic values was simplified.  Const
    members were removed from polymorphic semantic value classes; ReturnType
    get<Tag__>() const and ReturnType data<Tag__>() const are no longer
    required and were removed.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 02 Mar 2014 11:51:38 +0100

bisonc++ (4.07.02)

  * Changed 'class SType into struct SType in skeletons/polymorphic, since all
    its members are public anyway.

  * Class header and class implementation header files are no longer
    overwritten at bisonc++ runs.

  * Running './build program' no longer by default uses -g (see INSTALL.im)

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 17 Feb 2014 13:43:16 +0100

bisonc++ (4.07.01)

  * Fixed segfaults (encountered with 4.07.00) caused by for-statement range
    specification errors.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 16 Feb 2014 15:46:45 +0100

bisonc++ (4.07.00)

  * Generating files is prevented when errors in option/declaration
    specifications are encountered. All errors in option/declaration
    specifications (instead of just the first error that is encountered)
    are now reported.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 14 Feb 2014 14:53:33 +0100

bisonc++ (4.06.00)

  * Repaired buggy handling of some options/directives

  * Prevented spurious option warnings sometimes generated when options aren't
    specified

  * Action blocks associated with rules may contain raw string literals.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 09 Feb 2014 11:31:14 +0100

bisonc++ (4.05.00)

  * Added the directive %scanner-class-name specifying the class name of the
    scanner to use in combination with the %scanner directive

  * re-installed the --namespace option (see the next item)

  * Warnings are issued when options or directives are specified wchich are
    ignored because the target file (e.g., parser.h, parser.hh) already
    exists. These warnings are not issued for parse.cc and parserbase.h, which
    are by default rewritten at each bisonc++ run. These warnings are issued
    for the `class-header', `class-name', `baseclass-header', `namespace',
    `scanner', `scanner-class-name' and `scanner-token-function'
    options/directives.

  * The --force-class-header and --force-implementation-header options were
    removed: 'rm ...' should be used instead.

  * man-page and manual updated

  * CLASSES class dependencies updated, icmconf's USE_ALL activated

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 10 Aug 2013 10:16:17 +0200

bisonc++ (4.04.01)

  * Removed the possibility to specify path names for the --baseclass-header,
    --class-header, --implementation-header, and --parsefun-source options
    (and corresponding directives). Path names for generated files should be
    specified using the target-directory option or directive.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 27 May 2013 12:12:58 +0200

bisonc++ (4.04.00)

  * Repaired %target-directory not recognizing path-characters and not
    removing surrounding "-delimiters.

  * The --baseclass-header, --class-header, --implementation-header, and
    --parsefun-source options (and corresponding directives) now also accept
    path-specifications.

  * The man-page and manual have been updated accordingly.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 26 May 2013 14:22:50 +0200

bisonc++ (4.03.00)

  * Bisonc++ before 4.03.00 failed to notice the --debug option. Now repaired.

  * Added the rpn example to the manual, and repaired typos in the manual.

  * Options/directives that can only accept file names (like
    --baseclass-header) no longer accept path names.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 31 Mar 2013 11:25:49 +0200

bisonc++ (4.02.01)

  * Parser-class header files (e.g., Parser.h) and parser-class internal
    header files (e.g., Parser.hh) generated with bisonc++ < 4.02.00 require
    two hand-modifications when used in combination with bisonc++ >= 4.02.00:

    In Parser.h, just below the declaration
        void print__();
    add:
        void exceptionHandler__(std::exception const &exc);

    In Parser.hh, assuming the name of the generated class is `Parser', add
    the following member definition (if a namespace is used: within the
    namespace's scope):
        inline void Parser::exceptionHandler__(std::exception const &exc)
        {
            throw;  // re-implement to handle exceptions thrown by actions
        }
    This function may be re-implemented, see the man-page for further details.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 11 Mar 2013 16:50:26 +0100

bisonc++ (4.02.00)

  * Added member Parser::exceptionHandler(std::exception const &exc), handling
    std::exceptions thrown from the parser's action blocks.

  * The --namespace option was removed, since it does not affect once
    generated parser.h files, resulting in inconsistent namespace
    definitions.

  * Include guards of parser.h and parserbase.h include the namespace
    identifier, if %namespace has been used.

  * Provided print()'s implementation in bisonc++.hh with a correct
    class-prifix (was a fixed Parser::)

  * Textual corrections of the man-page and manual.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 07 Mar 2013 09:57:07 +0100

bisonc++ (4.01.02)

  * Bisonc++ returns 0 for options --help and --version

  * Catching Errno exceptions is replaced by catching std::exception
    exceptions

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 24 Jan 2013 08:14:59 +0100

bisonc++ (4.01.01)

  * The following #defines in INSTALL.im can be overruled by defining
    identically named environment variables:
        CXX      defines the name of the compiler to use. By default `g++'
        CXXFLAGS the options passed to the compiler.
                 By default `-Wall --std=c++0x -O2 -g'
        LDFLAGS  the options passed to the linker. By default no options are
                 passed to the linker.
        SKEL     the directory where the skeletons are stored

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 15 Jul 2012 14:44:46 +0200

bisonc++ (4.01.00)

  * Repaired a long-existing bug due to which some S/R conflicts are solved by
    a reduce, where a shift should have been used. See
    README.states-and-conflicts for details.

  * Removed line-numbers from final warning/error messages

  * This version requires Bobcat >= 3.00.00

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 03 May 2012 21:21:47 +0200

bisonc++ (4.00.00)

  * Implemented the %polymorphic directive. Bisonc++ itself uses %polymorphic
    to implement its own polymorphic semantic values; man-page and manual
    extended with sections about polymorphic semantic values.

  * Implemented the %weak-tags directive. By default %polymorphic declares
    an `enum class Tag__', resulting in strongly typed polymorphic tags. If
    the traditional tag declaration is preferred, the %weak-tags directive can
    be specified in addition to %polymorphic, resulting in the declaration
    `enum Tag__'.

  * The previously used class spSemBase and derivatives (e.g., SemBase,
    Semantic) are now obsolete and the directories sembase and spsembase
    implementing these classes were removed.

  * The Parser's inline functions are all private and were moved to the
    parser's .hh file. This doesn't affect current implementations, as
    parser.h and parser.hh are only generated once, but newly generated
    parsers no longer define the Parser's inline members (error, print__, and
    lex) in parser.h but in parser.hh

  * @@ can be used (instead of d_loc__) to refer to a rule's location stack
    value.

  * The generated parser now uses unordered_maps instead of maps.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 13 Apr 2012 14:10:12 +0200

bisonc++ (3.01.00)

  * The `%print-tokens' directive was accidentally omitted from
    3.00.00. Repaired in this release.

  * Starting this release all release tags (using names that are identical to
    the version number, so for this release the tag is 3.01.00) are signed to
    allow authentication.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 27 Feb 2012 13:33:20 +0100

bisonc++ (3.00.00)

  * This release's scanner was built by flexc++

  * Option handling was separated from parsing, following the method also used
    in flexc++: a class Options holds and maintains directives and options
    that are used in multiple points in bisonc++'s sources. The Parser passes
    directive specifications to set-functions defined by the class Options.

  * The parser's semantic value handling recevied a complete overhaul. Unions
    are no longer used; instead a light-weight polymorphic base class in
    combination with some template meta programming was used to handle the
    semantic values. See sembase/sembase.h for a description of the appproach.

  * Options and directives were rationalized/standardized. See the man-page
    for details. Grammar specification files should no longer use %print, but
    should either use %print-tokens or %own-tokens (or the equivalent
    command-line options).

  * NOTE: Existing Parser class interfaces (i.e. parser.h) must be
    (hand-) modified by declaring a private member

        void print__();

    See the man-page and/or manual for details about print__.

  * All regression tests (in documentation/regression) are now expecting
    that flexc++ (>= 0.93.00) is available.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 20 Feb 2012 16:32:01 +0100

bisonc++ (2.09.04)

  * Replaced many for_each calls and lamda functions by range-based for-loops

  * Used g++-4.7

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 04 Jan 2012 12:26:01 +0100

bisonc++ (2.09.03)

  * Replaced all FnWrap* calls by lambda function calls

  * `build' script now recognizes CXXFLAGS and LDFLAGS for, resp. g++ and ld
     flags. Default values are set in INSTALL.im, as before.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 23 Jun 2011 10:06:02 +0200

bisonc++ (2.09.02)

  * Repaired flaws that emerged with g++ 4.6

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 02 May 2011 16:30:43 +0200

bisonc++ (2.9.1)

  * Documentation requires >= Yodl 3.00.0

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 10 Nov 2010 10:30:51 +0100

bisonc++ (2.9.0)

  * Changed Errno::what() call to Errno::why()

  * Removed dependencies on Msg, using Mstreams and Errno::open
    instead. Consequently, bisonc++ depends on at least Bobcat 2.9.0

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 30 Oct 2010 22:05:30 +0200

bisonc++ (2.8.0)

  * Grammars having states consisting of items in which a reduction from a
    (series of) non-terminals is indicated have automatically a higher
    precedence than items in which a shift is required. Therefore, in these
    cases the shift/reduce conflict is solved by a reduce, rather than a
    shift.  See README.states-and-conflicts, srconflict/visitreduction.cc and
    the Bisonc++ manual, section 'Rule precedence' for examples and further
    information.  These grammars are now showing S/R conflicts, which remained
    undetected in earlier versions of Bisonc++. The example was brought to my
    attention by Ramanand Mandayam (thanks, Ramanand!).

  * To the set of regression tests another test was added containing a grammar
    having two S/R conflicts resulting from automatically selecting reductions
    rather than shifts. This test was named 'mandayam'.

  * Output generated by --verbose and --construction now shows in more detail
    how S/R conflicts are handled. The Bisonc++ manual also received an
    additional section explaining when reduces are used with certain S/R
    conflicts.

  * Previously the documentation stated that --construction writes the
    construction process to stdout, whereas it is written to the same file as
    used by --verbose. This is now repaired.

  * The meaning/use of the data members of all classes are now described at
    the data members in all the classes' header files.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 08 Aug 2010 15:15:46 +0200


bisonc++ (2.7.0)

  * $-characters appearing in strings or character constants in action blocks
    no longer cause warnings about incorrect or negative $-indices

  * Repaired incorrect interpretation of '{' and '}' character constants
    in action blocks.

  * Added option --print (directive %print) displaying tokens received by the
    scanner used by the generated parser.

  * Added option --scanner-token-function (directive %scanner-token-function)
    specifying the name of the function called from the generated parser's
    lex() function.

  * The build script received an additional option: `build parser' can be used
    to force the reconstruction of parser/parse.cc and parser/parserbase.h

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 31 Mar 2010 15:54:52 +0200

bisonc++ (2.6.0)

  * Reorganized Bisonc++'s classes: public inheritance changed to private
    where possible, all virtual members now private. The parser->parserbase
    inheritance remains as-is (public) because parserbase essentially is a
    element of parser, defining types and the token-enum that must also be
    available to the users of the generated parser class. The alternative,
    defining types and tokens in the parser class would make it impossible to
    adapt the tokens without rewriting the parser class. Another alternative,
    defining the types and enum in a separate namespace imposes further
    restrictions on the users of the parser class, which is also considered
    undesirable. Public inheritance is now only used by NonTerminal, Terminal,
    and Symbol as these classes override virtual functions either in Symbol or
    in Element and the derived classes must all be usable where their base
    classes are expected (in accordance with the LSP).

bisonc++ (2.5.1)

  * Token values written to parserbase.h are (again) suppressed when their
    values exceed the previous token's value by 1. All values were shown
    because writer/insertToken erroneously didn't receive a size_t
    &lastTokenValue anymore, but a size_t lastTokenValue.

  * Removed Terminal's operator<< from the namespace std

  * Now using initializer_lists to initialize static data (generator/data.cc
    main.cc)

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 08 Mar 2010 20:51:22 +0100

bisonc++ (2.5.0)

  * Renamed parser/spec/aux to parser/spec/auxiliary to avoid file/device
    confusion on some systems

  * Removed inclusions of superfluous bobcat/fnwrap1c headers

  * Replaced all FnWrap1c calls by FnWrap::unary

  * Added check for d_currentRule == 0 in rules/addproduction. d_currentRule
    could be a 0-pointer, in which case addproduction shouldn't do anything.
    d_currentRule is a 0-pointer in, e.g. the erroneous grammar submitted
    by Justin Madru about which he rightfully remarked that even though
    erroneous bisonc++ shouldn't crash on it. This is his stripped-down
    grammar:
        %token X x_list
        %%
        x_list:
            x_list X
        |
            X
        ;

bisonc++ (2.4.8)

  * Recompilation using option --std=c++0x, required because of Bobcat's use
    of C++0x syntax.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 05 Sep 2009 17:25:56 +0200

bisonc++ (2.4.7)

  * Streams processed by an `#include' directive were not properly closed,
    resulting in a memory leak. The Scanner's code was modified to plug that
    leak.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 06 May 2009 09:36:02 +0200

bisonc++ (2.4.6)

  * Changed the build script to allow finer control over construction and
    installation of parts of the package

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 24 Mar 2009 19:16:10 +0100

bisonc++ (2.4.5)

  * DateTime (generator/filter.cc) adapted due to change of Bobcat's DateTime
    interface

bisonc++ (2.4.4)

  * typed terminal tokens (as used in, e.g., %type<fieldname>) were not
    included in the parserbase's Tokens__ enum since their symbol type is left
    at UNDETERMINED. tokens used in type lists can also be non-terminals, in
    which case their symbol type is changed accordingly. In 2.4.4. a symbol is
    selected for inclusion in the Tokens__ enum if it's a terminal token but
    also if it's a symbol that has been used in the grammar although its
    symbol type is left at UNDETERMINED (in generator/selectsymbolic.cc)

bisonc++ (2.4.3)

  * repaired segfault generated when the name of a non-existing file was
    passed to bisonc++

bisonc++ (2.4.2)

  * scanner/yylex.cc removed from the distribution: flex will create a new
    Scanner::yylex() member at each new distribution to prevent
    incompatibilities between earlier yylex.cc and later FlexLexer.h files.

bisonc++ (2.4.1)

  * Implemented minor changes related to requirements imposed upon the code by
    g++ 4.3.

  * Generator/filter now uses the Datetime::rfc2822(), implmented since Bobcat
    1.17.1

bisonc++ (2.4.0)

  * Fixed missing entry in multiple reduction state tables:

    State tables of multiple reduction states (e.g., REQ_RED states) were
    constructed incompletely. E.g., for the grammar:

        expr:
            name
        |
            ident '(' ')'
        |
            NR
        ;
        name:
            IDENT
        ;
        ident:
            IDENT
        ;

    the state following IDENT is either a reduce to 'name' or 'ident': the
    corresponding table was filled incompletely, using the number of the next
    token where the next token for the reduction should have been be
    mentioned, and an empty field in the table itself.

    NOTE that in these situations d_val__ MUST be set by the scanner, as the
    reduction requires another token, and only once that token is available
    the reduction to, e.g., 'ident' can be performed, but at that time
    YYText() has already gone and is inaccessible in an action block like:

        ident:
            IDENT
            {
                $$ = d_scanner.YYText();
            }
        ;

  * The error recovery procedure in skeleton's bisonc++.cc skeleton file was
    reimplemented. As a side effect the internally used function
    'ParserBase::checkEOF()' could be removed.

  * #line directives in rule action blocks now correctly identify the grammar
    specification file in which the action block was defined.

  * Extra empty line at the end of state transition tables were removed

  * Files generated by Bisonc++ report Bisonc++'s version and the file
    construction time (conform RFC 2822) as C++ comment in their first line.

bisonc++ (2.3.1)

  * Fixed character returned in escaped constants. E.g., at '\'' the \ was
    returned instead of the ' character.

  * Implemented the default assignment of $1 to $$ at the begin of action
    rules. This required another Block member: saveDollar1(), called for
    nested blocks. The function saveDollar1() prepends the code to save $$
    from $1 of the rule in which the nested block was defined. In
    share/bisonc++ the function executeAction() no longer saves the semantic
    value's TOS value as d_val__ but the rule's $1 value.

  * To allow extraction of the archive under Cygwin (Windows) the directory
    parser/spec/aux was renamed to parser/spec/auxiliary (as Windows can't
    handle files or directories named 'aux').

bisonc++ (2.3.0)

  * Dallas A. Clement uncovered a bug in handling semantic values, due to
    which semantic values of tokens returned by some grammars got lost. He
    intended to use a polymorphic semantic value class to pass different kinds
    of semantic values over from the scanner to the parser. This approach was
    the foundation of another regression test example, now added to the set of
    regression tests and described in Bisonc++'s manual. It will also appear
    as an annotated example in the C++ Annotations. Thanks, Dallas, for
    uncovering and reporting that bug.

  * Dallas also noted that mid-rule actions could not refer to semantic values
    of rule components that had already been seen by Bisonc++. This has been
    fixed in this release. Dallas, thanks again!

  * Earlier versions of Bisonc++ used the class OM (Output Mode) to define the
    way objects like (Non)Terminal tokens and (Non)Kernel Items were inserted
    into ostreams. Using OM did not result in the clarity of design I
    originally had in mind. OM is now removed, and instead relevant classes
    support a function `inserter()' allowing sources to specify (passing
    `inserter()' a pointer to a member function) what kind of insertion they
    need. For the Terminal class there is also a manipulator allowing sources
    to insert a insertion-member directly into the ostream.

  * New option: --insert-stype
    The generated parser will now also display semantic values when %debug is
    specified if the new command-line option --insert-stype is provided. Of
    course, in this case users should make sure that the semantic value is
    actually insertable (e.g., by providing an overloaded operator
    std::ostream &std::operator<<(std::ostream &out, STYPE__ const &semVal).

bisonc++ (2.2.0)

  * Repaired a bug in parsing action blocks of rules appearing only in
    versions 2.1.0 and 2.0.0. In these versions compound statements defined
    within the action blocks result in bisonc++ erroneously reporting an error
    caused by bisonc++'s scanner (scanner/lexer) interpreting the closing
    curly brace as the end of the action block.

  * Repaired a flaw in terminal/terminal1.cc causing a segfault when using
    bisonc++ compiled with g++ 4.2.1

bisonc++ (2.1.0)

  * In the skeleton bisonc++.cc $insert 4 staticdata is followed by $insert
    namespace-open. Since `staticdata' defined s_out if %debug is requested,
    it could be defined outside of the user's namespace (defined by
    %namespace). Repaired by defining s_out after (if applicable) opening the
    namespace (in Generator::namespaceOpen(), called from $insert
    namespace-open).

bisonc++ (2.0.0)

  * Rebuilt Bisonc++'s parser and scanner, creating Bisonc++'s parser from the
    file parser/grammar. Initially Bisonc++ 1.6.1 was used to create the
    Parser class header and parsing function. Once Bisonc++ 2.0.0 was
    available, the grammar file was split into various subfiles (see below)
    and Bisonc++ 2.0.0 was used to implement its own parsing function.  As a
    direct consequence of using a grammar rather than a hand-implemented
    parsing function quite a few members of the Parser and Scanner class were
    reimplemented, new members were added and some could be removed.  Parts of
    other classes (Rules, Block) were significantly modified as well.

  * Minor hand-modifications may be necessary with previously designed code
    using identifiers that are defined by the parser class generated by
    Bisonc++. The following names have changed:

    -------------------------------------------------------------------------
    old name                        change into new name:           Protected
    -------------------------------------------------------------------------
    Parser::LTYPE                   Parser::LTYPE__
    Parser::STYPE                   Parser::STYPE__
    Parser::Tokens                  Parser::Tokens__

    Parser::DEFAULT_RECOVERY_MODE   Parser::DEFAULT_RECOVERY_MODE__ Yes
    Parser::ErrorRecovery           Parser::ErrorRecovery__         Yes
    Parser::Return                  Parser::Return__                Yes
    Parser::UNEXPECTED_TOKEN        Parser::UNEXPECTED_TOKEN__      Yes
    Parser::d_debug                 Parser::d_debug__               Yes
    Parser::d_loc                   Parser::d_loc__                 Yes
    Parser::d_lsp                   Parser::d_lsp__                 Yes
    Parser::d_nErrors               Parser::d_nErrors__             Yes
    Parser::d_nextToken             Parser::d_nextToken__           Yes
    Parser::d_state                 Parser::d_state__               Yes
    Parser::d_token                 Parser::d_token__               Yes
    Parser::d_val                   Parser::d_val__                 Yes
    Parser::d_vsp                   Parser::d_vsp__                 Yes
    -------------------------------------------------------------------------

    The symbols marked `Protected' can only occur in classes that were derived
    from the parser class generated by Bisonc++. Unless you derived a class
    from the parser class generated by Bisonc++ these changes should not
    affect your code. The first three symbols may have been used in other
    classes as well (for an example now using LTYPE__ and STYPE__ see the file
    documentation/regression/location/scanner/scanner.h).

    Note that the only required modification in all these cases is to append
    two underscores to the previously defined identifiers.

  * The grammar file may now be split into several grammar specification
    files. The directive %include may be specified to include grammar files
    into other grammar files (much like the way C/C++'s #include preprocessor
    directive operates). Starting point of the grammar recognized by Bisonc++
    2.0.0 is the file parser/grammar, using subfiles in the parser/spec
    directory. The file README.parser documents the grammar specification
    files in some detail.

  * Previous releases implicitly enforced several restrictions on the
    identifiers used for the grammar's tokens. These restrictions resulted
    from name collisions with names defined in the parser's base class. While
    the restrictions cannot be completely resolved without giving up backward
    compatibility, they can be relieved greatly. Tokens cannot be ABORT,
    ACCEPT, ERROR, clearin, debug, error and setDebug. Furthermore, tokens
    should not end in two underscores (__).

  * Implemented various new options and directives:

    - the option --analyze-only, merely analyzing the provided grammar, not
      writing any source or header files.

    - the option --error-verbose as well as the directive %error-verbose
      dumping the state-stack when a syntactic error is reported.

    - the option --include-only, catenating all grammar files in their order
      of processing to the standard output stream (and terminating).

    - the option --max-inclusion-depth, defining the maximum number of nested
      grammar files (default: 10).

    - the option --required-tokens (also available as the directive
      %required-tokens). Error recovery is now configurable in the sense that
      a configurable number of tokens must have been successfully processed
      before new error messages can be generated (see
      documentation/manual/error/intro.yo)

    - the option --scanner-debug writing the contents and locations (in
      scanner/lexer) of matched regular expresions as well as the names/values
      of returned tokens to the standard error stream.

    - the option --skeleton-directory. This option overrides the default
      location of the director containing the skeleton files. In turn it is
      overridden by the options specifying specific skeleton files (e.g.,
      --baseclass-skeleton).

    - the option --thread-safe. If specified, Bisonc++ will generate code that
      is thread-safe. I.e., no static data will be modified by the parse()
      function. As a consequence, all static data in the file containing the
      parse() function are defined as const. Manpage and manual adapted
      accordingly.

  * As a convenience, filenames in the grammar files may optionally be
    surrounded by double quotes ("...")  or pointed brackets <...>. Delimiting
    pointed brackets are only kept with the %scanner and %baseclass-preinclude
    directives, in all other cases they are replaced by double quotes and a
    warning is displayed.

  * Token Handling in the generated parsing member function was improved: the
    share/bisonc++.cc skeleton now defines pushToken__() and popToken__() as
    the standard interface to the tiny two-element token stack. The member
    nextToken() was redesigned.

  * Documentation was extended and updated. The Bisonc++ manual now contains an
    extensive description of the grammar-analysis process as implemented in
    Bisonc++ (see documentation/manual/algorith.yo). All new options and
    directives, as well as the token-name requirements are covered by the
    man-page and by the manual.

  * Various other repairs and cosmetic changes:
    - The --construction option as implemented in Bisonc++ 1.6.1 showed the
      FIRST set where the FOLLOW set was labeled. Repaired: now the FOLLOW set
      is actually displayed.
    - The --show-filenames option now shows `(not requested)' as default for
      d_verboseName instead of `-' if no --verbose was requested.
    - The --construction option no longer displays the `LA expanded' value
      from the state's descriptions since it's always 0
    - The --class-name option was not actually mentioned in the set of
      recognized long options: repaired.
    - The %type directive now allows you to specify semantic type associations
      of terminal tokens as well.
    - The %token, %left, %right and %nonassoc directives now all use the same
      syntax (as they always should have). These directives all define
      terminal tokens
    - Added `rebuild' command to the `build' script to recreate the parser

bisonc++ (1.6.1)

  * Changed the error recovery procedure preventing stack underflows with
    unrecoverable input errors.

  * Added protected parser base class member checkEOF(), terminating the
    parse() member's activities (man-page adapted accordingly).

  * Changed small support member functions in the share/bisonc++.cc skeleton
    file into inline members, some were moved to share/bisonc++base.h

  * The skeleton files now use `\@' as baseclass-flag rather than `@'. The
    baseclass-flag is now defined as a static data member in Generator. This
    change prevents the `@' in e-mail addresses from being changed into the
    parser's class name.

  * Removed the class Support since it is now covered by Bobcat's (1.15.0)
    default implementation of FBB::TableSupport

bisonc++ (1.6.0)

  * NOTE: THE PROTOTYPE OF THE PARSER'S lookup() FUNCTION CHANGED. IT IS NOW:
    int lookup(bool recovery);
    OLD parser.h HEADER FILES CAN BE REUSED AFTER ADDING THE PARAMETER
    bool recovery

  * Segfaults were caused by some grammars due to an erroneous index in
    (formerly state/setitems.cc) state/adddependents.cc, where idx,
    representing an index in d_itemVector was used to index an element in
    d_nextVector (for which the index variable `nextIdx' should have been
    used. Repaired.

  * For some unknown reason, priority and association rules were not
    implemented in earlier versions of bisonc++. Consequently priority and
    association values of rules were left at their default values. This was
    repaired by defining the function Rules::updatePrecedences(), which
    defines priorities of productions as either their values assigned by a
    %prec specification or as the priority of their first terminal token.

  * The accepting State no longer has default reductions. It doesn't need them
    since EOF__ in those states terminates the parser. Accepting States
    now have search sentinels, allowing the parser to do proper error
    recovery.

  * The implementation of the shift/reduce algorithm and error handling in
    share/bisonc++.cc was modified, now using bitflags indicating
    state-requirements (e.g., requiring a token, having a default reduction,
    having an `error' continuation, etc.). Also, the functions nextToken() and
    lookup() were reimplemented.

  * The share/bisonc++.cc parser function skeleton's initial comment was
    improved.

  * The function state/state1.cc contained the superfluous intialization
    d_itemVector(0). The line has been removed.

  * The class `Rules' lacked facilities to detect properly whether a grammar
    file without rules was specified. Solved by defining a Rules constructor
    and an additional member indicating whether there weree any rules at all.

  * In grammar files, rules must now be terminated by a semicolon. Previous
    versions did not explicitly check this. Also, improperly formed
    character-tokens are now recognized as errors.

  * In correspondence with bison, the default verbose grammar output file is
    now called <grammar filename>.output rather than <parsing function base
    name>.output

  * The description of the State information shown when --construction is
    specified was clarified.

  * The debug output generated by parse.cc was improved.

  * The setDebug() member is now a public member. Manual page and
    documentation changed accordingly.

  * The description of the setItems() algorithm in state/setItems was
    improved.

  * The `build' script was given an additional command (installprog) to
    install just the program and the skeletons.

  * Added several missing headers fixing gcc/g++ 4.3 problems

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 09 Apr 2007 14:54:46 +0200

bisonc++ (1.5.3)

  * Using Bobcat's FnWrap* classes instead of Bobcat's Wrap* classes

  * The INSTALL.im file has received a (by default commented out)
    #define PROFILE. By activating this define, bisonc++ is compiled with
    support for the gprof profiler. This define should not be activated for
    production versions of bisonc++

  * Not released.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 17 Feb 2007 20:44:19 +0100

bisonc++ (1.5.2)

  * It turns out that the modification in 1.5.1. is not necessary. The
    compilation problems mentioned there were the result of a presumed small
    g++ compiler bug. A workaround is implemented in Bobcat 1.12.1, preventing
    the bug from occurring. In fact, this release has the same contents as
    release 1.5.0. Release 1.5.1. can be considered obsolete. It is available
    from the svn repository only.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 30 Nov 2006 17:05:09 +0100

bisonc++ (1.5.1)

  * Building the usage support program failed because of implied dependencies
    on the bobcat library, resulting from superfluously including bobcat.h in
    the documentation/usage/usage.cc program source.  This is solved by
    setting bisonc++.h's include guard identifier just before inserting
    ../../usage.cc in the documentation/usage/usage.cc program source.

bisonc++ (1.5.0)

  * The algorithms for lookahead propagation and detection of grammars not
    deriving sentences have been redesigned and rewritten. The previously used
    algorithm propagating lookaheads suffered from spurious reduce/reduce
    conflicts for some grammars (e.g., see the one in
    documentation/regression/icmake1). Also, 1.4.0 choked on a (fairly)
    complex grammar like the one used by icmake V 7.00. These problems are now
    solved, and comparable problems should no longer occur.

    The layout and organization of the output has been changed as well. Now
    there are basically three forms of verbose output: No verbose output, in
    which the file *.output is not written, standard verbose output, in which
    an overview of the essential parts of the grammar is written to the file
    *.output, and --construction, in which case all lookaheadsets, as well as
    the first and follow sets are written to *.output.

    Multiple new classes were added, and some previously existing classes were
    removed. See the file README.class-setup and the file CLASSES for details.

    The man-page and manual were adapted on minor points.

bisonc++ (1.4.0)

  * It turned out that in the previous versions, S/R conflicts were also
    produced for empty default reductions. Now detectSR() checks whether there
    is one empty reduction. If so, no S/R conflicts are possible in that
    state. Instead a SHIFT (which is already the default solution of a S/R
    conflict) is performed in these situations. So, now for all
    tokens for which a known continuation state exist the known continuation
    state is selected; for all other tokens the default reduction (reducing to
    its associated state) is selected. See state/detectsr.cc for details.

    Since the above change also represents a change of algorithm, the
    subversion was incremented. I added a sub-subversion to have a separate
    level of version-numbers for minor modifications.

    The documentation/regression/run script did not properly return to its
    initial working directory, and it called a test that no longer
    existed. Both errors have been repaired.

    Some leftover references to the Academic Free License were replaced by
    references to the GPL.

    The previously used scripts below make/ are obsolete and were removed from
    this and future distributions. Icmake should be used instead, for which a
    top-level script (build) and support scripts in the ./icmake/ directory
    are available. Icmake is available on a great many architectures. See the
    file INSTALL (and INSTALL.im, replacing the previously used INSTALL.cf)
    for further details.

    All plain `unsigned' variables were changed to `size_t'

bisonc++ (1.03-1) unstable; urgency=low

  * License changed to the GNU GENERAL PUBLIC LICENSE. See the file
    `copyright'.

    According to the manual page, the debug-output generated by parsers
    created using the --debug option should be user-controllable through the
    `setDebug()' member. These feature is now actually implemented.

    The usage info now correctly shows the -V flag as a synonym for the
    --verbose option.

    From now on this file will contain the `upstream' changes. The Debian
    related changes are in changelog.Debian.gz

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 19 Jul 2006 13:12:39 +0200

bisonc++ (1.02) unstable; urgency=low

  * Following suggestions made by George Danchev, this version was compiled by
    the unstable's g++ compiler (version >= 4.1), which unveiled several flaws
    in the library's class header files. These flaws were removed (i.e.,
    repaired).

    In order to facilitate compiler selection, the compiler to use is defined
    in the INSTALL.cf file.

    The debian control-files (i.e., all files under the debian subdirectory)
    were removed from the source distribution, which is now also named in
    accordance with the Debian policy. A diff.gz file was added.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu,  6 Jul 2006 12:41:43 +0200

bisonc++ (1.01) unstable; urgency=low

  * Synchronized the version back to numbers-only, adapted the debian
    standards and the required bobcat library in the debian/control file.
    No implementation changes as compared to the previous version, but I felt
    the need to join various sub-sub-versions back to just one standard
    version.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 26 Jun 2006 12:11:15 +0200

bisonc++ (1.00a) unstable; urgency=low

  * Debian's Linda and lintian errors, warnings and notes processed. No
    messages are generated by linda and lintian in this version.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 28 May 2006 14:26:03 +0200

bisonc++ (1.00) unstable; urgency=low

  * Bisonc++ Version 1.00 has changed markedly as compared to its predecessor,
    bisonc++ 0.98.510.

    The main reason for upgrading to 1.00 following a year of testing the 0.98
    series is that the grammar analysis and lookahead propagation algorithms
    as used in bisonc++ 0.98.510 were either too cumbersome and contained some
    unfortunate errors.

    The errors were discovered during my 2005-2006 C++ class, where some
    students produced grammars which were simple, but were incorrectly
    analyzed by bisonc++ 0.98. It turned out that the lookahead (LA)
    propagation contained several flaws. Furthermore, a plain and simple bug
    assigned the last-used priority to terminal tokens appearing literally in
    the grammar (i.e., without explicitly defining them in a %token or
    comparable directive). A simple, but potentially very confusing bug.

    At the cosmetic level, the information produced with the --construction
    option was modified, aiming at better legibility of the construction
    process.

    The `examples' directory was reduced in size, moving most examples to a
    new directory `regression', which now contains a script `run' that can be
    used to try each of the examples below the `regression' directory. Some of
    the examples call `bison', so in order to run those examples `bison' must
    be installed as well. It usually is.

    A minor backward IN-compatibility results from a change in prototype of
    some private parser member functions. This should only affect exising
    Parser.h header files. Simply replacing the `support functions for
    parse()' section shown at the end of the header file by the following
    lines should make your header file up-to-date again. Note that bisonc++
    does not by itself rewrite Parser.h to prevent undoing any modifications
    you may have implemented in the parser-class header file:

        // support functions for parse():
            void executeAction(int ruleNr);
            void errorRecovery();
            int lookup();
            void nextToken();

    Please note that this version depends on bobcat 1.7.1 or beyond. If you
    compile bobcat yourself, then you may want to know that bobcat's Milter
    and Xpointer classes are not used by bisonc++, so they could optionally be
    left out of bobcat's compilation.


 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun,  7 May 2006 15:10:05 +0200

bisonc++ (0.98.510) unstable; urgency=low

  * When no %union has been declared, no $$ warnings are issued anymore about
    non-exisiting types;
    When no %union has been declared a $<type>i or $<type>$ warning is issued
    about non-exisiting types.

    The State table (in the generated parse.cc file) containing `PARSE_ACCEPT'
    was created with a `REDUCE' indication for grammars whose start symbol's
    production rules were non-repetitive. This was repaired in
    state/writestatearray.cc by setting the (positive) non-reduce indication
    for states using shifts and/or the accept state.

    The logic in writeStateArray() was modifed: a separate ShiftReduce::Status
    variable is now used to store the possible actions: SHIFT, REDUCE or
    ACCEPT. The tables show `SHIFTS' if a state uses shifts; `ACCEPTS' if a
    state contains PARSE_ACCEPT; and `REDUCE' otherwise.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 21 Mar 2006 20:47:49 +0100

bisonc++ (0.98.500) unstable; urgency=low

  * Handling of $<type>i and $<type>$ repaired, added the
    %negative-dollar-indices directive.

    $<type> specifications were not properly parsed. Instead of $<type>i or
    $<type>$ constructions like $i<type> and $$<type> were parsed, which is
    contrary to the manual's specification. The function parsing the $-values
    is defined in parser/handledollar.cc.

    The handling of negative $-indices is improved. Negative $-indices are
    used when synthesizing attributes. In that context, $0 is useful, since it
    refers to the nonterminal matched before the current rule is starting to
    be used, allowing rules like `vardef: typename varlist ' where `varlist'
    inherits the type specification defined at `typename'.

    In most situations indices are positive. Therefore bisonc++ will warn when
    zero or non-positive $-indices are seen. The %negative-dollar-indices
    directive may be used to suppress these warnings.

    $-indices exceeding the number of elements continue to cause an error.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun,  5 Mar 2006 13:59:08 +0100

bisonc++ (0.98.402) unstable; urgency=low

  * links against bobcat 1.6.0, using bobcat's new Arg:: interface

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 26 Dec 2005 19:25:42 +0100

bisonc++ (0.98.400) unstable; urgency=low

  * state/writestatearray.cc adds {} around individual union values to allow
    warningless compilation of the generated parse.cc file by g++-4.0.

    bisonc++ is now itself too compiled by g++-4.0.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 18 Nov 2005 22:46:06 +0100

bisonc++ (0.98.007) unstable; urgency=low

  * Added a README.flex file giving some background information about the
    provided implementation of the lexical scanner (bisonc++/scanner/yylex.cc)

    Modified the compilation scripts: bisconc++/flex/FlexLexer.h is now
    included by default. This FlexLexer.h file is expected by
    bisonc++/scanner/yylex.cc and by the Scanner class.

    Simplified some compilation scripts.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri,  9 Sep 2005 11:42:24 +0200

bisonc++ (0.98.006) unstable; urgency=low

  * Removed the dependency on `icmake'. No change of functionality
    See the instructions in the `INSTALL' file when you want to compile and
    install `bisonc++' yourself, rather than using the binary (.deb)
    distribution.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat,  3 Sep 2005 17:42:29 +0200

bisonc++ (0.98.005) unstable; urgency=low

  * Removed the classes Arg, Errno, Msg and Wrap1, using the Bobcat library's
    versions of these classes from now on. No feature-changes.

    Added minor modifications to the `build' script.

    Annoying Error: The function `ItemSets::deriveAction()' did not recognize
    the `ACCEPT' action, so some (most ?) grammars could not be properly
    recognized. I applied a quick hack: if an action isn't `shift' or
    `reduce', it can be `accept', resulting in acceptance of the grammar. This
    solves the actual problem, but I'll have to insepct this in a bit more
    detail. For now, it should work ok.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 22 Aug 2005 13:05:28 +0200

bisonc++ (0.98.004) unstable; urgency=low

  * When new lookahead set elements are added to existing states,
    d_recheckState in itemsets/lookaheads.cc (ItemSets::checkLookaheads()) was
    reassigned to the state index whose lookaheadset was enlarged. However, if
    that happened for existing state `i' and then, during the same
    state-inspection, for state `j' where j > i, then the recheck would start
    at `j' rather than `i'. This problem was solved by giving d_recheckState
    only a lower value than its current value.

    With R/R conflicts involving `ACCEPT' reductions (with, e.g., `S_$: S .'),
    ACCEPT is selected as the chosen alternative. See State::setReduce()
    (state/setreduce.cc). Since this matches with the `first reduction rule'
    principle, it should be ok.

    %stype specifications may consist of multiple elements: the remainder of
    the line beyond %stype is interpreted as the type definition. The
    specification should (therefore) not contain comment or other characters
    that are not part of the actual type definition. The man-page is adapted
    accordingly. Same holds true for the %ltype directive

    Added a check whether the grammar derives a sentence
    (itemsets/derivesentence.cc). If not, a fatal error is issued. This
    happens at the end of the program's actions, and at this point files
    etc. have already been generated. They are kept rather than removed for
    further reference. Grammars not deriving sentences should probably not be
    used.

    The original Bison documentation has been converted to a Bisonc++ user
    guide. Furthermore, a html-converted manual page is now available under
    /usr/share/doc/bisonc++/man

    The `calculator' example used in the man-page is now under
    /usr/share/doc/bisonc++/man/calculator

    Bisonc++ is distributed under the Academic Free License, see the file
    COPYING in /usr/share/doc/bisonc++

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun,  7 Aug 2005 13:49:07 +0200

bisonc++ (0.98.003) unstable; urgency=low

  * Incomplete default State constructor now explicitly defined, prevents
    the incidental erroneous rapporting of conflicts for some states.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 26 May 2005 07:21:20 +0200

bisonc++ (0.98.002) unstable; urgency=low

  * The Wrap1 configurable unary predicate template class replaces various
    other templates (WrapStatic, Wrap, Pred1Wrap). No further usage or
    implementation changes/modifications.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 22 May 2005 15:27:19 +0200

bisonc++ (0.98.001) unstable; urgency=low

  * This is a complete rewrite of the former bisonc++ (0.91) version. The
    program bisonc++ is now a C++ program, producing C++ sources, using the
    algorithm for creating LALR-1 grammars as outlined by Aho, Sethi and
    Ullman's (1986) `Dragon' book. The release number will remain 0.98 for a
    while, and 0.98.001 holds the initial package, new style. Also see the
    man-page, since some things have been changed (augmented) since the
    previous version. No dramatic changes in the grammar specification method:
    Bisonc++ still uses bison's way to specify grammars, but some features,
    already obsolete in bisonc++ 0.91 were removed.

    Also note my e-mail address: the U. of Groningen's official policy now is
    to remove department specific information, so it's `@rug.nl' rather than
    `@rc.rug.nl', as used before.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 16 May 2005 13:39:38 +0200

bisonc++ (0.91) unstable; urgency=low

  * Added several missing short options (like -B etc) to the getopt() function
    call. I forgot to add them to the previous version(s). Internally, all old
    C style allocations were changed to C++ style allocations, using operators
    new and delete. Where it was immediately obvious that a vector could be
    used, I now use vectors. The internally used types `core' `shifts' and
    'reductions' (types.h) now use a vector data member rather than an int [1]
    member, which is then allocated to its proper (I may hope) size when the
    structs are allocated.

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Sat, 19 Feb 2005 10:21:58 +0100

bisonc++ (0.90) unstable; urgency=low

  * Command-line options now override matching declarations specified in the
    grammar specification file.

    All %define declarations have been removed. Instead their first arguments
    are now used to specify declarations. E.g., %parser-skeleton instead of
    %define parser-skeleton.

    All declarations use lower-case letters, and use only separating hyphens,
    no underscores. E.g., %lsp-needed rather than %define LSP_NEEDED
    The declaration %class-name replaces the former %name declaration

    All yy and YY name prefixes of symbols defined by bisonc++ have been
    removed. The parser-state `yydefault' has been renamed to `defaultstate'.

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Sun,  6 Feb 2005 12:50:40 +0100

bisonc++ (0.82) unstable; urgency=low

  * Added d_nError as protected data member to the base class. Missed it
    during the initial conversion. d_nErrors counts the number of parsing
    errors. Replaces yynerrs from bison(++)

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Sat, 29 Jan 2005 18:58:24 +0100

bisonc++ (0.81) unstable; urgency=low

  * Added the option --show-files to display the names of the files that are
    used or generated by bisonc++.

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Fri, 28 Jan 2005 14:50:48 +0100

bisonc++ (0.80) unstable; urgency=low

  * Completed the initial debian release. No changes in the software.

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Fri, 28 Jan 2005 14:30:05 +0100

bisonc++ (0.70-1) unstable; urgency=low

  * Initial Release.

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Thu, 27 Jan 2005 22:34:50 +0100