ftp.nice.ch/pub/next/unix/developer/cyacc.s.tar.gz#/cyacc

ACKNOWLEDGEMENTS
 
Makefile
 
NEW_FEATURES
 
NOTES
 
NO_WARRANTY
 
README
 
README.cyacc
 
closure.c
[View closure.c] 
defs.h
[View defs.h] 
error.c
[View error.c] 
lalr.c
[View lalr.c] 
lr0.c
[View lr0.c] 
main.c
[View main.c] 
mkpar.c
[View mkpar.c] 
output.c
[View output.c] 
reader.c
[View reader.c] 
skeleton.c
[View skeleton.c] 
stmParser.Y
 
symtab.c
[View symtab.c] 
test/
 
verbose.c
[View verbose.c] 
warshall.c
[View warshall.c] 
yacc.1
 

README

    Berkeley Yacc is an LALR(1) parser generator.  Berkeley Yacc has been made
as compatible as possible with AT&T Yacc.  Berkeley Yacc can accept any input
specification that conforms to the AT&T Yacc documentation.  Specifications
that take advantage of undocumented features of AT&T Yacc will probably be
rejected.

    Berkeley Yacc is distributed with no warranty whatever.  The code is certain
to contain errors.  Neither the author nor any contributor takes responsibility
for any consequences of its use.

    Berkeley Yacc is in the public domain.  The data structures and algorithms
used in Berkeley Yacc are all either taken from documents available to the
general public or are inventions of the author.  Anyone may freely distribute
source or binary forms of Berkeley Yacc whether unchanged or modified.
Distributers may charge whatever fees they can obtain for Berkeley Yacc.
Programs generated by Berkeley Yacc may be distributed freely.

    Please report bugs to

			robert.corbett@eng.Sun.COM

Include a small example if possible.  Please include the banner string from
skeleton.c with the bug report.  Do not expect rapid responses.

README.cyacc

Basically, the skeleton.c file was modified to allow the following:

	#define YYLEX [self getToken:stream]
	#define YYPARSE - (int)parse:(FILE*)stream
	#define yyerror(_msg) [self warn:_msg];

Make sure these defs appear before your grammar. In the pre-grammar code
one also needs to include the "@implementatin Foo", etc.

Code following the grammar (ending "%%") now really follows the parse 
imlementation.

I use the following make rule:

.my.m:
	cyacc -d -o -x .m -b $* $*.my

New Options
-----------
x  uses the next argument as the file extensions (default .c)
o  causes PRIVATE to be defined as "static" thus making the tables and such
   local to the module.

The real curious can look at the modifications using rcsdiff on suspect
files. (skeleton.c main.c output.cm defs.h)

Sorry about the scant documentation.

Please send questions to jjobe@mrj.com.
Will try to get out an example soon.

Enjoy,
Jason

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.