home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 232_01 / lexyy.c < prev    next >
Text File  |  1987-06-17  |  22KB  |  1,116 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 200
  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. /*
  29.         Little Smalltalk lexical analyzer
  30. */
  31. # include <math.h>
  32. # include "primnum.h"
  33.  
  34. # undef input
  35. # undef unput
  36.  
  37. double atof();
  38. int linenum = 1;
  39. # define YYNEWLINE 10
  40. yylex(){
  41. int nstr; extern int yyprevious;
  42. while((nstr = yylook()) >= 0)
  43. yyfussy: switch(nstr){
  44. case 0:
  45. if(yywrap()) return(0); break;
  46. case 1:
  47.                          {;}
  48. break;
  49. case 2:
  50.                              {linenum++;}
  51. break;
  52. case 3:
  53.                              {readcomment();}
  54. break;
  55. case 4:
  56.                            {return(ASSIGN);}
  57. break;
  58. case 5:
  59.                            {return(ASSIGN);}
  60. break;
  61. case 6:
  62.                           {return(lexsave(CLASS));}
  63. break;
  64. case 7:
  65.                            {yylval.p = selfvar;  return(PSEUDO);}
  66. break;
  67. case 8:
  68.         {yylval.p = procvar;  return(PSEUDO);}
  69. break;
  70. case 9:
  71.                           {yylval.p = supervar; return(PSEUDO);}
  72. break;
  73. case 10:
  74.                             {yylval.p = nilvar;   return(PSEUDO);}
  75. break;
  76. case 11:
  77.                            {yylval.p = truevar;  return(PSEUDO);}
  78. break;
  79. case 12:
  80.                           {yylval.p = falsevar; return(PSEUDO);}
  81. break;
  82. case 13:
  83.                       {yylval.p = smallvar; return(PSEUDO);}
  84. break;
  85. case 14:
  86.                             {yylval.i = yytext[1]; return(LITCHAR);}
  87. break;
  88. case 15:
  89.                               {return(PS);}
  90. break;
  91. case 16:
  92. {return(lexsave(LITFNUM));}
  93. break;
  94. case 17:
  95.                          {yylval.i = atoi(yytext); return(LITNUM);}
  96. break;
  97. case 18:
  98.   {return(lexsave(LITFNUM));}
  99. break;
  100. case 19:
  101.                         {char c; unput(c = input());
  102.                                  if (c == '\'') yymore();
  103.                                  else return(lexlstr());}
  104. break;
  105. case 20:
  106.                  {return(varlex());}
  107. break;
  108. case 21:
  109.                   {return(slexsave(COLONVAR));}
  110. break;
  111. case 22:
  112.                 {return(slexsave(LITSYM));}
  113. break;
  114. case 23:
  115.                             {return(lexsave(MINUS));}
  116. break;
  117. case 24:
  118.                             {return(LP);}
  119. break;
  120. case 25:
  121.                             {return(RP);}
  122. break;
  123. case 26:
  124.                             {return(LB);}
  125. break;
  126. case 27:
  127.                             {return(RB);}
  128. break;
  129. case 28:
  130.                             {return(PERIOD);}
  131. break;
  132. case 29:
  133.             {return(lexsave(MBAR));}
  134. break;
  135. case 30:
  136.             {return(lexsave(MBAR));}
  137. break;
  138. case 31:
  139.                             {return(lexsave(BAR));}
  140. break;
  141. case 32:
  142.                             {return(lexsave(BAR));}
  143. break;
  144. case 33:
  145.                             {return(SEMI);}
  146. break;
  147. case 34:
  148.                             {return(lexsave(UPARROW));}
  149. break;
  150. case 35:
  151.             {return(lexsave(PE));}
  152. break;
  153. case 36:
  154.               {return(lexsave(BINARY));}
  155. break;
  156. case 37:
  157.               {return(PRIMITIVE);}
  158. break;
  159. case 38:
  160.         {yylval.i = prim_number(&yytext[1]); return(NAMEDPRIM);}
  161. break;
  162. case -1:
  163. break;
  164. default:
  165. fprintf(yyout,"bad switch yylook %d",nstr);
  166. } return(0); }
  167. /* end of yylex */
  168. static int ocbuf = 0;
  169. static int pbbuf[400];
  170.  
  171. static int input()
  172. {    int c;
  173.  
  174.     if (ocbuf) {c = pbbuf[--ocbuf]; }
  175.     else {
  176.         c = getc(fp);
  177.         if (c == EOF) c = 0;
  178.         }
  179.     return(c);
  180. }
  181.  
  182. static unput(c)
  183. char c;
  184. {
  185.     if (c) pbbuf[ocbuf++] = c;
  186. }
  187.  
  188. # include <ctype.h>
  189.  
  190. static readcomment()
  191. {  char c;
  192.  
  193.    while ((c = input()) && c != '\"')
  194.     if (c == '\n') linenum++;
  195.    if (!c) yyerror("unterminated comment");
  196. }
  197.  
  198. char *walloc(s) char *s;
  199. {  char *p, *malloc();
  200.  
  201.    p = malloc((unsigned) (strlen(s) + 1));
  202.    if (p == (char *) 0) yyerror("out of variable string space");
  203.    strcpy(p, s);
  204.    return(p);
  205. }
  206.  
  207. static int slexsave(type)
  208. int type;
  209. {
  210.  
  211.     yylval.c = walloc(&yytext[1]);
  212.     if (yylval.c == 0) yerr("cannot create symbol %s", yytext);
  213.     return(type);
  214. }
  215.  
  216. static int lexsave(type)
  217. int type;
  218. {
  219.  
  220.     yylval.c = walloc(yytext);
  221.     if (yylval.c == 0) yerr("cannot create string %s", yytext);
  222.     return(type);
  223. }
  224.  
  225. static int varlex()
  226. {
  227.  
  228.    lexsave(0);
  229.    if (yytext[yyleng-1] == ':') return(KEYWORD);
  230.    else if (islower(yytext[0])) return(LOWERCASEVAR);
  231.    else return(UPPERCASEVAR);
  232. }
  233.  
  234. static int lexlstr()
  235. {  char *p, *q;
  236.  
  237.    yylval.c = p = walloc(&yytext[1]);
  238.    *(p + yyleng -2) = '\0';
  239.    return(LITSTR);
  240. }
  241.  
  242. static int prim_number(name)
  243. char *name;
  244. {    struct prim_names *p;
  245.  
  246.     for (p = prim_table; *(p->p_name); p++) {
  247.         if (strcmp(p->p_name, name) == 0)
  248.             return(p->p_number);
  249.         }
  250.     yerr("unknown primitive name %s", name);
  251.     return(0);
  252. }
  253. int yyvstop[] ={
  254. 0,
  255.  
  256. 36,
  257. 0,
  258.  
  259. 1,
  260. 0,
  261.  
  262. 2,
  263. 0,
  264.  
  265. 32,
  266. 36,
  267. 0,
  268.  
  269. 3,
  270. 36,
  271. 0,
  272.  
  273. 15,
  274. 36,
  275. 0,
  276.  
  277. 36,
  278. 0,
  279.  
  280. 36,
  281. 0,
  282.  
  283. 24,
  284. 36,
  285. 0,
  286.  
  287. 25,
  288. 36,
  289. 0,
  290.  
  291. 23,
  292. 36,
  293. 0,
  294.  
  295. 28,
  296. 36,
  297. 0,
  298.  
  299. 17,
  300. 18,
  301. 20,
  302. 0,
  303.  
  304. 36,
  305. 0,
  306.  
  307. 33,
  308. 36,
  309. 0,
  310.  
  311. 36,
  312. 0,
  313.  
  314. 35,
  315. 36,
  316. 0,
  317.  
  318. 20,
  319. 0,
  320.  
  321. 20,
  322. 0,
  323.  
  324. 26,
  325. 36,
  326. 0,
  327.  
  328. 27,
  329. 36,
  330. 0,
  331.  
  332. 34,
  333. 36,
  334. 0,
  335.  
  336. 20,
  337. 0,
  338.  
  339. 20,
  340. 0,
  341.  
  342. 20,
  343. 0,
  344.  
  345. 20,
  346. 0,
  347.  
  348. 31,
  349. 36,
  350. 0,
  351.  
  352. 30,
  353. 32,
  354. 36,
  355. 0,
  356.  
  357. 29,
  358. 31,
  359. 36,
  360. 0,
  361.  
  362. 22,
  363. 0,
  364.  
  365. 14,
  366. 0,
  367.  
  368. 19,
  369. 0,
  370.  
  371. 20,
  372. 0,
  373.  
  374. 20,
  375. 0,
  376.  
  377. 20,
  378. 0,
  379.  
  380. 21,
  381. 0,
  382.  
  383. 4,
  384. 0,
  385.  
  386. 5,
  387. 0,
  388.  
  389. 38,
  390. 0,
  391.  
  392. 38,
  393. 0,
  394.  
  395. 20,
  396. 0,
  397.  
  398. 20,
  399. 0,
  400.  
  401. 20,
  402. 0,
  403.  
  404. 20,
  405. 0,
  406.  
  407. 20,
  408. 0,
  409.  
  410. 20,
  411. 0,
  412.  
  413. 20,
  414. 0,
  415.  
  416. 18,
  417. 0,
  418.  
  419. 18,
  420. 20,
  421. 0,
  422.  
  423. 16,
  424. 20,
  425. 0,
  426.  
  427. 38,
  428. 0,
  429.  
  430. 20,
  431. 0,
  432.  
  433. 20,
  434. 0,
  435.  
  436. 10,
  437. 20,
  438. 0,
  439.  
  440. 20,
  441. 0,
  442.  
  443. 20,
  444. 0,
  445.  
  446. 20,
  447. 0,
  448.  
  449. 20,
  450. 0,
  451.  
  452. 18,
  453. 0,
  454.  
  455. 16,
  456. 0,
  457.  
  458. 20,
  459. 0,
  460.  
  461. 38,
  462. 0,
  463.  
  464. 20,
  465. 0,
  466.  
  467. 20,
  468. 0,
  469.  
  470. 7,
  471. 20,
  472. 0,
  473.  
  474. 20,
  475. 0,
  476.  
  477. 20,
  478. 0,
  479.  
  480. 11,
  481. 20,
  482. 0,
  483.  
  484. 16,
  485. 0,
  486.  
  487. 16,
  488. 20,
  489. 0,
  490.  
  491. 38,
  492. 0,
  493.  
  494. 6,
  495. 20,
  496. 0,
  497.  
  498. 12,
  499. 20,
  500. 0,
  501.  
  502. 20,
  503. 0,
  504.  
  505. 20,
  506. 0,
  507.  
  508. 9,
  509. 20,
  510. 0,
  511.  
  512. 16,
  513. 0,
  514.  
  515. 38,
  516. 0,
  517.  
  518. 20,
  519. 0,
  520.  
  521. 20,
  522. 0,
  523.  
  524. 38,
  525. 0,
  526.  
  527. 20,
  528. 0,
  529.  
  530. 20,
  531. 0,
  532.  
  533. 38,
  534. 0,
  535.  
  536. 20,
  537. 0,
  538.  
  539. 20,
  540. 0,
  541.  
  542. 38,
  543. 0,
  544.  
  545. 20,
  546. 0,
  547.  
  548. 13,
  549. 20,
  550. 0,
  551.  
  552. 37,
  553. 38,
  554. 0,
  555.  
  556. 20,
  557. 0,
  558.  
  559. 8,
  560. 20,
  561. 0,
  562. 0};
  563. # define YYTYPE char
  564. struct yywork { YYTYPE verify, advance; } yycrank[] ={
  565. 0,0,    0,0,    1,3,    0,0,    
  566. 0,0,    0,0,    0,0,    0,0,    
  567. 0,0,    0,0,    1,4,    1,5,    
  568. 0,0,    0,0,    0,0,    4,4,    
  569. 0,0,    0,0,    0,0,    0,0,    
  570. 0,0,    0,0,    0,0,    0,0,    
  571. 0,0,    0,0,    0,0,    0,0,    
  572. 0,0,    0,0,    0,0,    0,0,    
  573. 0,0,    0,0,    1,6,    1,7,    
  574. 1,8,    1,9,    4,4,    0,0,    
  575. 1,10,    1,11,    1,12,    0,0,    
  576. 1,3,    0,0,    1,13,    1,14,    
  577. 0,0,    1,15,    0,0,    0,0,    
  578. 0,0,    0,0,    0,0,    0,0,    
  579. 0,0,    0,0,    0,0,    1,16,    
  580. 1,17,    1,18,    0,0,    1,19,    
  581. 0,0,    0,0,    1,20,    0,0,    
  582. 1,21,    0,0,    0,0,    65,53,    
  583. 0,0,    65,53,    0,0,    2,30,    
  584. 2,7,    2,8,    2,9,    0,0,    
  585. 0,0,    8,32,    0,0,    2,12,    
  586. 0,0,    0,0,    0,0,    2,13,    
  587. 2,14,    8,0,    8,0,    0,0,    
  588. 1,22,    0,0,    1,23,    1,24,    
  589. 0,0,    0,0,    1,20,    9,33,    
  590. 2,16,    2,17,    2,18,    1,25,    
  591. 2,19,    25,46,    45,58,    9,33,    
  592. 9,0,    2,21,    21,45,    1,26,    
  593. 8,0,    26,47,    46,59,    47,60,    
  594. 1,27,    1,28,    28,51,    8,32,    
  595. 8,0,    8,0,    10,34,    8,32,    
  596. 27,48,    1,29,    8,0,    44,57,    
  597. 8,32,    48,61,    10,34,    10,34,    
  598. 27,49,    2,22,    49,62,    2,23,    
  599. 2,24,    9,33,    9,33,    50,63,    
  600. 27,50,    9,33,    51,64,    52,65,    
  601. 2,25,    8,32,    9,33,    57,70,    
  602. 58,71,    59,72,    61,73,    62,74,    
  603. 2,26,    63,75,    64,76,    70,81,    
  604. 71,82,    2,27,    2,28,    67,68,    
  605. 10,35,    10,34,    72,83,    9,33,    
  606. 10,34,    73,84,    2,31,    74,85,    
  607. 75,86,    10,34,    78,77,    8,0,    
  608. 81,88,    84,89,    85,90,    88,91,    
  609. 89,92,    8,32,    90,93,    91,94,    
  610. 92,95,    93,96,    94,97,    95,98,    
  611. 96,99,    97,100,    10,34,    98,101,    
  612. 101,102,    0,0,    0,0,    0,0,    
  613. 0,0,    0,0,    0,0,    9,33,    
  614. 0,0,    0,0,    0,0,    0,0,    
  615. 15,36,    0,0,    15,15,    15,15,    
  616. 15,15,    15,15,    15,15,    15,15,    
  617. 15,15,    15,15,    15,15,    15,15,    
  618. 15,37,    0,0,    67,77,    0,0,    
  619. 0,0,    0,0,    10,34,    15,20,    
  620. 15,20,    15,20,    15,20,    15,20,    
  621. 15,20,    15,20,    15,20,    15,20,    
  622. 15,20,    15,20,    15,20,    15,20,    
  623. 15,20,    15,20,    15,20,    15,20,    
  624. 15,20,    15,20,    15,20,    15,20,    
  625. 15,20,    15,20,    15,20,    15,20,    
  626. 15,20,    0,0,    0,0,    0,0,    
  627. 0,0,    0,0,    0,0,    15,20,    
  628. 15,20,    15,20,    15,20,    15,38,    
  629. 15,20,    15,20,    15,20,    15,20,    
  630. 15,20,    15,20,    15,20,    15,20,    
  631. 15,20,    15,20,    15,20,    15,20,    
  632. 15,39,    15,20,    15,20,    15,20,    
  633. 15,20,    15,20,    15,20,    15,20,    
  634. 15,20,    16,40,    16,40,    16,40,    
  635. 16,40,    16,40,    16,40,    16,40,    
  636. 16,40,    16,40,    16,40,    0,0,    
  637. 0,0,    0,0,    16,41,    0,0,    
  638. 0,0,    0,0,    16,40,    16,40,    
  639. 16,40,    16,40,    16,40,    16,40,    
  640. 16,40,    16,40,    16,40,    16,40,    
  641. 16,40,    16,40,    16,40,    16,40,    
  642. 16,40,    16,40,    16,40,    16,40,    
  643. 16,40,    16,40,    16,40,    16,40,    
  644. 16,40,    16,40,    16,40,    16,40,    
  645. 0,0,    0,0,    0,0,    0,0,    
  646. 0,0,    0,0,    16,40,    16,40,    
  647. 16,40,    16,40,    16,40,    16,40,    
  648. 16,40,    16,40,    16,40,    16,40,    
  649. 16,40,    16,40,    16,40,    16,40,    
  650. 16,40,    16,40,    16,40,    16,40,    
  651. 16,40,    16,40,    16,40,    16,40,    
  652. 16,40,    16,40,    16,40,    16,40,    
  653. 18,42,    0,0,    0,0,    18,43,    
  654. 18,43,    18,43,    18,43,    18,43,    
  655. 18,43,    18,43,    18,43,    18,43,    
  656. 18,43,    0,0,    0,0,    0,0,    
  657. 0,0,    0,0,    0,0,    0,0,    
  658. 18,43,    18,43,    18,43,    18,43,    
  659. 18,43,    18,43,    18,43,    18,43,    
  660. 18,43,    18,43,    18,43,    18,43,    
  661. 18,43,    18,43,    18,43,    18,43,    
  662. 18,43,    18,43,    18,43,    18,43,    
  663. 18,43,    18,43,    18,43,    18,43,    
  664. 18,43,    18,43,    0,0,    0,0,    
  665. 0,0,    0,0,    0,0,    0,0,    
  666. 18,43,    18,43,    18,43,    18,43,    
  667. 18,43,    18,43,    18,43,    18,43,    
  668. 18,43,    18,43,    18,43,    18,43,    
  669. 18,43,    18,43,    18,43,    18,44,    
  670. 18,43,    18,43,    18,43,    18,43,    
  671. 18,43,    18,43,    18,43,    18,43,    
  672. 18,43,    18,43,    20,20,    20,20,    
  673. 20,20,    20,20,    20,20,    20,20,    
  674. 20,20,    20,20,    20,20,    20,20,    
  675. 20,37,    0,0,    0,0,    0,0,    
  676. 0,0,    0,0,    0,0,    20,20,    
  677. 20,20,    20,20,    20,20,    20,20,    
  678. 20,20,    20,20,    20,20,    20,20,    
  679. 20,20,    20,20,    20,20,    20,20,    
  680. 20,20,    20,20,    20,20,    20,20,    
  681. 20,20,    20,20,    20,20,    20,20,    
  682. 20,20,    20,20,    20,20,    20,20,    
  683. 20,20,    0,0,    0,0,    0,0,    
  684. 0,0,    0,0,    0,0,    20,20,    
  685. 20,20,    20,20,    20,20,    20,20,    
  686. 20,20,    20,20,    20,20,    20,20,    
  687. 20,20,    20,20,    20,20,    20,20,    
  688. 20,20,    20,20,    20,20,    20,20,    
  689. 20,20,    20,20,    20,20,    20,20,    
  690. 20,20,    20,20,    20,20,    20,20,    
  691. 20,20,    32,0,    32,0,    36,52,    
  692. 36,52,    36,52,    36,52,    36,52,    
  693. 36,52,    36,52,    36,52,    36,52,    
  694. 36,52,    53,66,    53,66,    53,66,    
  695. 53,66,    53,66,    53,66,    53,66,    
  696. 53,66,    53,66,    53,66,    0,0,    
  697. 32,0,    0,0,    0,0,    0,0,    
  698. 0,0,    0,0,    0,0,    0,0,    
  699. 32,0,    32,0,    38,53,    0,0,    
  700. 38,53,    0,0,    32,0,    38,54,    
  701. 38,54,    38,54,    38,54,    38,54,    
  702. 38,54,    38,54,    38,54,    38,54,    
  703. 38,54,    54,54,    54,54,    54,54,    
  704. 54,54,    54,54,    54,54,    54,54,    
  705. 54,54,    54,54,    54,54,    0,0,    
  706. 0,0,    0,0,    0,0,    0,0,    
  707. 39,55,    0,0,    0,0,    39,56,    
  708. 39,56,    39,56,    39,56,    39,56,    
  709. 39,56,    39,56,    39,56,    39,56,    
  710. 39,56,    0,0,    0,0,    0,0,    
  711. 0,0,    0,0,    0,0,    32,0,    
  712. 39,56,    39,56,    39,56,    39,56,    
  713. 39,56,    39,56,    39,56,    39,56,    
  714. 39,56,    39,56,    39,56,    39,56,    
  715. 39,56,    39,56,    39,56,    39,56,    
  716. 39,56,    39,56,    39,56,    39,56,    
  717. 39,56,    39,56,    39,56,    39,56,    
  718. 39,56,    39,56,    40,40,    40,40,    
  719. 40,40,    40,40,    40,40,    40,40,    
  720. 40,40,    40,40,    40,40,    40,40,    
  721. 0,0,    0,0,    0,0,    0,0,    
  722. 0,0,    0,0,    0,0,    40,40,    
  723. 40,40,    40,40,    40,40,    40,40,    
  724. 40,40,    40,40,    40,40,    40,40,    
  725. 40,40,    40,40,    40,40,    40,40,    
  726. 40,40,    40,40,    40,40,    40,40,    
  727. 40,40,    40,40,    40,40,    40,40,    
  728. 40,40,    40,40,    40,40,    40,40,    
  729. 40,40,    0,0,    0,0,    0,0,    
  730. 0,0,    0,0,    0,0,    40,40,    
  731. 40,40,    40,40,    40,40,    40,40,    
  732. 40,40,    40,40,    40,40,    40,40,    
  733. 40,40,    40,40,    40,40,    40,40,    
  734. 40,40,    40,40,    40,40,    40,40,    
  735. 40,40,    40,40,    40,40,    40,40,    
  736. 40,40,    40,40,    40,40,    40,40,    
  737. 40,40,    43,43,    43,43,    43,43,    
  738. 43,43,    43,43,    43,43,    43,43,    
  739. 43,43,    43,43,    43,43,    0,0,    
  740. 0,0,    0,0,    0,0,    0,0,    
  741. 0,0,    0,0,    43,43,    43,43,    
  742. 43,43,    43,43,    43,43,    43,43,    
  743. 43,43,    43,43,    43,43,    43,43,    
  744. 43,43,    43,43,    43,43,    43,43,    
  745. 43,43,    43,43,    43,43,    43,43,    
  746. 43,43,    43,43,    43,43,    43,43,    
  747. 43,43,    43,43,    43,43,    43,43,    
  748. 0,0,    0,0,    0,0,    0,0,    
  749. 0,0,    0,0,    43,43,    43,43,    
  750. 43,43,    43,43,    43,43,    43,43,    
  751. 43,43,    43,43,    43,43,    43,43,    
  752. 43,43,    43,43,    43,43,    43,43,    
  753. 43,43,    43,43,    43,43,    43,43,    
  754. 43,43,    43,43,    43,43,    43,43,    
  755. 43,43,    43,43,    43,43,    43,43,    
  756. 55,67,    55,67,    55,67,    55,67,    
  757. 55,67,    55,67,    55,67,    55,67,    
  758. 55,67,    55,67,    0,0,    0,0,    
  759. 0,0,    0,0,    0,0,    0,0,    
  760. 0,0,    55,67,    55,67,    55,67,    
  761. 55,67,    55,67,    55,67,    55,67,    
  762. 55,67,    55,67,    55,67,    55,67,    
  763. 55,67,    55,67,    55,67,    55,67,    
  764. 55,67,    55,67,    55,67,    55,67,    
  765. 55,67,    55,67,    55,67,    55,67,    
  766. 55,67,    55,67,    55,67,    56,68,    
  767. 0,0,    56,56,    56,56,    56,56,    
  768. 56,56,    56,56,    56,56,    56,56,    
  769. 56,56,    56,56,    56,56,    0,0,    
  770. 0,0,    0,0,    0,0,    0,0,    
  771. 0,0,    0,0,    56,56,    56,56,    
  772. 56,56,    56,56,    56,56,    56,56,    
  773. 56,56,    56,56,    56,56,    56,56,    
  774. 56,56,    56,56,    56,56,    56,56,    
  775. 56,56,    56,56,    56,56,    56,56,    
  776. 56,56,    56,56,    56,56,    56,56,    
  777. 56,56,    56,56,    56,56,    56,56,    
  778. 68,78,    68,78,    68,78,    68,78,    
  779. 68,78,    68,78,    68,78,    68,78,    
  780. 68,78,    68,78,    56,69,    0,0,    
  781. 0,0,    0,0,    0,0,    0,0,    
  782. 0,0,    68,78,    68,78,    68,78,    
  783. 68,78,    68,78,    68,78,    68,78,    
  784. 68,78,    68,78,    68,78,    68,78,    
  785. 68,78,    68,78,    68,78,    68,78,    
  786. 68,78,    68,78,    68,78,    68,78,    
  787. 68,78,    68,78,    68,78,    68,78,    
  788. 68,78,    68,78,    68,78,    69,79,    
  789. 0,0,    69,79,    0,0,    0,0,    
  790. 69,80,    69,80,    69,80,    69,80,    
  791. 69,80,    69,80,    69,80,    69,80,    
  792. 69,80,    69,80,    77,79,    0,0,    
  793. 77,79,    0,0,    0,0,    77,87,    
  794. 77,87,    77,87,    77,87,    77,87,    
  795. 77,87,    77,87,    77,87,    77,87,    
  796. 77,87,    79,87,    79,87,    79,87,    
  797. 79,87,    79,87,    79,87,    79,87,    
  798. 79,87,    79,87,    79,87,    80,80,    
  799. 80,80,    80,80,    80,80,    80,80,    
  800. 80,80,    80,80,    80,80,    80,80,    
  801. 80,80,    0,0,    0,0,    0,0,    
  802. 0,0};
  803. struct yysvf yysvec[] ={
  804. 0,    0,    0,
  805. yycrank+-1,    0,        0,    
  806. yycrank+-42,    yysvec+1,    0,    
  807. yycrank+0,    0,        yyvstop+1,
  808. yycrank+6,    0,        yyvstop+3,
  809. yycrank+0,    0,        yyvstop+5,
  810. yycrank+0,    0,        yyvstop+7,
  811. yycrank+0,    0,        yyvstop+10,
  812. yycrank+-80,    0,        yyvstop+13,
  813. yycrank+-98,    0,        yyvstop+16,
  814. yycrank+-121,    0,        yyvstop+18,
  815. yycrank+0,    0,        yyvstop+20,
  816. yycrank+0,    0,        yyvstop+23,
  817. yycrank+0,    0,        yyvstop+26,
  818. yycrank+0,    0,        yyvstop+29,
  819. yycrank+154,    0,        yyvstop+32,
  820. yycrank+229,    0,        yyvstop+36,
  821. yycrank+0,    0,        yyvstop+38,
  822. yycrank+307,    0,        yyvstop+41,
  823. yycrank+0,    0,        yyvstop+43,
  824. yycrank+382,    0,        yyvstop+46,
  825. yycrank+2,    yysvec+20,    yyvstop+48,
  826. yycrank+0,    0,        yyvstop+50,
  827. yycrank+0,    0,        yyvstop+53,
  828. yycrank+0,    0,        yyvstop+56,
  829. yycrank+8,    yysvec+20,    yyvstop+59,
  830. yycrank+8,    yysvec+20,    yyvstop+61,
  831. yycrank+23,    yysvec+20,    yyvstop+63,
  832. yycrank+4,    yysvec+20,    yyvstop+65,
  833. yycrank+0,    0,        yyvstop+67,
  834. yycrank+0,    0,        yyvstop+70,
  835. yycrank+0,    0,        yyvstop+74,
  836. yycrank+-496,    yysvec+8,    yyvstop+78,
  837. yycrank+0,    0,        yyvstop+80,
  838. yycrank+0,    yysvec+10,    0,    
  839. yycrank+0,    0,        yyvstop+82,
  840. yycrank+459,    0,        0,    
  841. yycrank+0,    0,        yyvstop+84,
  842. yycrank+495,    yysvec+20,    yyvstop+86,
  843. yycrank+523,    yysvec+20,    yyvstop+88,
  844. yycrank+566,    0,        yyvstop+90,
  845. yycrank+0,    0,        yyvstop+92,
  846. yycrank+0,    0,        yyvstop+94,
  847. yycrank+641,    0,        yyvstop+96,
  848. yycrank+13,    yysvec+43,    yyvstop+98,
  849. yycrank+9,    yysvec+20,    yyvstop+100,
  850. yycrank+6,    yysvec+20,    yyvstop+102,
  851. yycrank+7,    yysvec+20,    yyvstop+104,
  852. yycrank+21,    yysvec+20,    yyvstop+106,
  853. yycrank+37,    yysvec+20,    yyvstop+108,
  854. yycrank+27,    yysvec+20,    yyvstop+110,
  855. yycrank+25,    yysvec+20,    yyvstop+112,
  856. yycrank+42,    yysvec+36,    yyvstop+114,
  857. yycrank+469,    0,        0,    
  858. yycrank+505,    yysvec+20,    yyvstop+116,
  859. yycrank+716,    0,        0,    
  860. yycrank+761,    yysvec+20,    yyvstop+119,
  861. yycrank+42,    yysvec+43,    yyvstop+122,
  862. yycrank+33,    yysvec+20,    yyvstop+124,
  863. yycrank+34,    yysvec+20,    yyvstop+126,
  864. yycrank+0,    yysvec+20,    yyvstop+128,
  865. yycrank+48,    yysvec+20,    yyvstop+131,
  866. yycrank+43,    yysvec+20,    yyvstop+133,
  867. yycrank+52,    yysvec+20,    yyvstop+135,
  868. yycrank+53,    yysvec+20,    yyvstop+137,
  869. yycrank+28,    yysvec+53,    0,    
  870. yycrank+0,    yysvec+53,    yyvstop+139,
  871. yycrank+113,    yysvec+55,    yyvstop+141,
  872. yycrank+804,    0,        0,    
  873. yycrank+852,    yysvec+20,    yyvstop+143,
  874. yycrank+46,    yysvec+43,    yyvstop+145,
  875. yycrank+41,    yysvec+20,    yyvstop+147,
  876. yycrank+61,    yysvec+20,    yyvstop+149,
  877. yycrank+85,    yysvec+20,    yyvstop+151,
  878. yycrank+59,    yysvec+20,    yyvstop+154,
  879. yycrank+54,    yysvec+20,    yyvstop+156,
  880. yycrank+0,    yysvec+20,    yyvstop+158,
  881. yycrank+867,    0,        0,    
  882. yycrank+69,    yysvec+68,    yyvstop+161,
  883. yycrank+877,    0,        0,    
  884. yycrank+887,    yysvec+20,    yyvstop+163,
  885. yycrank+67,    yysvec+43,    yyvstop+166,
  886. yycrank+0,    yysvec+20,    yyvstop+168,
  887. yycrank+0,    yysvec+20,    yyvstop+171,
  888. yycrank+59,    yysvec+20,    yyvstop+174,
  889. yycrank+58,    yysvec+20,    yyvstop+176,
  890. yycrank+0,    yysvec+20,    yyvstop+178,
  891. yycrank+0,    yysvec+79,    yyvstop+181,
  892. yycrank+59,    yysvec+43,    yyvstop+183,
  893. yycrank+65,    yysvec+20,    yyvstop+185,
  894. yycrank+81,    yysvec+20,    yyvstop+187,
  895. yycrank+74,    yysvec+43,    yyvstop+189,
  896. yycrank+81,    yysvec+20,    yyvstop+191,
  897. yycrank+73,    yysvec+20,    yyvstop+193,
  898. yycrank+64,    yysvec+43,    yyvstop+195,
  899. yycrank+82,    yysvec+20,    yyvstop+197,
  900. yycrank+77,    yysvec+20,    yyvstop+199,
  901. yycrank+84,    yysvec+43,    yyvstop+201,
  902. yycrank+72,    yysvec+20,    yyvstop+203,
  903. yycrank+0,    yysvec+20,    yyvstop+205,
  904. yycrank+0,    yysvec+43,    yyvstop+208,
  905. yycrank+73,    yysvec+20,    yyvstop+211,
  906. yycrank+0,    yysvec+20,    yyvstop+213,
  907. 0,    0,    0};
  908. struct yywork *yytop = yycrank+944;
  909. struct yysvf *yybgin = yysvec+1;
  910. char yymatch[] ={
  911. 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  912. 01  ,011 ,012 ,01  ,01  ,01  ,01  ,01  ,
  913. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  914. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  915. 011 ,01  ,01  ,01  ,01  ,01  ,01  ,047 ,
  916. '(' ,'(' ,01  ,'+' ,01  ,'+' ,'(' ,01  ,
  917. '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
  918. '0' ,'0' ,01  ,01  ,01  ,01  ,01  ,01  ,
  919. 01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  920. 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  921. 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
  922. 'A' ,'A' ,'A' ,'(' ,01  ,01  ,01  ,01  ,
  923. 01  ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,
  924. 'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,
  925. 'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,
  926. 'a' ,'a' ,'a' ,01  ,01  ,01  ,01  ,01  ,
  927. 0};
  928. char yyextra[] ={
  929. 0,0,0,0,0,0,0,0,
  930. 0,0,0,0,0,0,0,0,
  931. 0,0,0,0,0,0,0,0,
  932. 0,0,0,0,0,0,0,0,
  933. 0,0,0,0,0,0,0,0,
  934. 0};
  935. /*    ncform    4.1    83/08/11    */
  936.  
  937. int yylineno =1;
  938. # define YYU(x) x
  939. # define NLSTATE yyprevious=YYNEWLINE
  940. char yytext[YYLMAX];
  941. struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
  942. char yysbuf[YYLMAX];
  943. char *yysptr = yysbuf;
  944. int *yyfnd;
  945. extern struct yysvf *yyestate;
  946. int yyprevious = YYNEWLINE;
  947. yylook(){
  948.     register struct yysvf *yystate, **lsp;
  949.     register struct yywork *yyt;
  950.     struct yysvf *yyz;
  951.     int yych;
  952.     struct yywork *yyr;
  953. # ifdef LEXDEBUG
  954.     int debug;
  955. # endif
  956.     char *yylastch;
  957.     /* start off machines */
  958. # ifdef LEXDEBUG
  959.     debug = 0;
  960. # endif
  961.     if (!yymorfg)
  962.         yylastch = yytext;
  963.     else {
  964.         yymorfg=0;
  965.         yylastch = yytext+yyleng;
  966.         }
  967.     for(;;){
  968.         lsp = yylstate;
  969.         yyestate = yystate = yybgin;
  970.         if (yyprevious==YYNEWLINE) yystate++;
  971.         for (;;){
  972. # ifdef LEXDEBUG
  973.             if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
  974. # endif
  975.             yyt = yystate->yystoff;
  976.             if(yyt == yycrank){        /* may not be any transitions */
  977.                 yyz = yystate->yyother;
  978.                 if(yyz == 0)break;
  979.                 if(yyz->yystoff == yycrank)break;
  980.                 }
  981.             *yylastch++ = yych = input();
  982.         tryagain:
  983. # ifdef LEXDEBUG
  984.             if(debug){
  985.                 fprintf(yyout,"char ");
  986.                 allprint(yych);
  987.                 putchar('\n');
  988.                 }
  989. # endif
  990.             yyr = yyt;
  991.             if ( (int)yyt > (int)yycrank){
  992.                 yyt = yyr + yych;
  993.                 if (yyt <= yytop && yyt->verify+yysvec == yystate){
  994.                     if(yyt->advance+yysvec == YYLERR)    /* error transitions */
  995.                         {unput(*--yylastch);break;}
  996.                     *lsp++ = yystate = yyt->advance+yysvec;
  997.                     goto contin;
  998.                     }
  999.                 }
  1000. # ifdef YYOPTIM
  1001.             else if((int)yyt < (int)yycrank) {        /* r < yycrank */
  1002.                 yyt = yyr = yycrank+(yycrank-yyt);
  1003. # ifdef LEXDEBUG
  1004.                 if(debug)fprintf(yyout,"compressed state\n");
  1005. # endif
  1006.                 yyt = yyt + yych;
  1007.                 if(yyt <= yytop && yyt->verify+yysvec == yystate){
  1008.                     if(yyt->advance+yysvec == YYLERR)    /* error transitions */
  1009.                         {unput(*--yylastch);break;}
  1010.                     *lsp++ = yystate = yyt->advance+yysvec;
  1011.                     goto contin;
  1012.                     }
  1013.                 yyt = yyr + YYU(yymatch[yych]);
  1014. # ifdef LEXDEBUG
  1015.                 if(debug){
  1016.                     fprintf(yyout,"try fall back character ");
  1017.                     allprint(YYU(yymatch[yych]));
  1018.                     putchar('\n');
  1019.                     }
  1020. # endif
  1021.                 if(yyt <= yytop && yyt->verify+yysvec == yystate){
  1022.                     if(yyt->advance+yysvec == YYLERR)    /* error transition */
  1023.                         {unput(*--yylastch);break;}
  1024.                     *lsp++ = yystate = yyt->advance+yysvec;
  1025.                     goto contin;
  1026.                     }
  1027.                 }
  1028.             if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
  1029. # ifdef LEXDEBUG
  1030.                 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
  1031. # endif
  1032.                 goto tryagain;
  1033.                 }
  1034. # endif
  1035.             else
  1036.                 {unput(*--yylastch);break;}
  1037.         contin:
  1038. # ifdef LEXDEBUG
  1039.             if(debug){
  1040.                 fprintf(yyout,"state %d char ",yystate-yysvec-1);
  1041.                 allprint(yych);
  1042.                 putchar('\n');
  1043.                 }
  1044. # endif
  1045.             ;
  1046.             }
  1047. # ifdef LEXDEBUG
  1048.         if(debug){
  1049.             fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
  1050.             allprint(yych);
  1051.             putchar('\n');
  1052.             }
  1053. # endif
  1054.         while (lsp-- > yylstate){
  1055.             *yylastch-- = 0;
  1056.             if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
  1057.                 yyolsp = lsp;
  1058.                 if(yyextra[*yyfnd]){        /* must backup */
  1059.                     while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
  1060.                         lsp--;
  1061.                         unput(*yylastch--);
  1062.                         }
  1063.                     }
  1064.                 yyprevious = YYU(*yylastch);
  1065.                 yylsp = lsp;
  1066.                 yyleng = yylastch-yytext+1;
  1067.                 yytext[yyleng] = 0;
  1068. # ifdef LEXDEBUG
  1069.                 if(debug){
  1070.                     fprintf(yyout,"\nmatch ");
  1071.                     sprint(yytext);
  1072.                     fprintf(yyout," action %d\n",*yyfnd);
  1073.                     }
  1074. # endif
  1075.                 return(*yyfnd++);
  1076.                 }
  1077.             unput(*yylastch);
  1078.             }
  1079.         if (yytext[0] == 0  /* && feof(yyin) */)
  1080.             {
  1081.             yysptr=yysbuf;
  1082.             return(0);
  1083.             }
  1084.         yyprevious = yytext[0] = input();
  1085.         if (yyprevious>0)
  1086.             output(yyprevious);
  1087.         yylastch=yytext;
  1088. # ifdef LEXDEBUG
  1089.         if(debug)putchar('\n');
  1090. # endif
  1091.         }
  1092.     }
  1093. yyback(p, m)
  1094.     int *p;
  1095. {
  1096. if (p==0) return(0);
  1097. while (*p)
  1098.     {
  1099.     if (*p++ == m)
  1100.         return(1);
  1101.     }
  1102. return(0);
  1103. }
  1104.     /* the following are only used in the lex library */
  1105. yyinput(){
  1106.     return(input());
  1107.     }
  1108. yyoutput(c)
  1109.   int c; {
  1110.     output(c);
  1111.     }
  1112. yyunput(c)
  1113.    int c; {
  1114.     unput(c);
  1115.     }
  1116.