home *** CD-ROM | disk | FTP | other *** search
- /*
- * Created by CSD YACC (IBM PC) from "simpl.Y" */
- # define ID 257
- # define END 258
- #define yyclearin yychar = -1
- #define yyerrok yyerrflag = 0
- #ifndef YYMAXDEPTH
- #define YYMAXDEPTH 150
- #endif
- #ifndef YYSTYPE
- #define YYSTYPE int
- #endif
- extern YYSTYPE yylval; /*CSD & DECUS LEX */
- YYSTYPE yyval; /*CSD & DECUS LEX */
- # define YYERRCODE 256
-
- #line 82
-
- short yyexca[] ={
- -1, 1,
- 0, -1,
- -2, 0,
- };
- # define YYNPROD 7
- # define YYLAST 218
- short yyact[]={
-
- 4, 6, 11, 3, 6, 7, 2, 1, 0, 0,
- 0, 10, 8, 9, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 5 };
- short yypact[]={
-
- -40, -42, -37,-1000, -40,-1000, -40, -40, -39, -37,
- -1000,-1000 };
- short yypgo[]={
-
- 0, 7, 6, 3 };
- short yyr1[]={
-
- 0, 1, 1, 2, 2, 3, 3 };
- short yyr2[]={
-
- 0, 3, 1, 3, 1, 3, 1 };
- short yychk[]={
-
- -1000, -1, -2, -3, 40, 257, 43, 42, -1, -2,
- -3, 41 };
- short yydef[]={
-
- 0, -2, 2, 4, 0, 6, 0, 0, 0, 1,
- 3, 5 };
- /*
- HEADER: CUG nnn.nn;
- TITLE: YACC - Yet Another Compilier-Compilier
- VERSION: 1.0 for IBM-PC
- DATE: JAN 28, 1985
- DESCRIPTION: LALR(1) Parser Generator. From UNIX
- KEYWORDS: Parser Generator Compilier-Compilier YACC
- SYSTEM: IBM-PC and Compatiables
- FILENAME: YYPARS.C
- WARNINGS: This program is not for the casual user. It will
- be useful primarily to expert developers.
- CRC: N/A
- SEE-ALSO: LEX and PREP
- AUTHORS: Scott Guthery 11100 leafwood lane Austin, TX 78750
- COMPILERS: DESMET-C
- REFERENCES: UNIX Systems Manuals
- */
-
- # define YYFLAG -1000
- # define YYERROR goto yyerrlab
- # define YYACCEPT return(0)
- # define YYABORT return(1)
-
- /* parser for yacc output */
-
- int yydebug = 0; /* 1 for debugging */
- YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
- int yychar = -1; /* current input token number */
- int yynerrs = 0; /* number of errors */
- short yyerrflag = 0; /* error recovery flag */
-
- int yyparse( void )
- {
-
- short yys[YYMAXDEPTH];
- short yyj, yym;
- register YYSTYPE *yypvt;
- register short yystate, *yyps, yyn;
- register YYSTYPE *yypv;
- register short *yyxi;
-
- yystate = 0;
- yychar = -1;
- yynerrs = 0;
- yyerrflag = 0;
- yyps= &yys[-1];
- yypv= &yyv[-1];
-
- yystack: /* put a state and value onto the stack */
-
- if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar );
- if( ++yyps> &yys[YYMAXDEPTH] )
- {
- yyerror( "yacc stack overflow" );
- return(1);
- }
- *yyps = yystate;
- ++yypv;
- #ifdef UNION
- yyunion(yypv, &yyval);
- #else
- *yypv = yyval;
- #endif
- yynewstate:
-
- yyn = yypact[yystate];
-
- if( yyn<= YYFLAG ) goto yydefault; /* simple state */
-
- if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
- if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
-
- if( yychk[ yyn=yyact[ yyn ] ] == yychar )
- {
- /* valid shift */
- yychar = -1;
- #ifdef UNION
- yyunion(&yyval, &yylval);
- #else
- yyval = yylval;
- #endif
- yystate = yyn;
- if( yyerrflag > 0 ) --yyerrflag;
- goto yystack;
- }
- yydefault:
- /* default state action */
-
- if( (yyn=yydef[yystate]) == -2 )
- {
- if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
- /* look through exception table */
-
- for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
-
- for(yyxi+=2; *yyxi >= 0; yyxi+=2)
- {
- if( *yyxi == yychar ) break;
- }
- if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */
- }
-
- if( yyn == 0 )
- {
- /* error */
- /* error ... attempt to resume parsing */
-
- switch( yyerrflag )
- {
-
- case 0: /* brand new error */
-
- yyerror( "syntax error" );
- yyerrlab:
- ++yynerrs;
-
- case 1:
- case 2: /* incompletely recovered error ... try again */
-
- yyerrflag = 3;
-
- /* find a state where "error" is a legal shift action */
-
- while ( yyps >= yys )
- {
- yyn = yypact[*yyps] + YYERRCODE;
- if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE )
- {
- yystate = yyact[yyn]; /* simulate a shift of "error" */
- goto yystack;
- }
- yyn = yypact[*yyps];
-
- /* the current yyps has no shift onn "error", pop stack */
-
- if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
- --yyps;
- --yypv;
- }
-
- /* there is no state on the stack with an error shift ... abort */
-
- yyabort:
- return(1);
-
-
- case 3: /* no shift yet; clobber input char */
-
- if( yydebug ) printf( "error recovery discards char %d\n", yychar );
-
- if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
- yychar = -1;
- goto yynewstate; /* try again in the same state */
-
- }
-
- }
-
- /* reduction by production yyn */
-
- if( yydebug ) printf("reduce %d\n",yyn);
- yyps -= yyr2[yyn];
- yypvt = yypv;
- yypv -= yyr2[yyn];
- #ifdef UNION
- yyunion(&yyval, &yypv[1]);
- #else
- yyval = yypv[1];
- #endif
- yym=yyn;
- /* consult goto table to find next state */
- yyn = yyr1[yyn];
- yyj = yypgo[yyn] + *yyps + 1;
- if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
- switch(yym)
- {
-
- case 1:
- # line 73
- { 1; } break;
- case 2:
- # line 74
- { 2; } break;
- case 3:
- # line 76
- { 3; } break;
- case 4:
- # line 77
- { 4; } break;
- case 5:
- # line 79
- { 5; } break;
- case 6:
- # line 80
- { 6; } break;/* End of actions */
- }
- goto yystack; /* stack new state and value */
-
- }
-