This version of Berkeley Yacc was taken from the BSD-Lite CD and targeted to Java by Axel T. Schreiner Makefile -> makefile removed Berkeleyisms, call it jay defs.h eliminate -dlpr options, %union, output_file, #ident, skeleton.c references changed line_format to char* error.c eliminate %union main.c eliminate -dlpr options, %union, output_file added -c option to influence #line switched from mktemp() to mkstemp() output.c eliminate -dlpr options, %union, output_file fix #define, short, -t/yyDebug respell YYERRCODE, YYTABLESIZE, YYFINAL, YYMAXTOKEN output trailer last switch to filter behaviour reader.c eliminate output_file, #ident #line -> // line, pass // yyvsp[] -> yyVals[yyTop], yyval -> yyVal skeleton.c Java and C# skeletons test removed yacc.1 -> ../jay.1 adapted yyfix.* removed Types: there is a significant difference. yacc uses %union to cast the value stack and to select alternatives. This works for l- and r-values alike. jay uses Object as the value stack and to set a class. l-values must not be cast. $n should not be assigned to, but $$ usually is. $n is referenced, but $$ usually is not. Consequently jay casts $n and $$ but not $<>n and $$. This makes assignment to $n references to $$ kludgily possible. As another kludge, to prevent 'untyped' messages and to avoid unnecessary casts, casts to "Object" are not emitted. Conflicts: the usual type table may be used but conflict/Conflict.jay demonstrates that a trivial %nonassoc is silently ignored. Changes from 1.0.1 to 1.0.2: FILES new directory structure under Language Processing package.html homepage {cs,java}/skeleton.* min yyErrorFlag is 0 when passed to shift() Changes from 1.0 to 1.0.1: java/arith/makefile changed CLASSPATH jay/reader.c(1094) fixed typo -- thanks to etienne.cochard@ciel.com Changes from 0.9 to 1.0: Merged C# port from mcs-0.16 at by Miguel de Icaza . Changed naming conventions in the skeletons. Changes from 0.8 to 0.9: output.c Tables now written as text, top-level classes gone skeleton.java Revamped to load tables from resource. Changes from 0.7 to 0.8: output.c Each generated table is now encapsulated in a top level nested class to circumvent Java's 64K code limit (Thanks to Andre Marburger). skeleton Fixed to access the tables inside the classes. yydebug/yyPrintStream Fixed NullPointerException introduced by JDK 1.2.