2009-06-12 Jb Evain <jbevain@novell.com>
[mcs.git] / jay / README.jay
blob94b7b72e6e42a199706aeee874564b089ba07317
1     This version of Berkeley Yacc was taken from the BSD-Lite CD and targeted
2 to Java by
4                         axel.schreiner@informatik.uni-osnabrueck.de
6 Makefile -> makefile    removed Berkeleyisms, call it jay
7 defs.h                  eliminate -dlpr options, %union, output_file, #ident
8                         eliminate sekeleton.c references
9 error.c                 eliminate %union
10 main.c                  eliminate -dlpr options, %union, output_file
11 output.c                eliminate -dlpr options, %union, output_file
12                         fix #define, short, -t/yyDebug
13                         respell YYERRCODE, YYTABLESIZE, YYFINAL, YYMAXTOKEN
14                         output trailer last
15                         switch to filter behaviour
16 reader.c                eliminate output_file, #ident
17                         #line -> // line, pass //
18                         yyvsp[] -> yyVals[yyTop], yyval -> yyVal
19 skeleton.c -> skeleton  Java skeleton
20 test                    removed
21 yacc.1 -> jay.1         adapted
22 yyfix.*                 removed
24 Types: there is a significant difference. yacc uses %union to cast the value
25 stack and <tag> to select alternatives. This works for l- and r-values alike.
26 jay uses Object as the value stack and <tag> to set a class. l-values must not
27 be cast. $n should not be assigned to, but $$ usually is. $n is referenced,
28 but $$ usually is not. Consequently jay casts $n and $<tag>$ but not $<>n
29 and $$. This makes assignment to $n references to $$ kludgily possible.
30 As another kludge, to prevent 'untyped' messages and to avoid unnecessary
31 casts, casts to "Object" are not emitted.
32 -------------------------------------------------------------------------------
33     Berkeley Yacc is an LALR(1) parser generator.  Berkeley Yacc has been made
34 as compatible as possible with AT&T Yacc.  Berkeley Yacc can accept any input
35 specification that conforms to the AT&T Yacc documentation.  Specifications
36 that take advantage of undocumented features of AT&T Yacc will probably be
37 rejected.
39     Berkeley Yacc is distributed with no warranty whatever.  The code is certain
40 to contain errors.  Neither the author nor any contributor takes responsibility
41 for any consequences of its use.
43     Berkeley Yacc is in the public domain.  The data structures and algorithms
44 used in Berkeley Yacc are all either taken from documents available to the
45 general public or are inventions of the author.  Anyone may freely distribute
46 source or binary forms of Berkeley Yacc whether unchanged or modified.
47 Distributers may charge whatever fees they can obtain for Berkeley Yacc.
48 Programs generated by Berkeley Yacc may be distributed freely.
50     Please report bugs to
52                         robert.corbett@eng.Sun.COM
54 Include a small example if possible.  Please include the banner string from
55 skeleton.c with the bug report.  Do not expect rapid responses.