📄 linput.c
字号:
# include "stdio.h"# define U(x) x# define NLSTATE yyprevious=YYNEWLINE# define BEGIN yybgin = yysvec + 1 +# define INITIAL 0# define YYLERR yysvec# define YYSTATE (yyestate-yysvec-1)# define YYOPTIM 1# define YYLMAX BUFSIZ# define output(c) putc(c,yyout)# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}# define yymore() (yymorfg=1)# define ECHO fprintf(yyout, "%s",yytext)# define REJECT { nstr = yyreject(); goto yyfussy;}int yyleng; extern char yytext[];int yymorfg;extern char *yysptr, yysbuf[];int yytchar;FILE *yyin = {stdin}, *yyout = {stdout};extern int yylineno;struct yysvf { struct yywork *yystoff; struct yysvf *yyother; int *yystops;};struct yysvf *yyestate;extern struct yysvf yysvec[], *yybgin;#include "input.tab.h"extern int linenumber;# define YYNEWLINE 10yylex(){int nstr; extern int yyprevious;while((nstr = yylook()) >= 0)yyfussy: switch(nstr){case 0:if(yywrap()) return(0); break;case 1:{ linenumber++; }break;case 2: {}break;case 3: {}break;case 4: { return ACTI ;}break;case 5: { return END ;}break;case 6: { return EXEC ;}break;case 7: { return TASK;}break;case 8: { return RESOURCE;}break;case 9: { return ENDHEAD;}break;case 10: { sscanf (yytext,"%ld", &(yylval.ivalue)); return(NUM); }break;case 11: { yylval.cvalue=yytext; return(IDEN); }break;case -1:break;default:fprintf(yyout,"bad switch yylook %d",nstr);} return(0); }/* end of yylex */int yyvstop[] = {0,3,0,3,0,3,0,1,0,-2,0,10,0,11,0,2,0,5,0,4,0,6,0,7,0,9,0,8,0,0};# define YYTYPE charstruct yywork { YYTYPE verify, advance; } yycrank[] = {0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,3, 1,4, 0,0, 5,5, 3,3, 6,6, 13,0, 0,0, 0,0, 0,0, 0,0, 5,5, 5,0, 6,6, 6,14, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,3, 0,0, 1,5, 1,6, 3,3, 0,0, 0,0, 13,13, 0,0, 0,0, 0,0, 0,0, 0,0, 5,13, 0,0, 0,0, 1,7, 1,7, 1,7, 1,7, 1,7, 1,7, 1,7, 1,7, 1,7, 1,7, 2,8, 5,5, 0,0, 6,6, 0,0, 0,0, 0,0, 2,9, 8,15, 9,16, 12,20, 2,10, 7,7, 7,7, 7,7, 7,7, 7,7, 7,7, 7,7, 7,7, 7,7, 7,7, 10,17, 11,19, 2,11, 15,21, 2,12, 16,22, 17,23, 18,24, 19,25, 20,26, 10,18, 21,27, 22,28, 24,29, 25,30, 26,31, 27,32, 30,33, 33,34, 34,35, 35,36, 0,0, 0,0, 0,0};struct yysvf yysvec[] = {0, 0, 0,yycrank+1, 0, yyvstop+1,yycrank+1, yysvec+1, yyvstop+3,yycrank+5, 0, yyvstop+5,yycrank+0, 0, yyvstop+7,yycrank+-12, 0, 0, yycrank+-14, 0, yyvstop+9,yycrank+23, 0, yyvstop+11,yycrank+1, 0, 0, yycrank+1, 0, 0, yycrank+3, 0, 0, yycrank+13, 0, 0, yycrank+4, 0, 0, yycrank+-6, yysvec+5, yyvstop+13,yycrank+0, 0, yyvstop+15,yycrank+5, 0, 0, yycrank+2, 0, 0, yycrank+19, 0, 0, yycrank+19, 0, 0, yycrank+6, 0, 0, yycrank+7, 0, 0, yycrank+24, 0, 0, yycrank+20, 0, 0, yycrank+0, 0, yyvstop+17,yycrank+27, 0, 0, yycrank+16, 0, 0, yycrank+21, 0, 0, yycrank+8, 0, 0, yycrank+0, 0, yyvstop+19,yycrank+0, 0, yyvstop+21,yycrank+13, 0, 0, yycrank+0, 0, yyvstop+23,yycrank+0, 0, yyvstop+25,yycrank+17, 0, 0, yycrank+33, 0, 0, yycrank+32, 0, 0, yycrank+0, 0, yyvstop+27,0, 0, 0};struct yywork *yytop = yycrank+101;struct yysvf *yybgin = yysvec+1;char yymatch[] = {00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,011 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,0};char yyextra[] = {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0};#ifndef lintstatic char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */#endifint yylineno =1;# define YYU(x) x# define NLSTATE yyprevious=YYNEWLINEchar yytext[YYLMAX];struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;char yysbuf[YYLMAX];char *yysptr = yysbuf;int *yyfnd;extern struct yysvf *yyestate;int yyprevious = YYNEWLINE;yylook(){ register struct yysvf *yystate, **lsp; register struct yywork *yyt; struct yysvf *yyz; int yych, yyfirst; struct yywork *yyr;# ifdef LEXDEBUG int debug;# endif char *yylastch; /* start off machines */# ifdef LEXDEBUG debug = 0;# endif yyfirst=1; if (!yymorfg) yylastch = yytext; else { yymorfg=0; yylastch = yytext+yyleng; } for(;;){ lsp = yylstate; yyestate = yystate = yybgin; if (yyprevious==YYNEWLINE) yystate++; for (;;){# ifdef LEXDEBUG if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);# endif yyt = yystate->yystoff; if(yyt == yycrank && !yyfirst){ /* may not be any transitions */ yyz = yystate->yyother; if(yyz == 0)break; if(yyz->yystoff == yycrank)break; } *yylastch++ = yych = input(); yyfirst=0; tryagain:# ifdef LEXDEBUG if(debug){ fprintf(yyout,"char "); allprint(yych); putchar('\n'); }# endif yyr = yyt; if ( (int)yyt > (int)yycrank){ yyt = yyr + yych; if (yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transitions */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } }# ifdef YYOPTIM else if((int)yyt < (int)yycrank) { /* r < yycrank */ yyt = yyr = yycrank+(yycrank-yyt);# ifdef LEXDEBUG if(debug)fprintf(yyout,"compressed state\n");# endif yyt = yyt + yych; if(yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transitions */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } yyt = yyr + YYU(yymatch[yych]);# ifdef LEXDEBUG if(debug){ fprintf(yyout,"try fall back character "); allprint(YYU(yymatch[yych])); putchar('\n'); }# endif if(yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transition */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } } if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){# ifdef LEXDEBUG if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);# endif goto tryagain; }# endif else {unput(*--yylastch);break;} contin:# ifdef LEXDEBUG if(debug){ fprintf(yyout,"state %d char ",yystate-yysvec-1); allprint(yych); putchar('\n'); }# endif ; }# ifdef LEXDEBUG if(debug){ fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); allprint(yych); putchar('\n'); }# endif while (lsp-- > yylstate){ *yylastch-- = 0; if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ yyolsp = lsp; if(yyextra[*yyfnd]){ /* must backup */ while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ lsp--; unput(*yylastch--); } } yyprevious = YYU(*yylastch); yylsp = lsp; yyleng = yylastch-yytext+1; yytext[yyleng] = 0;# ifdef LEXDEBUG if(debug){ fprintf(yyout,"\nmatch "); sprint(yytext); fprintf(yyout," action %d\n",*yyfnd); }# endif return(*yyfnd++); } unput(*yylastch); } if (yytext[0] == 0 /* && feof(yyin) */) { yysptr=yysbuf; return(0); } yyprevious = yytext[0] = input(); if (yyprevious>0) output(yyprevious); yylastch=yytext;# ifdef LEXDEBUG if(debug)putchar('\n');# endif } }yyback(p, m) int *p;{if (p==0) return(0);while (*p) { if (*p++ == m) return(1); }return(0);} /* the following are only used in the lex library */yyinput(){ return(input()); }yyoutput(c) int c; { output(c); }yyunput(c) int c; { unput(c); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -