-
Notifications
You must be signed in to change notification settings - Fork 0
/
javacc-release-notes.html
800 lines (798 loc) · 34.4 KB
/
javacc-release-notes.html
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
<!DOCTYPE html>
<html>
<head>
<link rel='shortcut icon' href='favicon.ico' type='image/x-icon'/ >
<title>JavaCC Help</title>
<link rel="stylesheet" href="common-styles.css">
<link rel="stylesheet" href="getting-started-styles.css">
<link rel="stylesheet" href="javacc-release-notes-styles.css">
<script src="jquery-1.11.3.min.js"></script>
</head>
<body>
<!--template-->
<div id="alldropdowns">
<div id="logo-container">
<a href="https://javacc.org"><img id="logo" src="https://javacc.org/new-javacc-logo.png"></a>
</div>
<div class="dropdown">
<button onclick="window.location = 'https://javacc.org/download';" class="dropbtn"><div class="drpdntext">DOWNLOAD</div></button>
</div>
<div class="dropdown">
<button onclick="window.location = 'https://javacc.org/doc';" class="dropbtn"><div class="drpdntext">DOCUMENTATION</div></button>
</div>
<div class="dropdown">
<button onclick="window.location = 'https://javacc.org/contact';" class="dropbtn"><div class="drpdntext">CONTACT</div></button>
</div>
</div>
<script src="expand-picture.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-81345115-1', 'auto');
ga('send', 'pageview');
</script>
<br><br><br><br>
<!--end-->
<!--helpbuttons-->
<table id="help-layout">
<tr>
<td id="cell1">
<script src="color-buttons.js"></script>
<div id="button-container">
<div class="help-button"><button id="main-btn" class="thebutton">JavaCC Help</button></div>
<div id="inside-help">
<div class="help-button"><button onclick="window.location = 'https://javacc.org/getting-started';" class="thebutton level1">Getting Started</button></div>
<div class="help-button"><button onclick="window.location = 'https://javacc.org/doc';" class="thebutton level1">Documentation</button></div>
<div class="help-button"><button onclick="window.location = 'https://javacc.org/javacc-release-notes';" class="thebutton level1">JavaCC Release Notes</button></div>
<div class="help-button"><button onclick="window.location = 'https://javacc.org/jjtree-release-notes';" class="thebutton level1">JJTree Release Notes</button></div>
<div class="help-button"><button onclick="window.location = 'https://javacc.org/jjdoc-release-notes';" class="thebutton level1">JJDoc Release Notes</button></div>
<div class="help-button"><button onclick="window.location = 'https://javacc.org/contact';" class="thebutton level1">Mailing List</button></div>
<div class="help-button"><button onclick="showTutorials();" class="thebutton level1">▶ Tutorials</button></div>
<div id="tutorial-buttons">
<div class="help-button"><button onclick="window.location = 'https://javacc.org/tutorials/lookahead';" class="thebutton level1">Lookahead</button></div>
<div class="help-button"><button onclick="window.location = 'https://javacc.org/tutorials/tokenmanager';" class="thebutton level1">Token Manager</button></div>
<div class="help-button"><button onclick="window.location = 'https://javacc.org/tutorials/errorrecovery';" class="thebutton level1">Error Recovery</button></div>
<div class="help-button"><button onclick="window.location = 'https://javacc.org/tutorials/charstream'" class="thebutton level1">Character Stream</button></div>
</div>
</div>
</div>
</td>
<!--end-->
<td id="cell2">
<div class="bottomhalf">
<div id="notes">
<h1>JavaCC™: Release Notes</h1>
<br>
THIS FILE IS A COMPLETE LOG OF ALL CHANGES THAT HAVE TAKEN PLACE SINCE<br>
THE RELEASE OF VERSION 0.5 IN OCTOBER, 1996.<br>
<br>
AS NOTED HERE, DURING THE TRANSITION FROM 0.5 TO 4.0, THERE HAVE BEEN<br>
THE FOLLOWING INTERMEDIATE VERSIONS:<br>
<br>
0.6.-10<br>
0.6.-9<br>
0.6.-8<br>
0.6(Beta1)<br>
0.6(Beta2)<br>
0.6<br>
0.6.1<br>
0.7pre1<br>
0.7pre2<br>
0.7pre3<br>
0.7pre4<br>
0.7pre5<br>
0.7pre6<br>
0.7pre7<br>
0.7<br>
0.7.1<br>
0.8pre1<br>
0.8pre2<br>
1.0<br>
1.2<br>
2.0<br>
2.1<br>
3.0<br>
3.1<br>
3.2<br>
4.0<br>
4.1<br>
4.2<br>
6.0<br>
<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 6.0<br>
<br>
Added support for C++ code generation - for almost all features - except ERROR_REPORTING. See the javacc-c++-releasenotes.html document for details.<br>
<br>
Added a new option:<br>
-OUTPUT_LANGUAGE - string value - "java" and "c++" are two currently allowed values<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 4.2<br>
-------------------------------------------------------------------<br>
<br>
Release 4.2 is a maintenance release, incorporating a number of bug<br>
fixes and enhancements. For a complete list, please see the<br>
issue tracker:<br>
<br>
https://javacc.dev.java.net/issues/buglist.cgi?component=javacc&field0-0-0=target_milestone&type0-0-0=equals&value0-0-0=4.2<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 4.1<br>
-------------------------------------------------------------------<br>
<br>
Release 4.1 is a maintenance release, incorporating a number of bug<br>
fixes and enhancements. For a complete list, please see the<br>
issue tracker:<br>
<br>
https://javacc.dev.java.net/issues/buglist.cgi?component=javacc&field0-0-0=target_milestone&type0-0-0=equals&value0-0-0=4.1<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 4.0<br>
-------------------------------------------------------------------<br>
<br>
See the bug list in issue tracker for all the bugs fixed in this release.<br>
JJTree and JavaCC both now support 1.5 syntax.<br>
We now support accessing token fields in the grammar like: s=<ID>.image<br>
Convenient constructors for passing encoding directly to the grammar<br>
Tabsetting is now customizable.<br>
SimpleNode can now extend a class using the NODE_EXTENDS option.<br>
JAVACODE and BNF productions take optional access modifiers.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 3.2<br>
-------------------------------------------------------------------<br>
New regular expression kind with range operator where the upperbound is<br>
optional, meaning just minimum, no max - (<RE>){n,}<br>
Fix for issue 41 where it takes exponential time to minimumSize<br>
<br>
MODIFICATIONS IN VERSION 3.2<br>
-------------------------------------------------------------------<br>
Added the LICENSE file to the installation root directory.<br>
Fixed issues #: 10, 11, 13, 2, 4, 5, 7<br>
In particular, the generated code should now compile with JDK 1.5 (Tiger)<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 3.1<br>
-------------------------------------------------------------------<br>
<br>
Open source with BSD license.<br>
Fixed the copyright text in the sourcefiles.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 3.0 (as compared to version 2.1)<br>
-------------------------------------------------------------------<br>
<br>
No GUI version anymore.<br>
<br>
Fixed a bug in handling string literals when they intersect some<br>
regular expression.<br>
<br>
Split up initializations of jj_la1_* vars into smaller methods so<br>
that there is no code size issue. This is a recently reported bug.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 2.1 (as compared to version 2.0)<br>
-------------------------------------------------------------------<br>
<br>
Added a new option - KEEP_LINE_COLUMN default true.<br>
<br>
If you set this option to false, the generated CharStream will not<br>
have any line/column tracking code. It will be your responsibility<br>
to do it some other way. This is needed for systems which don't care<br>
about giving error messages etc.<br>
<br>
-------------------------------------------------------------------<br>
<br>
API Changes: JavaCC no longer generates one of the 4 stream classes:<br>
<br>
ASCII_CharStream<br>
ASCII_UCodeESC_CharStream<br>
UCode_CharStream<br>
UCode_UCodeESC_CharStream<br>
<br>
In stead, it now supports two kinds of streams:<br>
<br>
SimpleCharStream<br>
JavaCharStream<br>
<br>
Both can be instantiated using a Reader object.<br>
<br>
SimpleCharStream just reads the characters from the Reader using the<br>
read(char[], int, int) method. So if you want to support a specific<br>
encoding - like SJIS etc., you will first create the Reader object<br>
with that encoding and instantiate the SimpleCharStream with that<br>
Reader so your encoding is automatically used. This should solve a<br>
whole bunch of issues with UCode* classes that were reported.<br>
<br>
JavaCharStream is pretty much like SimpleCharStream, but it also does<br>
\uxxxx processing as used by the Java programming language.<br>
<br>
Porting old grammars:<br>
<br>
Just replace Stream class names as follows -<br>
<br>
if you are using ASCII_CharStream or UCode_CharStream,<br>
change it to SimpleCharStream<br>
<br>
if you are using ASCII_UCodeESC_CharStream or UCode_UCodeESC_CharStream,<br>
change it to JavaCharStream<br>
<br>
The APIs remain the same.<br>
<br>
Also, the CharStream interface remains the same. So, if you have been using<br>
USER_CHAR_STREAM option, then you don't need to change anything.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 2.0 (as compared to version 1.2)<br>
-------------------------------------------------------------------<br>
<br>
Added CPP grammar to examples directory (contributed by Malome Khomo).<br>
<br>
-------------------------------------------------------------------<br>
<br>
GUI is now available to run JavaCC. You can control all aspects of<br>
JJTree and JavaCC (except creating and editing the grammar file)<br>
through this GUI.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Desktop icons now available on a variety of platforms so you can<br>
run JavaCC by double clicking the icon.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Bash on NT support improved.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Uninstaller included.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed some minor bugs.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 1.2 (as compared to version 1.0)<br>
-------------------------------------------------------------------<br>
<br>
Moved JavaCC to the Metamata installer and made it available for<br>
download from Metamata's web site.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Added Java 1.2 grammars to the examples directory.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Added repetition range specifications for regular expressions.<br>
You can specify exact number of times a particular re should<br>
occur or a {man, max} range, e.g,<br>
<br>
TOKEN:<br>
{<br>
< TLA: (["A"-"Z"]){3} > // Three letter acronyms!<br>
<br>
|<br>
<br>
< DOS_FILENAME: (~[".", ":", ";", "\\"]) {1,8}<br>
( "." (~[".", ":", ";", "\\"]){1,3})? ><br>
// An incomplete spec for the DOS file name format<br>
}<br>
<br>
The translation is right now expanding out these many number of times<br>
so use it with caution.<br>
<br>
-------------------------------------------------------------------<br>
<br>
You can now specify actions/state changes for EOF. It is right now<br>
very strict in that it has to look exactly like:<br>
<br>
<*> TOKEN:<br>
{<br>
< EOF > { action } : NEW_STATE<br>
}<br>
<br>
which means that EOF is still EOF in every state except that now<br>
you can specify what state changes if any or what java code<br>
if any to execute on seeing EOF.<br>
<br>
This should help in writing grammars for processing C/C++ #include<br>
files, without going through hoops as in the old versions.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 1.0 (as compared to version 0.8pre2)<br>
-------------------------------------------------------------------<br>
<br>
Fixed bugs related to usage of JavaCC with Java 2.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Many other bug fixes.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 0.8pre2 (as compared to version 0.8pre1)<br>
-------------------------------------------------------------------<br>
<br>
Mainly bug fixes.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 0.8pre1 (as compared to version 0.7.1)<br>
-------------------------------------------------------------------<br>
<br>
Changed all references to Stream classes in the JavaCC code itself and<br>
changed them to Reader/Writer.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Changed all the generated *CharStream classes to use Reader instead of<br>
InputStream. The names of the generated classes still say *CharStream.<br>
For compatibility reasons, the old constructors are still supported.<br>
All the constructors that take InputStream create InputStreamReader<br>
objects for reading the input data. All users parsing non-ASCII inputs<br>
should continue to use the InputStream constructors.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Generate inner classes instead of top level classes where appropriate.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 0.7.1 (as compared to version 0.7)<br>
-------------------------------------------------------------------<br>
<br>
Fixed a bug in the handling of empty PARSER_BEGIN...PARSER_END<br>
regions.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a bug in Java1.1noLA.jj - the improved performance Java grammar.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a spurious definition that was being generated into the parser<br>
when USER_TOKEN_MANAGER was set to true.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 0.7 (as compared to version 0.7pre7)<br>
-------------------------------------------------------------------<br>
<br>
Fixed the error reporting routines to delete duplicate entries from<br>
the "expected" list.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Generated braces around the "if (true) ..." construct inserted<br>
by JavaCC to prevent the dangling else problem.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Added code to consume_token that performs garbage collections of<br>
tokens no longer necessary for error reporting purposes.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a bug with OPTIMIZE_TOKEN_MANAGER when there is a common prefix<br>
for two or more (complex) regular expressions.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a JJTree bug where a node annotation #P() caused a null pointer<br>
error.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Only generate the jjtCreate() methods if the NODE_FACTORY option is<br>
set.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a bug where the name of the JJTree state file was being used in<br>
the declaration of the field.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Updated the performance page to demonstrate how JavaCC performance<br>
has improved since Version 0.5.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 0.7pre7 (as compared to version 0.7pre6)<br>
-------------------------------------------------------------------<br>
<br>
Added an option CACHE_TOKENS with a default value of false. You<br>
can generate slightly faster and (it so happens) more compact<br>
parsers if you set CACHE_TOKENS to true.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Improved time and space requirements as compared to earlier<br>
versions - regardless of the setting of CACHE_TOKENS.<br>
<br>
Performance has improved roughly 10% (maybe even a little more).<br>
Space requirements have reduced approximately 30%.<br>
<br>
It is now possible to generate a Java parser whose class file is<br>
only 28K in size. To do this, run JavaCC on Java1.1noLA.jj with<br>
options ERROR_REPORTING=false and CACHE_TOKENS=true.<br>
<br>
And over the next few months, there is still places where space<br>
and time can be trimmed!<br>
<br>
-------------------------------------------------------------------<br>
<br>
The token_mask arrays are completely gone and replaced by bit<br>
vectors.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Nested switch statements have been flattened.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a bug in the outputting of code to generate a method<br>
<br>
jjCheckNAddStates(int i)<br>
<br>
calls to which are generated, but not the method.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Generating the `static' keyword for the backup method of the<br>
UCode*.java files when STATIC flag is set.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 0.7pre6 (as compared to version 0.7pre5)<br>
-------------------------------------------------------------------<br>
<br>
Extended the generated CharStream classes with a method to adjust the<br>
line and column numbers for the beginning of a token. Look at the C++<br>
grammar in the distribution to see an example usage.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed the JavaCC front-end so that error messages are given with line<br>
numbers relative to the original .jjt file if the .jj file is generated<br>
by pre-processing using jjtree.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Removed support for old deprecated features:<br>
<br>
. IGNORE_IN_BNF can no longer be used. Until this version, you<br>
would get a deprecated warning message if you did use it.<br>
<br>
. The extra {} in TOKEN specifications can no longer be used. Until<br>
this version, you would get a deprecated warning message if your<br>
did use it.<br>
<br>
-------------------------------------------------------------------<br>
<br>
ParseError is no longer supported. It is now ParseException. Please<br>
delete the existing generated files for ParseError and ParseException.<br>
The right ParseException will automatically get regenerated.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Completed step 1 in getting rid of the token mask arrays. This<br>
occupies space and is also somewhat inefficient. Essentially,<br>
replaced all "if" statements that test a token mask entry with<br>
faster "switch" statements. The token mask array still exist for<br>
error reporting - but they will be removed in the next step (in<br>
the next release). As a result, we have noticed improved parser<br>
speeds (up to 10% for the Java grammar).<br>
<br>
As a consequence of doing step 1, but not step 2, the size of the<br>
generated parser has increased a small amount. When step 2 is<br>
completed, the size of the generated parser will go down to be even<br>
smaller than what it was before.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Cache tokens one step ahead during parsing for performance reasons.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Made the static token mask fields "final". Note that the token<br>
mask arrays will go away in the next release.<br>
<br>
-------------------------------------------------------------------<br>
<br>
The Java 1.1 grammar was corrected to allow interfaces nested within<br>
blocks. The JavaCC grammar was corrected to fix a bug in its<br>
handling of the ">>>=" operator.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a bug in the optimizations of the lexical analyzer.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Many changes have been made to JJTree. See the JJTree release<br>
notes for more information.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 0.7pre5 (as compared to version 0.7pre4)<br>
-------------------------------------------------------------------<br>
<br>
Fixed a bug with TOKEN_MGR_DECLS introduced in 0.7pre4.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Enhanced JavaCC input grammar to allow JavaCC reserved words in<br>
Java code (such as actions). This too was disallowed in 0.7pre4<br>
only and has been rectified.<br>
<br>
-------------------------------------------------------------------<br>
<br>
The JavaCC+JJTree grammar is now being offered to our users. You<br>
can find it in the examples directory.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed an array index out of bounds bug in the parser - that sometimes<br>
can happen when a non-terminal can expand to more than 100 other<br>
non-terminals.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a bug in generating parsers with USER_CHAR_STREAM set to true.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Created an alternate Java 1.1 grammar in which lookaheads have been<br>
modified to minimize the space requirements of the generated<br>
parser. See the JavaGrammars directory under the examples directory.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Provided instructions on how you can make your own grammars space<br>
efficient (until JavaCC is improved to do this). See the<br>
JavaGrammars directory under the examples directory.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Updated all examples to make them current. Some examples had become<br>
out of date due to newer versions of JavaCC.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Updated the VHDL example - Chris Grimm made a fresh contribution.<br>
This seems to be a real product quality example now.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed bugs in the Obfuscator example that has started being used<br>
for real obfuscation by some users.<br>
<br>
-------------------------------------------------------------------<br>
<br>
The token manager class is non-final (this was a bug).<br>
<br>
-------------------------------------------------------------------<br>
<br>
Many changes have been made to JJTree. See the JJTree release<br>
notes for more information.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed all token manager optimization bugs that we know about.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed all UNICODE lexing bugs that we know about.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed an array index out of bounds bug in the token manager.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 0.7pre4 (as compared to version 0.7pre3)<br>
-------------------------------------------------------------------<br>
<br>
The only significant change for this version is that we incorporated<br>
the Java grammar into the JavaCC grammar. The JavaCC front end is<br>
therefore able to parse the entire grammar file intelligently rather<br>
than simple ignore the actions.<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 0.7pre3 (as compared to version 0.7pre2)<br>
-------------------------------------------------------------------<br>
<br>
WE HAVE NOT ADDED ANY MAJOR FEATURES TO JAVACC FOR THIS PRERELEASE.<br>
WE'VE FOCUSED MAINLY ON BUG FIXES. BUT HERE IS WHAT HAS CHANGED:<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed the JavaCC license agreement to allow redistributions of example<br>
grammars.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a couple of bugs in the JavaCC grammar.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed an obscure bug that caused spurious '\r's to be generated<br>
on Windows machines.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Changed the generated *CharStream classes to take advantage of the<br>
STATIC flag setting. With this (like the token manager and parser)<br>
the *CharStream class also will have all the methods and variables to<br>
be static with STATIC flag.<br>
<br>
-------------------------------------------------------------------<br>
<br>
A new option OPTIMIZE_TOKEN_MANAGER is introduced. It defaults to<br>
true. When this option is set, optimizations for the TokenManager, in<br>
terms of size *and* time are performed.<br>
<br>
This option is automatically set to false if DEBUG_TOKEN_MANAGER is<br>
set to true.<br>
<br>
The new option OPTIMIZE_TOKEN_MANAGER might do some unsafe<br>
optimization that can cause your token manager not to compile or run<br>
properly. While we don't expect this to happen that much, in case it<br>
happens, just turn off the option so that those optimizations will not<br>
happen and you can continue working. Also, if this happens, please<br>
send us the grammar so we can analyze the problem and fix JavaCC.<br>
<br>
-------------------------------------------------------------------<br>
<br>
A String-valued option OUTPUT_DIRECTORY is implemented. This can be<br>
used to instruct JavaCC to generate all the code files in a particular<br>
directory. By default, this is set to user.dir.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a minor bug (in 0.7pre2) in that the specialToken field was not<br>
being set before a lexical action for a TOKEN type reg. exp.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Added a toString method to the Token class to return the image.<br>
<br>
<br>
-------------------------------------------------------------------<br>
*******************************************************************<br>
-------------------------------------------------------------------<br>
<br>
MODIFICATIONS IN VERSION 0.7pre2 (as compared to version 0.7pre1)<br>
<br>
-------------------------------------------------------------------<br>
<br>
AS USUAL, KEEP IN MIND THAT THIS IS A PRERELEASE THAT WE HAVE NOT<br>
TESTED EXTENSIVELY. THERE ARE A FEW KNOWN BUGS THAT ARE STILL PRESENT<br>
IN THIS VERSION. QUALITY CONTROL FOR PRERELEASES ARE SIGNIFICANTLY<br>
LOWER THAN STABLE RELEASES - I.E., WE DON'T MIND THE PRESENCE OF BUGS<br>
THAT WE WOULD FEEL EMBARRASSED ABOUT IN STABLE RELEASES.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Main feature release for 0.7pre2 is a completely redone JJTree. It<br>
now bootstraps itself. See the JJTree release notes for more<br>
information.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Error recovery constructs have been modified a bit from 0.7pre1. The<br>
parser methods now throw only ParseException by default. You can now<br>
specify a "throws" clause with your non-terminals to add other<br>
exceptions to this list explicitly. Please see the help web page at:<br>
<br>
http://www.suntest.com/JavaCCBeta/newerrorhandling.html<br>
<br>
for complete information on error recovery.<br>
<br>
-------------------------------------------------------------------<br>
<br>
A new Java grammar improved for performance in the presence of very<br>
complex expressions is now included. This is NewJava1.1.jj.<br>
<br>
-------------------------------------------------------------------<br>
<br>
More optimizations for the size of the token manager's java and class<br>
files. The generated .java files are about 10-15% smaller that<br>
0.7pre1 (and 40-45%) smaller compared to 0.6. The class files (with<br>
-O) are about 20% smaller compared to 0.6.<br>
<br>
-------------------------------------------------------------------<br>
<br>
The parser size has been decreased. The current optimizations affect<br>
grammars that have small amounts of non-1 lookaheads. For example the<br>
generated code for the Java grammar has now reduced by 10%.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Extended the Token class to introduce a new factory function that<br>
takes the token kind and returns a new Token object. This is done to<br>
facilitate creating Objects of subclasses of Token based on the kind.<br>
Look at the generated file Token.java for more details.<br>
<br>
-------------------------------------------------------------------<br>
<br>
The restriction on the input size (to be < 2 gbytes) for the token<br>
manager is gone. Now the lexer can tokenize any size input (no<br>
limit).<br>
<br>
-------------------------------------------------------------------<br>
<br>
Removed all the references to System.out.println in the *CharStream<br>
classes. Now all these are thrown as Error objects.<br>
<br>
-------------------------------------------------------------------<br>
<br>
Fixed a very old problem with giving input from System.in. Previously<br>
for the EOF, you needed to give or<br>
</div>
</div>
</td>
<script src="tutorials/resize-iframe.js">
</script>
</tr>
</table>
</body>
</html>