Generated with flex 2.6.0 and a new custom skeleton for that version
(which almost certainly won't work with any older or newer version of
flex, but that limitation has no effect on the usefulness of the
generated scanner code).
Function definitions are oldstyle:
int foo(bar)
char *bar;
{...}
rather than ANSI, like nethack's core code. Advance declarations use
FDECL for prototypes, so should also fit nethack, although the usage
'FDECL(, (arglist))' makes me feel a bit uneasy. gcc doesn't mind the
omitted first argument but other compilers might not like it.
The system headers (stdlib.h and a few others) that flex has been
insisting on including are gone (with this skeleton). It starts out
including "config.h" and that header has the responsibility for any
definitions and declarations necessary. That shouldn't be a big deal
since config.h -> XXXconf.h -> system.h is what we're already relying
on for everything else, but it does need testing for any configuration
that uses sys/share/{dgn,lev}_{lex,yacc}.c.
I'll be checking the skeleton into the NHinternals repository after
adding some documentation, but I'm wondering whether it should really
become part of the source distribution.
This regenerates the scanner and parser files. I'm checking them
into master only. If they work for everyone using them, they can be
merged into 3.6.0.
dgn_yacc.c: I reconstructed our 3.4.3 patch for byacc 1.9 (the original,
not the one used to create the set of files being replaced here) by
comparing dgn_yacc.c made with vanilla byacc and dgn_yacc.c from 3.4.3.
(Unlike lev_comp.l, dgn_comp.l has hardly changed at all.) There's no
dynamic memory use in that version, so declarations for malloc and/or
realloc and/or inclusion of <stdlib.h> aren't an issue. The fixed size
stack it uses is big enough for 'make update' to run to completion.
lev_yacc: I built it with [modified] byacc to replace one built with
bison. sys/share/lev_comp.h was from byacc, not bison, so something has
gotten screwed up recently.
*_lex.c: I used the same version of flex (2.5.37) as the one used to
create the set being replaced, so build prospects are the same. But I
used -L to suppress #line directives and my Makefile has an extra 'sed'
pass that strips trailing spaces, producing extra bands in the diff.
*_comp.h: They're the same as far as git is concerned (ie, only the
file creation/modification dates changed), so there's no update.
I'll push a formatting guide at some point. There may still be
outstanding changes, but please feel free to resolve those as you arrive
a them.
To the best of my knowledge, there is no changes to the actual code
content, but the formatter does have the occasional bug. If you run into
an issue, please fix it!
cvs admin -ko sys/share/*_*.c to suppress $Date$ and $Revision$ expansion,
reverting to the text checked a few days ago.
cvs commit -f sys/share/*_*.c to trigger this mail; you'll need cvs update
to get the actual text.
Allow the special level and dungeon compilers to handle input
files which have CR+LF delimited lines. Apparently Cygwin doesn't
convert MSDOS style line ends into newlines the way stdio should
do for text I/O. The resulting unexpected CR characters result in
syntax errors.
And explicitly using '\n' on both the lex and yacc sides of
MAP processing allows removal of the old NEWLINE hack for Mac MPW.
It won't matter what numeric value that character escape sequence
has internally.