U5569462@ucsvc.unimelb.edu.au (DAVID CLUNIE) (07/22/89)
I forgot to include makefile & yaccpar in the previous shell archive of yacc that I posted, so here they are. #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". # You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. # If this archive is complete, you will see the following message: # "End of archive." # # Contents: # # makefile # yaccpar # if test -f 'makefile' ; then echo shar: Will not clobber existing file \"'makefile'\" else echo shar: Extracting \"'makefile'\" \( 2846 characters \) sed "s/^X//" >'makefile' <<'END_OF_FILE' X# Copyright 1987,1988,1989 David A. Clunie. All rights reserved. X# PO Box 811, Parkville 3052 AUSTRALIA. X# This program may be freely distributed for non-commercial use. X X.c.obj : X ztc -c -mc -s $* X Xyacc.exe : \ X yacc.obj\ X yautil.obj\ X ya1.obj\ X yalex.obj\ X yasym.obj\ X yafunc.obj\ X yaaug.obj\ X yaparse.obj\ X yafdef.obj\ X yafrule.obj\ X yainit1.obj\ X yaophead.obj\ X yaopsym.obj\ X ya2.obj\ X yabit.obj\ X yaread.obj\ X yafirst.obj\ X yalr0.obj\ X yardtx.obj\ X yafrtx.obj\ X yagoto.obj\ X yasort.obj\ X yatxsort.obj\ X yareln.obj\ X yafrreln.obj\ X yaincon.obj\ X yafrin.obj\ X yalook.obj\ X yardprec.obj\ X yafrprec.obj\ X yatable.obj\ X yaconf.obj\ X yapack.obj\ X yaoppars.obj X ztc -oyacc -mc -g ya*.obj X Xyacc.obj: yacc.c yadefs.h yavers.h yasystem.h Xyautil.obj: yautil.c yadefs.h yavers.h yasystem.h Xya1.obj: ya1.c yadefs.h yavers.h yasystem.h Xyalex.obj: yalex.c yadefs.h yavers.h yasystem.h yalex.h Xyasym.obj: yasym.c yadefs.h yavers.h yasystem.h Xyafunc.obj: yafunc.c yadefs.h yavers.h yasystem.h Xyaaug.obj: yaaug.c yadefs.h yavers.h yasystem.h Xyaparse.obj: yaparse.c yadefs.h yavers.h yasystem.h Xyafdef.obj: yafdef.c yadefs.h yavers.h yasystem.h Xyafrule.obj: yafrule.c yadefs.h yavers.h yasystem.h Xyainit1.obj: yainit1.c yadefs.h yavers.h yasystem.h Xyaophead.obj: yaophead.c yadefs.h yavers.h yasystem.h Xyaopsym.obj: yaopsym.c yadefs.h yavers.h yasystem.h Xya2.obj: ya2.c yadefs.h yavers.h yasystem.h Xyabit.obj: yabit.c yadefs.h yavers.h yasystem.h Xyaread.obj: yaread.c yadefs.h yavers.h yasystem.h Xyafirst.obj: yafirst.c yadefs.h yavers.h yasystem.h Xyalr0.obj: yalr0.c yadefs.h yavers.h yasystem.h Xyardtx.obj: yardtx.c yadefs.h yavers.h yasystem.h Xyafrtx.obj: yafrtx.c yadefs.h yavers.h yasystem.h Xyagoto.obj: yagoto.c yadefs.h yavers.h yasystem.h Xyasort.obj: yasort.c yadefs.h yavers.h yasystem.h Xyatxsort.obj: yatxsort.c yadefs.h yavers.h yasystem.h Xyareln.obj: yareln.c yadefs.h yavers.h yasystem.h Xyafrreln.obj: yafrreln.c yadefs.h yavers.h yasystem.h Xyaincon.obj: yaincon.c yadefs.h yavers.h yasystem.h Xyafrin.obj: yafrin.c yadefs.h yavers.h yasystem.h Xyalook.obj: yalook.c yadefs.h yavers.h yasystem.h Xyardprec.obj: yardprec.c yadefs.h yavers.h yasystem.h Xyafrprec.obj: yafrprec.c yadefs.h yavers.h yasystem.h Xyatable.obj: yatable.c yadefs.h yavers.h yasystem.h Xyaconf.obj: yaconf.c yadefs.h yavers.h yasystem.h Xyapack.obj: yapack.c yadefs.h yavers.h yasystem.h Xyaoppars.obj: yaoppars.c yadefs.h yavers.h yasystem.h X Xyaparse.c: yaparse.y X yacc -dtvg yaparse.y X del yaparse.c X rename ytab.c yaparse.c X del yalex.h X rename ytab.h yalex.h X Xyalex.h: yaparse.y X yacc -dtvg yaparse.y X del yaparse.c X rename ytab.c yaparse.c X del yalex.h X rename ytab.h yalex.h X Xyasystem.h: yapcdos.h X copy yapcdos.h yasystem.h X Xyadefs.h: yavers.h yasystem.h X END_OF_FILE if test 2846 -ne `wc -c <'makefile'`; then echo shar: \"'makefile'\" unpacked with wrong size! fi # end of 'makefile' fi if test -f 'yaccpar' ; then echo shar: Will not clobber existing file \"'yaccpar'\" else echo shar: Extracting \"'yaccpar'\" \( 5627 characters \) sed "s/^X//" >'yaccpar' <<'END_OF_FILE' X/* yaccpar 19-Dec-86 Parser to interpret yacc output tables */ X/* 14-May-88 */ X X#ifndef YYDEBUG X#define YYDEBUG 1 /* debugging is available, but not on yet */ X#endif X X#ifndef YYFULLERR X#define YYFULLERR 0 /* full error messages are not available */ X#endif X X#ifndef YYUNION X#define YYUNION 0 /* 0 == C compiler supports union assignment */ X#endif X X#if YYDEBUG X#define YYDESC 1 X#else X#if YYFULLERR X#define YYDESC 1 X#endif /* YYFULLERR */ X#endif /* YYDEBUG */ X X#if YYDEBUG Xstatic int yyyylex(); /* !!! */ X#else X#define yyyylex() yylex() X#endif X Xstatic void yygetchar(); X X#if YYDESC Xstatic char *yydesc(); X#endif X X#if YYFULLERR Xstatic void yyterror(); X#endif X X#if YYUNION X#define _yyassign(to,from) yyunion(&to,&from) X#else X#define _yyassign(to,from) (to=from) X#endif X X#define YYFLAG (-1000) X#define YYERROR goto yyerrlab X#define YYACCEPT return(0) X#define YYABORT return(1) X X#if YYDEBUG Xint yydebug=0; /* set to 1 to turn on debugging */ X#endif X XYYSTYPE yyvalue[YYMAXDEPTH]; /* parser value stack */ Xint yystack[YYMAXDEPTH]; /* parser state stack */ Xint yychar=(-1); /* current input token (-1 == none) */ Xint yynerrs=0; /* number of errors */ Xint yyerrflag=0; /* error recovery in progress */ X Xyyparse() X{ X int yystate; X int *yypstack; X YYSTYPE *yypvalue; X int yyindex; X int *yyxi; X int yypush; X X yystate=0; X yychar=(-1); X yynerrs=0; X yyerrflag=0; X yypstack= &yystack[-1]; /* beware of old assignment operators !!! */ X yypvalue= &yyvalue[-1]; X yypush=1; X X for (;;) { X if (yypush) { /* put a state and value onto the stack */ X#if YYDEBUG X if (yydebug) X printf("[yydebug] state %d, token %s\n", X yystate,yydesc(yychar,yytoks)); X#endif X if (++yypstack > &yystack[YYMAXDEPTH]) { X yyerror("yacc stack overflow"); X YYABORT; X } X *yypstack=yystate; X ++yypvalue; X _yyassign(*yypvalue,yyval); X } X X yyindex=yypact[yystate]; X if (yyindex>YYFLAG X && (yygetchar(), X (yyindex+= yychar) >= 0 && yyindex < YYLAST X && yychk[ yyindex=yyact[ yyindex ] ] == yychar X ) X ) { /* valid shift */ X yychar=(-1); X _yyassign(yyval,yylval); X yystate=yyindex; X if (yyerrflag > 0) --yyerrflag; X yypush=1; X } X else { /* default state action */ X if ( (yyindex=yydef[yystate]) == -2 ) { X yygetchar(); X /* look through exception table */ X#if YYDEBUG X if (yydebug) X printf("[yydebug] on lookahead %s\n", X yydesc(yychar,yytoks)); X#endif X for (yyxi=yyexca; (*yyxi!=(-1))||(yyxi[1]!=yystate); yyxi+=2); X for (yyxi+=2; *yyxi >= 0 && *yyxi != yychar; yyxi+=2); X if ((yyindex=yyxi[1]) < 0) { X#if YYDEBUG X if (yydebug) printf("[yydebug] accept\n"); X#endif X YYACCEPT; X } X } X X if (yyindex == 0) { /* error ... attempt to resume parsing */ X switch(yyerrflag) { X case 0: /* brand new error */ X#if YYFULLERR X yyindex=yypact[yystate]; X if (yyindex>YYFLAG && yyindex<YYLAST) { X int token,index; X for (index=(yyindex>0)?yyindex:0; X index<YYLAST; ++index) { X token=index-yyindex; X if (yychk[yyact[index]] == token X && token != YYERRCODE) { X yyterror(yydesc(token,yytoks)); X } X } X } X yyterror(NULL); X#else X yyerror("syntax error"); X#endif Xyyerrlab: X ++yynerrs; X case 1: X case 2: /* incompletely recovered error */ X yyerrflag=3; X /* find a state where "error" is a legal shift action */ X yypush=0; /* use as local flag */ X while(yypstack >= yystack) { X yyindex=yypact[*yypstack] +YYERRCODE; X if ( yyindex>=0 && yyindex<YYLAST X && yychk[yyact[yyindex]] == YYERRCODE) { X yystate=yyact[yyindex]; /* shift error */ X yypush=1; X break; /* ... out of loop */ X } X else { /* no shift on error */ X#if YYDEBUG X if (yydebug) printf( X "[yydebug] error recovery pops state %d, uncovers %d\n", X *yypstack,yypstack[-1]); X#endif X --yypstack; /* pop stack */ X --yypvalue; X } X } X if (!yypush) /* no error shift state on stack */ X YYABORT; X X break; /* else stack error state */ X X case 3: /* no shift yet; discard input char */ X#if YYDEBUG X if (yydebug) X printf("[yydebug] error recovery discards %s\n", X yydesc(yychar,yytoks)); X#endif X if (yychar == 0) YYABORT; /* don't discard EOF */ X yychar=(-1); X yypush=0; /* try again in SAME state */ X } X } X else { /* reduction by production yyindex */ X YYSTYPE *yypvt; X int yynont; X int yyrule; X X yyrule=yyindex; X#if YYDEBUG X if (yydebug) X printf("[yydebug] reduce by (%d) \"%s\"\n", X yyrule,yyreds[yyrule]); X#endif X yypstack -= yyr2[yyrule]; X yypvt=yypvalue; X yypvalue -= yyr2[yyrule]; X _yyassign(yyval,yypvalue[1]); X /* consult goto table to find next state */ X yynont=yyr1[yyrule]; X yyindex=yypgo[yynont] + *yypstack + 1; X if (yyindex>=YYLAST X || yychk[yystate=yyact[yyindex]] != -yynont) X yystate=yyact[yypgo[yynont]]; X switch(yyrule) { X $A X } X yypush=1; /* stack new state and value */ X } X } X } X} X X Xstatic void Xyygetchar() X{ X if (yychar < 0) if ((yychar=yyyylex()) < 0) yychar=0; X} X X#if YYDEBUG X Xstatic int Xyyyylex() X{ X int ch; X X ch=yylex(); X if (yydebug) X printf("[yydebug] received token %s\n",yydesc(ch,yytoks)); X return ch; X} X X#endif /* YYDEBUG */ X X#if YYDESC X Xstatic char * Xyydesc(ch,table) Xint ch; Xyytoktype *table; X{ X register yytoktype *p; X char *s; X X if (ch == 0) X s="end-of-file"; X else if (ch < 0) X s="-none-"; X else { X for (p=table; p->t_val != ch && p->t_val >= 0; ++p); X s=p->t_name; X } X return s; X} X X#endif /* YYDESC */ X END_OF_FILE if test 5627 -ne `wc -c <'yaccpar'`; then echo shar: \"'yaccpar'\" unpacked with wrong size! fi # end of 'yaccpar' fi echo "End of archive."