home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / apps / math / lpsolves / lex.yy < prev    next >
Text File  |  1992-08-09  |  10KB  |  513 lines

  1. # include "stdio.h"
  2. # define U(x) x
  3. # define NLSTATE yyprevious=YYNEWLINE
  4. # define BEGIN yybgin = yysvec + 1 +
  5. # define INITIAL 0
  6. # define YYLERR yysvec
  7. # define YYSTATE (yyestate-yysvec-1)
  8. # define YYOPTIM 1
  9. # define YYLMAX BUFSIZ
  10. # define output(c) putc(c,yyout)
  11. # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
  12. # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
  13. # define yymore() (yymorfg=1)
  14. # define ECHO fprintf(yyout, "%s",yytext)
  15. # define REJECT { nstr = yyreject(); goto yyfussy;}
  16. int yyleng; extern char yytext[];
  17. int yymorfg;
  18. extern char *yysptr, yysbuf[];
  19. int yytchar;
  20. FILE *yyin = {stdin}, *yyout = {stdout};
  21. extern int yylineno;
  22. struct yysvf { 
  23.     struct yywork *yystoff;
  24.     struct yysvf *yyother;
  25.     int *yystops;};
  26. struct yysvf *yyestate;
  27. extern struct yysvf yysvec[], *yybgin;
  28. # define COMMENT 2
  29. # define YYNEWLINE 10
  30. yylex(){
  31. int nstr; extern int yyprevious;
  32. while((nstr = yylook()) >= 0)
  33. yyfussy: switch(nstr){
  34. case 0:
  35. if(yywrap()) return(0); break;
  36. case 1:
  37.             {
  38.            BEGIN COMMENT;        }
  39. break;
  40. case 2:
  41.             {
  42.            BEGIN INITIAL;        }
  43. break;
  44. case 3:
  45.                              {
  46.                                         }
  47. break;
  48. case 4:
  49.                             {
  50.                                         }
  51. break;
  52. case 5:
  53.                           {
  54.                                         }
  55. break;
  56. case 6:
  57.                            {
  58.     return(COMMA);
  59.                                         }
  60. break;
  61. case 7:
  62.             {
  63.         sscanf(yytext,"%lf",&f);
  64.         return(CONS);                  
  65.                                         }
  66. break;
  67. case 8:
  68.                     { Sign=0;
  69.                       for(x=0;x<yyleng;x++)
  70.                         if(yytext[x]=='-'||yytext[x]=='+')
  71.                           Sign=(Sign==(yytext[x]=='+'));
  72.                       return (SIGN);
  73.                     /* Sign is TRUE if the sign-string
  74.                        represents a '-'. Otherwise Sign
  75.                        is FALSE */
  76.                     }
  77. break;
  78. case 9:
  79.             {
  80.           {strcpy(Last_var, yytext);}
  81.           return(VAR);
  82.                                         }
  83. break;
  84. case 10:
  85.             {
  86.           return(AR_M_OP);        }
  87. break;
  88. case 11:
  89.                 {
  90.           return(RE_OP);        }
  91. break;
  92. case 12:
  93.             {
  94.           return(END_C);        }
  95. break;
  96. case 13:
  97.             {
  98.           fprintf(stderr,"LEX ERROR : %s lineno %d \n" ,yytext,yylineno);     }
  99. break;
  100. case -1:
  101. break;
  102. default:
  103. fprintf(yyout,"bad switch yylook %d",nstr);
  104. } return(0); }
  105. /* end of yylex */
  106. int yyvstop[] = {
  107. 0,
  108.  
  109. 11,
  110. 0,
  111.  
  112. 11,
  113. 0,
  114.  
  115. 11,
  116. 0,
  117.  
  118. 11,
  119. 0,
  120.  
  121. 13,
  122. 0,
  123.  
  124. 5,
  125. 8,
  126. 13,
  127. 0,
  128.  
  129. 5,
  130. 8,
  131. 0,
  132.  
  133. 10,
  134. 13,
  135. 0,
  136.  
  137. 8,
  138. 13,
  139. 0,
  140.  
  141. 6,
  142. 13,
  143. 0,
  144.  
  145. 13,
  146. 0,
  147.  
  148. 13,
  149. 0,
  150.  
  151. 7,
  152. 13,
  153. 0,
  154.  
  155. 12,
  156. 13,
  157. 0,
  158.  
  159. 11,
  160. 13,
  161. 0,
  162.  
  163. 11,
  164. 13,
  165. 0,
  166.  
  167. 9,
  168. 13,
  169. 0,
  170.  
  171. 3,
  172. 0,
  173.  
  174. 4,
  175. 0,
  176.  
  177. 3,
  178. 0,
  179.  
  180. 8,
  181. 0,
  182.  
  183. 7,
  184. 0,
  185.  
  186. 1,
  187. 0,
  188.  
  189. 7,
  190. 0,
  191.  
  192. 11,
  193. 0,
  194.  
  195. 9,
  196. 0,
  197.  
  198. 9,
  199. 0,
  200.  
  201. 2,
  202. 0,
  203.  
  204. 7,
  205. 0,
  206. 0};
  207. # define YYTYPE char
  208. struct yywork { YYTYPE verify, advance; } yycrank[] = {
  209. 0,0,    0,0,    1,5,    0,0,    
  210. 0,0,    0,0,    0,0,    0,0,    
  211. 0,0,    0,0,    1,6,    1,7,    
  212. 9,21,    9,21,    21,21,    21,21,    
  213. 3,18,    6,7,    6,7,    0,0,    
  214. 0,0,    0,0,    0,0,    0,0,    
  215. 3,18,    3,19,    0,0,    0,0,    
  216. 0,0,    0,0,    0,0,    0,0,    
  217. 0,0,    0,0,    0,0,    9,21,    
  218. 0,0,    21,21,    0,0,    0,0,    
  219. 6,7,    0,0,    0,0,    1,8,    
  220. 1,9,    1,10,    4,20,    1,11,    
  221. 1,12,    1,13,    2,8,    6,21,    
  222. 2,10,    6,21,    2,11,    2,12,    
  223. 12,23,    3,20,    3,18,    20,30,    
  224. 1,14,    1,15,    1,16,    3,18,    
  225. 15,27,    0,0,    1,17,    2,14,    
  226. 0,0,    2,16,    1,17,    0,0,    
  227. 0,0,    0,0,    0,0,    3,18,    
  228. 22,26,    0,0,    0,0,    0,0,    
  229. 3,18,    0,0,    0,0,    0,0,    
  230. 3,18,    11,22,    11,22,    11,22,    
  231. 11,22,    11,22,    11,22,    11,22,    
  232. 11,22,    11,22,    11,22,    13,24,    
  233. 1,5,    13,25,    13,25,    13,25,    
  234. 13,25,    13,25,    13,25,    13,25,    
  235. 13,25,    13,25,    13,25,    0,0,    
  236. 22,26,    0,0,    3,18,    0,0,    
  237. 0,0,    0,0,    0,0,    0,0,    
  238. 0,0,    0,0,    13,26,    0,0,    
  239. 0,0,    0,0,    0,0,    0,0,    
  240. 0,0,    17,28,    0,0,    0,0,    
  241. 0,0,    0,0,    0,0,    0,0,    
  242. 0,0,    0,0,    17,29,    17,29,    
  243. 17,29,    17,29,    17,29,    17,29,    
  244. 17,29,    17,29,    17,29,    17,29,    
  245. 0,0,    0,0,    0,0,    0,0,    
  246. 0,0,    0,0,    13,26,    17,29,    
  247. 17,29,    17,29,    17,29,    17,29,    
  248. 17,29,    17,29,    17,29,    17,29,    
  249. 17,29,    17,29,    17,29,    17,29,    
  250. 17,29,    17,29,    17,29,    17,29,    
  251. 17,29,    17,29,    17,29,    17,29,    
  252. 17,29,    17,29,    17,29,    17,29,    
  253. 17,29,    0,0,    0,0,    0,0,    
  254. 0,0,    17,29,    0,0,    17,29,    
  255. 17,29,    17,29,    17,29,    17,29,    
  256. 17,29,    17,29,    17,29,    17,29,    
  257. 17,29,    17,29,    17,29,    17,29,    
  258. 17,29,    17,29,    17,29,    17,29,    
  259. 17,29,    17,29,    17,29,    17,29,    
  260. 17,29,    17,29,    17,29,    17,29,    
  261. 17,29,    26,31,    0,0,    26,31,    
  262. 0,0,    0,0,    26,32,    26,32,    
  263. 26,32,    26,32,    26,32,    26,32,    
  264. 26,32,    26,32,    26,32,    26,32,    
  265. 31,32,    31,32,    31,32,    31,32,    
  266. 31,32,    31,32,    31,32,    31,32,    
  267. 31,32,    31,32,    0,0,    0,0,    
  268. 0,0};
  269. struct yysvf yysvec[] = {
  270. 0,    0,    0,
  271. yycrank+-1,    0,        yyvstop+1,
  272. yycrank+-8,    yysvec+1,    yyvstop+3,
  273. yycrank+-15,    0,        yyvstop+5,
  274. yycrank+-4,    yysvec+3,    yyvstop+7,
  275. yycrank+0,    0,        yyvstop+9,
  276. yycrank+8,    0,        yyvstop+11,
  277. yycrank+0,    yysvec+6,    yyvstop+15,
  278. yycrank+0,    0,        yyvstop+18,
  279. yycrank+3,    yysvec+6,    yyvstop+21,
  280. yycrank+0,    0,        yyvstop+24,
  281. yycrank+37,    0,        yyvstop+27,
  282. yycrank+14,    0,        yyvstop+29,
  283. yycrank+49,    0,        yyvstop+31,
  284. yycrank+0,    0,        yyvstop+34,
  285. yycrank+3,    0,        yyvstop+37,
  286. yycrank+0,    0,        yyvstop+40,
  287. yycrank+86,    0,        yyvstop+43,
  288. yycrank+0,    0,        yyvstop+46,
  289. yycrank+0,    0,        yyvstop+48,
  290. yycrank+12,    0,        yyvstop+50,
  291. yycrank+5,    yysvec+6,    yyvstop+52,
  292. yycrank+7,    yysvec+11,    yyvstop+54,
  293. yycrank+0,    0,        yyvstop+56,
  294. yycrank+0,    yysvec+11,    0,    
  295. yycrank+0,    yysvec+13,    yyvstop+58,
  296. yycrank+166,    0,        0,    
  297. yycrank+0,    0,        yyvstop+60,
  298. yycrank+0,    0,        yyvstop+62,
  299. yycrank+0,    yysvec+17,    yyvstop+64,
  300. yycrank+0,    0,        yyvstop+66,
  301. yycrank+176,    0,        0,    
  302. yycrank+0,    yysvec+31,    yyvstop+68,
  303. 0,    0,    0};
  304. struct yywork *yytop = yycrank+233;
  305. struct yysvf *yybgin = yysvec+1;
  306. char yymatch[] = {
  307. 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  308. 01  ,011 ,012 ,01  ,01  ,01  ,01  ,01  ,
  309. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  310. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  311. 011 ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  312. 01  ,01  ,01  ,'+' ,01  ,'+' ,01  ,01  ,
  313. '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
  314. '0' ,'0' ,01  ,01  ,'<' ,01  ,'<' ,01  ,
  315. 01  ,'A' ,'A' ,'A' ,'A' ,'E' ,'A' ,'A' ,
  316. 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  317. 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  318. 'A' ,'A' ,'A' ,01  ,01  ,01  ,01  ,'_' ,
  319. 01  ,'A' ,'A' ,'A' ,'A' ,'E' ,'A' ,'A' ,
  320. 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  321. 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  322. 'A' ,'A' ,'A' ,01  ,01  ,01  ,01  ,01  ,
  323. 0};
  324. char yyextra[] = {
  325. 0,0,0,0,0,0,0,0,
  326. 0,0,0,0,0,0,0,0,
  327. 0};
  328. #ifndef lint
  329. static    char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */
  330. #endif
  331.  
  332. int yylineno =1;
  333. # define YYU(x) x
  334. # define NLSTATE yyprevious=YYNEWLINE
  335. char yytext[YYLMAX];
  336. struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
  337. char yysbuf[YYLMAX];
  338. char *yysptr = yysbuf;
  339. int *yyfnd;
  340. extern struct yysvf *yyestate;
  341. int yyprevious = YYNEWLINE;
  342. yylook(){
  343.     register struct yysvf *yystate, **lsp;
  344.     register struct yywork *yyt;
  345.     struct yysvf *yyz;
  346.     int yych, yyfirst;
  347.     struct yywork *yyr;
  348. # ifdef LEXDEBUG
  349.     int debug;
  350. # endif
  351.     char *yylastch;
  352.     /* start off machines */
  353. # ifdef LEXDEBUG
  354.     debug = 0;
  355. # endif
  356.     yyfirst=1;
  357.     if (!yymorfg)
  358.         yylastch = yytext;
  359.     else {
  360.         yymorfg=0;
  361.         yylastch = yytext+yyleng;
  362.         }
  363.     for(;;){
  364.         lsp = yylstate;
  365.         yyestate = yystate = yybgin;
  366.         if (yyprevious==YYNEWLINE) yystate++;
  367.         for (;;){
  368. # ifdef LEXDEBUG
  369.             if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
  370. # endif
  371.             yyt = yystate->yystoff;
  372.             if(yyt == yycrank && !yyfirst){  /* may not be any transitions */
  373.                 yyz = yystate->yyother;
  374.                 if(yyz == 0)break;
  375.                 if(yyz->yystoff == yycrank)break;
  376.                 }
  377.             *yylastch++ = yych = input();
  378.             yyfirst=0;
  379.         tryagain:
  380. # ifdef LEXDEBUG
  381.             if(debug){
  382.                 fprintf(yyout,"char ");
  383.                 allprint(yych);
  384.                 putchar('\n');
  385.                 }
  386. # endif
  387.             yyr = yyt;
  388.             if ( (int)yyt > (int)yycrank){
  389.                 yyt = yyr + yych;
  390.                 if (yyt <= yytop && yyt->verify+yysvec == yystate){
  391.                     if(yyt->advance+yysvec == YYLERR)    /* error transitions */
  392.                         {unput(*--yylastch);break;}
  393.                     *lsp++ = yystate = yyt->advance+yysvec;
  394.                     goto contin;
  395.                     }
  396.                 }
  397. # ifdef YYOPTIM
  398.             else if((int)yyt < (int)yycrank) {        /* r < yycrank */
  399.                 yyt = yyr = yycrank+(yycrank-yyt);
  400. # ifdef LEXDEBUG
  401.                 if(debug)fprintf(yyout,"compressed state\n");
  402. # endif
  403.                 yyt = yyt + yych;
  404.                 if(yyt <= yytop && yyt->verify+yysvec == yystate){
  405.                     if(yyt->advance+yysvec == YYLERR)    /* error transitions */
  406.                         {unput(*--yylastch);break;}
  407.                     *lsp++ = yystate = yyt->advance+yysvec;
  408.                     goto contin;
  409.                     }
  410.                 yyt = yyr + YYU(yymatch[yych]);
  411. # ifdef LEXDEBUG
  412.                 if(debug){
  413.                     fprintf(yyout,"try fall back character ");
  414.                     allprint(YYU(yymatch[yych]));
  415.                     putchar('\n');
  416.                     }
  417. # endif
  418.                 if(yyt <= yytop && yyt->verify+yysvec == yystate){
  419.                     if(yyt->advance+yysvec == YYLERR)    /* error transition */
  420.                         {unput(*--yylastch);break;}
  421.                     *lsp++ = yystate = yyt->advance+yysvec;
  422.                     goto contin;
  423.                     }
  424.                 }
  425.             if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
  426. # ifdef LEXDEBUG
  427.                 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
  428. # endif
  429.                 goto tryagain;
  430.                 }
  431. # endif
  432.             else
  433.                 {unput(*--yylastch);break;}
  434.         contin:
  435. # ifdef LEXDEBUG
  436.             if(debug){
  437.                 fprintf(yyout,"state %d char ",yystate-yysvec-1);
  438.                 allprint(yych);
  439.                 putchar('\n');
  440.                 }
  441. # endif
  442.             ;
  443.             }
  444. # ifdef LEXDEBUG
  445.         if(debug){
  446.             fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
  447.             allprint(yych);
  448.             putchar('\n');
  449.             }
  450. # endif
  451.         while (lsp-- > yylstate){
  452.             *yylastch-- = 0;
  453.             if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
  454.                 yyolsp = lsp;
  455.                 if(yyextra[*yyfnd]){        /* must backup */
  456.                     while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
  457.                         lsp--;
  458.                         unput(*yylastch--);
  459.                         }
  460.                     }
  461.                 yyprevious = YYU(*yylastch);
  462.                 yylsp = lsp;
  463.                 yyleng = yylastch-yytext+1;
  464.                 yytext[yyleng] = 0;
  465. # ifdef LEXDEBUG
  466.                 if(debug){
  467.                     fprintf(yyout,"\nmatch ");
  468.                     sprint(yytext);
  469.                     fprintf(yyout," action %d\n",*yyfnd);
  470.                     }
  471. # endif
  472.                 return(*yyfnd++);
  473.                 }
  474.             unput(*yylastch);
  475.             }
  476.         if (yytext[0] == 0  /* && feof(yyin) */)
  477.             {
  478.             yysptr=yysbuf;
  479.             return(0);
  480.             }
  481.         yyprevious = yytext[0] = input();
  482.         if (yyprevious>0)
  483.             output(yyprevious);
  484.         yylastch=yytext;
  485. # ifdef LEXDEBUG
  486.         if(debug)putchar('\n');
  487. # endif
  488.         }
  489.     }
  490. yyback(p, m)
  491.     int *p;
  492. {
  493. if (p==0) return(0);
  494. while (*p)
  495.     {
  496.     if (*p++ == m)
  497.         return(1);
  498.     }
  499. return(0);
  500. }
  501.     /* the following are only used in the lex library */
  502. yyinput(){
  503.     return(input());
  504.     }
  505. yyoutput(c)
  506.   int c; {
  507.     output(c);
  508.     }
  509. yyunput(c)
  510.    int c; {
  511.     unput(c);
  512.     }
  513.