home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Graphics / graphics-16000.iso / msdos / raytrace / rayshade / etc / rsconver / lexyy.c < prev    next >
C/C++ Source or Header  |  1992-04-30  |  28KB  |  912 lines

  1. #define YY_DEFAULT_ACTION ECHO;
  2. #define FLEX_USE_ECS
  3. #define FLEX_USE_MECS
  4. /* A lexical scanner generated by flex */
  5.  
  6. #include "skeleton.h"
  7.  
  8. #define INITIAL 0
  9. /* lex.l                                   */
  10. /* Copyright (C) 1989, 1991, Craig E. Kolb                   */
  11. /* All rights reserved.                               */
  12. /*                                       */
  13. /* This software may be freely copied, modified, and redistributed,       */
  14. /* provided that this copyright notice is preserved on all copies.       */
  15. /*                                       */
  16. /* You may not distribute this software, in whole or in part, as part of   */
  17. /* any commercial product without the express consent of the authors.       */
  18. /*                                        */
  19. /* There is no warranty or other guarantee of fitness of this software       */
  20. /* for any purpose.  It is provided solely "as is".               */
  21. /* $Id: lex.l,v 4.0.1.1 91/11/26 21:12:29 cek Exp Locker: cek $ */
  22. #include "config.h"
  23. #include <stdio.h>
  24. #ifdef I_STRING
  25. #include <string.h>
  26. #else
  27. #include <strings.h>
  28. #endif
  29. #include "common.h"
  30. #include "yacc_tab.h"
  31. #define YY_JAM 299
  32. #define YY_JAM_BASE 601
  33. #define YY_TEMPLATE 300
  34. static char l[300] =
  35.     {   0,
  36.        -2,   -2,   62,    1,    2,    3,   62,   62,   57,   58,
  37.        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
  38.        57,   57,   57,   57,   57,   57,   57,   57,   57,    4,
  39.         0,   58,   60,    5,   57,   59,    0,   57,   57,   57,
  40.        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
  41.        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
  42.        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
  43.        57,   57,   57,   57,   55,   57,    0,   59,    0,    0,
  44.        61,   57,   57,   57,   57,   10,   57,   57,   57,   57,
  45.        57,   57,   57,   57,   57,   57,   23,   57,   26,   27,
  46.  
  47.        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
  48.        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
  49.        57,   57,   57,   57,   57,   57,   57,    0,   60,    0,
  50.         0,   59,   57,   57,   57,   57,   11,   57,   13,   57,
  51.        57,   57,   57,   57,   57,   57,   57,   22,   57,   57,
  52.        57,   29,   57,   57,   57,   33,   57,   57,   57,   37,
  53.        57,   57,   57,   57,   42,   57,   57,   57,   57,   57,
  54.        57,   57,   57,   57,   57,   57,   56,    0,   59,   57,
  55.        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
  56.        57,   57,   57,   57,   28,   57,   57,   32,   34,   57,
  57.  
  58.        57,   57,   57,   40,   41,   57,   57,   57,   46,   57,
  59.        57,   57,   57,   57,   57,   57,   57,   57,   57,    9,
  60.        57,   57,   15,   57,   17,   18,   57,   57,   57,   57,
  61.        57,   57,   57,   35,   57,   38,   57,   57,   44,   57,
  62.        47,   48,   49,   57,   57,   57,   57,   57,   57,   57,
  63.        57,   12,   57,   57,   57,   20,   57,   24,   57,   57,
  64.        57,   57,   39,   57,   45,   50,   51,   57,   57,   57,
  65.         6,    7,   57,   14,   16,   57,   21,   57,   57,   31,
  66.        36,   57,   57,   57,   54,   57,   57,   25,   57,   57,
  67.        52,   53,    8,   57,   57,   43,   19,   30,    0
  68.  
  69.     } ;
  70.  
  71. static char e[128] =
  72.     {   0,
  73.         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
  74.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  75.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  76.         1,    4,    1,    1,    5,    1,    1,    1,    1,    1,
  77.         1,    6,    7,    1,    8,    9,   10,   11,   11,   11,
  78.        11,   11,   11,   11,   11,   11,   11,    1,    1,    1,
  79.         1,    1,    1,    1,   12,   12,   12,   12,   13,   12,
  80.        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
  81.        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
  82.         1,    1,    1,    1,   14,    1,   15,   16,   17,   18,
  83.  
  84.        19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
  85.        29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
  86.        39,   12,    1,    1,    1,    1,    1
  87.     } ;
  88.  
  89. static char m[40] =
  90.     {   0,
  91.         1,    1,    1,    1,    1,    2,    1,    2,    2,    2,
  92.         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
  93.         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
  94.         2,    2,    2,    2,    2,    2,    2,    2,    2
  95.     } ;
  96.  
  97. static short int b[301] =
  98.     {   0,
  99.         0,  596,  601,  601,  601,  601,   31,  589,  593,   32,
  100.       592,   38,   40,   41,   42,   43,   44,   46,   48,   51,
  101.        56,   71,   77,   58,   82,   83,   84,   85,   90,  601,
  102.       586,   86,   91,  601,  590,   95,  113,  111,  103,  117,
  103.       101,  119,  121,  122,  123,  125,  126,  127,  129,  131,
  104.       130,  134,  133,  137,  136,  132,  139,  138,  150,  140,
  105.       144,  157,  160,  161,  162,  168,  164,  169,  172,  173,
  106.       174,  179,  175,  183,  589,  181,  193,  201,  208,  583,
  107.       582,  187,  186,  196,  201,  586,  202,  216,  217,  218,
  108.       219,  220,  221,  224,  222,  223,  232,  231,  585,  584,
  109.  
  110.       225,  239,  228,  244,  246,  248,  249,  250,  253,  254,
  111.       256,  257,  255,  258,   53,  261,  264,  259,  266,  274,
  112.       275,  278,  267,  270,  263,  290,  289,  578,  577,  291,
  113.       576,  575,  279,  294,  295,  297,  579,  300,  578,  302,
  114.       303,  304,  305,  309,  312,  313,  311,  577,  306,  314,
  115.       315,  576,  316,  324,  318,  575,  320,  321,  325,  574,
  116.       329,  336,  339,  343,  573,  345,  347,  348,  349,  350,
  117.       351,  354,  355,  356,  357,  359,  572,  566,  565,  361,
  118.       358,  360,  366,  370,  367,  374,  379,  389,  390,  369,
  119.       372,  393,  373,  395,  569,  396,  399,  568,  567,  398,
  120.  
  121.       402,  400,  409,  566,  565,  404,  406,  408,  564,  410,
  122.       414,  412,  420,  413,  416,  423,  415,  417,  418,  563,
  123.       422,  434,  562,  440,  561,  560,  435,  442,  444,  446,
  124.       447,  449,  454,  559,  450,  558,  456,  451,  557,  458,
  125.       556,  555,  554,  459,  460,  465,  462,  466,  468,  474,
  126.       475,  553,  477,  476,  480,  552,  482,  551,  483,  484,
  127.       495,  490,  550,  491,  549,  548,  546,  489,  492,  496,
  128.       545,  543,  497,  542,  541,  499,  540,  498,  500,  539,
  129.       537,  493,  511,  512,  535,  517,  514,  534,  518,  522,
  130.       533,  531,  530,  527,  524,  528,  180,   52,  601,   51
  131.  
  132.     } ;
  133.  
  134. static short int d[301] =
  135.     {   0,
  136.       299,    1,  299,  299,  299,  299,  299,  299,  300,  299,
  137.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  138.       300,  300,  300,  300,  300,  300,  300,  300,  300,  299,
  139.       299,  299,  299,  299,  300,  299,  299,  300,  300,  300,
  140.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  141.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  142.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  143.       300,  300,  300,  300,  300,  300,  299,  299,  299,  299,
  144.       299,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  145.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  146.  
  147.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  148.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  149.       300,  300,  300,  300,  300,  300,  300,  299,  299,  299,
  150.       299,  299,  300,  300,  300,  300,  300,  300,  300,  300,
  151.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  152.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  153.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  154.       300,  300,  300,  300,  300,  300,  300,  299,  299,  300,
  155.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  156.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  157.  
  158.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  159.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  160.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  161.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  162.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  163.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  164.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  165.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  166.       300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
  167.       300,  300,  300,  300,  300,  300,  300,  300,-32767,  299
  168.  
  169.     } ;
  170.  
  171. static short int n[641] =
  172.     {   0,
  173.         3,    4,    5,    6,    3,    3,    7,    7,    8,    9,
  174.        10,   11,   11,    3,   12,   13,   14,   15,   16,   17,
  175.        18,   19,   11,   20,   11,   21,   22,   11,   23,   24,
  176.        11,   25,   26,   27,   28,   11,   29,   11,   11,   31,
  177.        36,   32,   32,  299,   37,  299,  299,  299,  299,  299,
  178.        37,  299,   35,  299,   40,   38,  299,  299,  299,   53,
  179.        48,  299,   44,  299,   49,   41,   57,   39,   42,   45,
  180.        50,   55,   54,   58,   43,   46,  299,   56,   59,   47,
  181.        51,   52,  299,   65,   60,   61,   66,  299,  299,  299,
  182.       299,  165,   63,   62,   36,  299,   32,   69,   37,   70,
  183.  
  184.        67,   33,   73,   77,   37,   78,  299,   79,  299,   77,
  185.        68,   64,   71,   79,   75,   74,  299,   72,   76,   80,
  186.        80,   83,  299,   81,  299,   82,  299,  299,  299,   85,
  187.       299,  299,  299,   84,  299,  299,  299,  299,  299,  299,
  188.        88,  299,  299,  299,  299,  299,   92,   87,   94,  299,
  189.        89,   91,   96,   98,  102,  299,   86,   99,   90,   97,
  190.        93,  103,  299,   95,  101,  299,  299,  299,  107,  299,
  191.       105,  104,  100,  299,  299,  108,  113,  299,  299,  299,
  192.       299,  109,  106,  111,  299,  299,  299,  119,  299,  110,
  193.       114,  299,  299,  115,  112,  121,  116,  125,  118,  128,
  194.  
  195.       128,  299,  117,  129,  120,  126,  299,  299,  122,  127,
  196.       123,   78,  124,  130,  131,  131,  133,  134,  132,  130,
  197.       135,  299,  299,  299,  299,  299,  299,  299,  299,  299,
  198.       299,  137,  138,  299,  136,  139,  299,  299,  143,  145,
  199.       147,  142,  144,  146,  299,  150,  141,  149,  153,  299,
  200.       140,  299,  148,  299,  299,  299,  152,  151,  299,  299,
  201.       299,  299,  299,  299,  299,  158,  299,  155,  299,  299,
  202.       159,  299,  299,  157,  161,  299,  162,  154,  167,  299,
  203.       299,  156,  163,  299,  299,  164,  173,  160,  168,  166,
  204.       175,  169,  170,  171,  299,  299,  172,  178,  178,  299,
  205.  
  206.       299,  179,  299,  174,  176,  299,  177,  299,  299,  299,
  207.       299,  299,  180,  183,  299,  182,  299,  299,  299,  299,
  208.       299,  299,  186,  299,  184,  299,  299,  181,  190,  299,
  209.       299,  187,  188,  185,  299,  191,  189,  196,  192,  194,
  210.       193,  299,  197,  201,  299,  202,  200,  195,  299,  199,
  211.       299,  198,  299,  299,  299,  299,  299,  204,  203,  299,
  212.       299,  299,  299,  299,  299,  299,  299,  209,  210,  213,
  213.       206,  299,  299,  208,  299,  299,  205,  299,  299,  299,
  214.       207,  222,  211,  217,  299,  212,  216,  220,  221,  215,
  215.       214,  219,  218,  223,  299,  299,  224,  228,  299,  230,
  216.  
  217.       299,  299,  227,  299,  299,  299,  225,  299,  226,  299,
  218.       229,  299,  231,  299,  299,  299,  234,  299,  299,  299,
  219.       299,  299,  299,  299,  239,  299,  240,  299,  299,  232,
  220.       233,  235,  242,  236,  237,  246,  244,  241,  238,  299,
  221.       299,  247,  243,  248,  245,  299,  251,  299,  250,  299,
  222.       249,  299,  299,  252,  299,  299,  299,  255,  254,  299,
  223.       256,  299,  257,  299,  299,  299,  253,  299,  260,  259,
  224.       299,  299,  261,  299,  263,  258,  269,  266,  267,  299,
  225.       299,  299,  299,  262,  264,  299,  271,  299,  299,  299,
  226.       265,  270,  272,  268,  299,  299,  299,  299,  299,  277,
  227.  
  228.       299,  299,  299,  299,  299,  299,  279,  275,  276,  273,
  229.       274,  281,  280,  282,  285,  278,  299,  299,  289,  299,
  230.       283,  290,  299,  299,  286,  284,  287,  299,  294,  299,
  231.       292,  288,  299,  299,  293,  299,  299,  291,  299,  299,
  232.       299,  298,  299,  295,  299,  299,  299,  299,  299,  296,
  233.       299,  299,  297,  299,  299,  299,  299,  299,  299,  299,
  234.       299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
  235.       299,  299,  299,  299,  299,  179,  179,  299,  299,  299,
  236.       299,  299,  299,  299,  299,  132,  132,  129,  129,  299,
  237.       299,  299,   81,   81,  299,  299,   33,  299,   34,   33,
  238.  
  239.        30,  299,  299,  299,  299,  299,  299,  299,  299,  299,
  240.       299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
  241.       299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
  242.       299,  299,  299,  299,  299,  299,  299,  299,  299,  299
  243.     } ;
  244.  
  245. static short int c[641] =
  246.     {   0,
  247.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  248.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  249.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  250.         1,    1,    1,    1,    1,    1,    1,    1,    1,    7,
  251.        10,    7,   10,   12,   10,   13,   14,   15,   16,   17,
  252.        10,   18,  300,   19,   13,   12,   20,  298,  115,   17,
  253.        15,   21,   14,   24,   15,   13,   19,   12,   13,   14,
  254.        16,   18,   17,   20,   13,   14,   22,   18,   21,   14,
  255.        16,   16,   23,   24,   21,   22,   24,   25,   26,   27,
  256.        28,  115,   23,   22,   32,   29,   32,   26,   32,   26,
  257.  
  258.        25,   33,   27,   33,   32,   36,   41,   36,   39,   33,
  259.        25,   23,   26,   36,   28,   27,   38,   26,   29,   37,
  260.        37,   39,   40,   37,   42,   38,   43,   44,   45,   41,
  261.        46,   47,   48,   40,   49,   51,   50,   56,   53,   52,
  262.        44,   55,   54,   58,   57,   60,   48,   43,   50,   61,
  263.        45,   47,   52,   54,   56,   59,   42,   54,   46,   53,
  264.        49,   57,   62,   51,   55,   63,   64,   65,   60,   67,
  265.        59,   58,   54,   66,   68,   61,   65,   69,   70,   71,
  266.        73,   61,   59,   63,   72,  297,   76,   70,   74,   62,
  267.        66,   83,   82,   66,   64,   71,   67,   74,   69,   77,
  268.  
  269.        77,   84,   68,   77,   70,   74,   85,   87,   72,   76,
  270.        72,   78,   73,   78,   79,   79,   82,   83,   79,   78,
  271.        84,   88,   89,   90,   91,   92,   93,   95,   96,   94,
  272.       101,   87,   88,  103,   85,   89,   98,   97,   92,   93,
  273.        95,   91,   92,   94,  102,   98,   90,   97,  103,  104,
  274.        89,  105,   96,  106,  107,  108,  102,  101,  109,  110,
  275.       113,  111,  112,  114,  118,  108,  116,  105,  125,  117,
  276.       109,  119,  123,  107,  111,  124,  112,  104,  117,  120,
  277.       121,  106,  113,  122,  133,  114,  123,  110,  118,  116,
  278.       125,  119,  120,  121,  127,  126,  122,  130,  130,  134,
  279.  
  280.       135,  130,  136,  124,  126,  138,  127,  140,  141,  142,
  281.       143,  149,  133,  136,  144,  135,  147,  145,  146,  150,
  282.       151,  153,  141,  155,  138,  157,  158,  134,  145,  154,
  283.       159,  142,  143,  140,  161,  146,  144,  153,  147,  150,
  284.       149,  162,  154,  159,  163,  161,  158,  151,  164,  157,
  285.       166,  155,  167,  168,  169,  170,  171,  163,  162,  172,
  286.       173,  174,  175,  181,  176,  182,  180,  169,  170,  173,
  287.       166,  183,  185,  168,  190,  184,  164,  191,  193,  186,
  288.       167,  185,  171,  180,  187,  172,  176,  183,  184,  175,
  289.       174,  182,  181,  186,  188,  189,  187,  191,  192,  193,
  290.  
  291.       194,  196,  190,  200,  197,  202,  188,  201,  189,  206,
  292.       192,  207,  194,  208,  203,  210,  200,  212,  214,  211,
  293.       217,  215,  218,  219,  207,  213,  208,  221,  216,  196,
  294.       197,  201,  211,  202,  203,  215,  213,  210,  206,  222,
  295.       227,  215,  212,  216,  214,  224,  219,  228,  218,  229,
  296.       217,  230,  231,  221,  232,  235,  238,  227,  224,  233,
  297.       228,  237,  229,  240,  244,  245,  222,  247,  232,  231,
  298.       246,  248,  233,  249,  237,  230,  247,  244,  245,  250,
  299.       251,  254,  253,  235,  238,  255,  249,  257,  259,  260,
  300.       240,  248,  250,  246,  268,  262,  264,  269,  282,  257,
  301.  
  302.       261,  270,  273,  278,  276,  279,  260,  254,  255,  251,
  303.       253,  262,  261,  264,  270,  259,  283,  284,  279,  287,
  304.       268,  282,  286,  289,  273,  269,  276,  290,  287,  295,
  305.       284,  278,  294,  296,  286,  293,  292,  283,  291,  288,
  306.       285,  295,  281,  289,  280,  277,  275,  274,  272,  290,
  307.       271,  267,  294,  266,  265,  263,  258,  256,  252,  243,
  308.       242,  241,  239,  236,  234,  226,  225,  223,  220,  209,
  309.       205,  204,  199,  198,  195,  179,  178,  177,  165,  160,
  310.       156,  152,  148,  139,  137,  132,  131,  129,  128,  100,
  311.        99,   86,   81,   80,   75,   35,   31,   11,    9,    8,
  312.  
  313.         2,  299,  299,  299,  299,  299,  299,  299,  299,  299,
  314.       299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
  315.       299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
  316.       299,  299,  299,  299,  299,  299,  299,  299,  299,  299
  317.     } ;
  318.  
  319.  
  320. /* these declarations have to come after the section 1 code or lint gets
  321.  * confused about whether the variables are used
  322.  */
  323. FILE *yyin = stdin, *yyout = stdout;
  324.  
  325. /* these variables are all declared out here so that section 3 code can
  326.  * manipulate them
  327.  */
  328. static int yy_start, yy_b_buf_p, yy_c_buf_p, yy_e_buf_p;
  329. static int yy_saw_eof, yy_init = 1;
  330.  
  331. /* yy_ch_buf has to be 1 character longer than YY_BUF_SIZE, since when
  332.  * setting up yytext we can try to put a '\0' just past the end of the
  333.  * matched text
  334.  */
  335. static char yy_ch_buf[YY_BUF_SIZE + 1];
  336. static int yy_st_buf[YY_BUF_SIZE];
  337. static char yy_hold_char;
  338.  
  339. static char input( void) ;
  340. static void unput( char) ;
  341.  
  342. char *yytext;
  343. static int yyleng;
  344.  
  345. /*--------------------------------------------------------------------------*/
  346. /*------------------------- BEGIN LEXICAL ANALYZER -------------------------*/
  347. /*--------------------------------------------------------------------------*/
  348.  
  349. YY_DECL
  350.     {
  351.     int yy_n_chars, yy_lp, yy_iii, yy_buf_pos, yy_act;
  352. #ifdef FLEX_REJECT_ENABLED
  353.     int yy_full_match;
  354. #endif
  355.  
  356.  
  357.  
  358.     if ( yy_init )
  359.     {
  360.     YY_INIT;
  361.     yy_start = 1;
  362.     yy_init = 0;
  363.     }
  364.  
  365.     goto get_next_token;
  366.  
  367. do_action:
  368.  
  369. #ifdef FLEX_REJECT_ENABLED
  370.     /* remember matched text in case we back up due to trailing context */
  371.     yy_full_match = yy_c_buf_p;
  372. #endif
  373.  
  374.     for ( ; ; )
  375.     {
  376.     YY_DO_BEFORE_ACTION
  377.  
  378. #ifdef FLEX_DEBUG
  379.     fprintf( stderr, "--accepting rule #%d\n", yy_act );
  380. #endif
  381.     switch ( yy_act )
  382.         {
  383. case 1:
  384. {WriteVerbatim(yytext);};
  385.     YY_BREAK
  386. case 2:
  387. {};
  388.     YY_BREAK
  389. case 3:
  390. {};
  391.     YY_BREAK
  392. case 4:
  393. {return handlehash();}
  394.     YY_BREAK
  395. case 5:
  396. {skipcomments();}
  397.     YY_BREAK
  398. case 6:
  399. {return(tADAPTIVE);}
  400.     YY_BREAK
  401. case 7:
  402. {return(tAPERTURE);}
  403.     YY_BREAK
  404. case 8:
  405. {return(tBACKGROUND);}
  406.     YY_BREAK
  407. case 9:
  408. {return(tBLOTCH);}
  409.     YY_BREAK
  410. case 10:
  411. {return(tBOX);}
  412.     YY_BREAK
  413. case 11:
  414. {return(tBUMP);}
  415.     YY_BREAK
  416. case 12:
  417. {return(tCHECKER);}
  418.     YY_BREAK
  419. case 13:
  420. {return(tCONE);}
  421.     YY_BREAK
  422. case 14:
  423. {return(tCONTRAST);}
  424.     YY_BREAK
  425. case 15:
  426. {return(tCUTOFF);}
  427.     YY_BREAK
  428. case 16:
  429. {return(tCYL);}
  430.     YY_BREAK
  431. case 17:
  432. {return(tENDDEF);}
  433.     YY_BREAK
  434. case 18:
  435. {return(tSTARTDEF);}
  436.     YY_BREAK
  437. case 19:
  438. {return(tDIRECTIONAL);}
  439.     YY_BREAK
  440. case 20:
  441. {return(tENDFILE);}
  442.     YY_BREAK
  443. case 21:
  444. {return(tEXTENDED);}
  445.     YY_BREAK
  446. case 22:
  447. {return(tEYEP);}
  448.     YY_BREAK
  449. case 23:
  450. {return(tFBM);}
  451.     YY_BREAK
  452. case 24:
  453. {return(tFBMBUMP);}
  454.     YY_BREAK
  455. case 25:
  456. {return(tFOCALDIST);}
  457.     YY_BREAK
  458. case 26:
  459. {return(tFOG);}
  460.     YY_BREAK
  461. case 27:
  462. {return(tFOV);}
  463.     YY_BREAK
  464. case 28:
  465. {return(tGLOSS);}
  466.     YY_BREAK
  467. case 29:
  468. {return(tGRID);}
  469.     YY_BREAK
  470. case 30:
  471. {return(tHEIGHTFIELD);}
  472.     YY_BREAK
  473. case 31:
  474. {return(tJITTERED);}
  475.     YY_BREAK
  476. case 32:
  477. {return(tLIGHT);}
  478.     YY_BREAK
  479. case 33:
  480. {return(tLIST);}
  481.     YY_BREAK
  482. case 34:
  483. {return(tLOOKP);}
  484.     YY_BREAK
  485. case 35:
  486. {return(tMARBLE);}
  487.     YY_BREAK
  488. case 36:
  489. {return(tMAXDEPTH);}
  490.     YY_BREAK
  491. case 37:
  492. {return(tMIST);}
  493.     YY_BREAK
  494. case 38:
  495. {return(tOBJECT);}
  496.     YY_BREAK
  497. case 39:
  498. {return(tOUTFILE);}
  499.     YY_BREAK
  500. case 40:
  501. {return(tPLANE);}
  502.     YY_BREAK
  503. case 41:
  504. {return(tPOINT);}
  505.     YY_BREAK
  506. case 42:
  507. {return(tPOLY);}
  508.     YY_BREAK
  509. case 43:
  510. {return(tRESOLUTION);}
  511.     YY_BREAK
  512. case 44:
  513. {return(tROTATE);}
  514.     YY_BREAK
  515. case 45:
  516. {return(tSAMPLES);}
  517.     YY_BREAK
  518. case 46:
  519. {return(tSCALE);}
  520.     YY_BREAK
  521. case 47:
  522. {return(tSCREEN);}
  523.     YY_BREAK
  524. case 48:
  525. {return(tSPHERE);}
  526.     YY_BREAK
  527. case 49:
  528. {return(tSUPERQ);}
  529.     YY_BREAK
  530. case 50:
  531. {return(tSURFACE);}
  532.     YY_BREAK
  533. case 51:
  534. {return(tTEXTURE);}
  535.     YY_BREAK
  536. case 52:
  537. {return(tTRANSFORM);}
  538.     YY_BREAK
  539. case 53:
  540. {return(tTRANSLATE);}
  541.     YY_BREAK
  542. case 54:
  543. {return(tTRIANGLE);}
  544.     YY_BREAK
  545. case 55:
  546. {return(tUP);}
  547.     YY_BREAK
  548. case 56:
  549. {return(tWOOD);}
  550.     YY_BREAK
  551. case 57:
  552. {yylval.c = strsave(yytext);
  553.                 return(tSTRING);}
  554.     YY_BREAK
  555. case 58:
  556. {yylval.i = atoi(yytext);
  557.                 return(tINT);}
  558.     YY_BREAK
  559. case 59:
  560. case 60:
  561. case 61:
  562. {yylval.d = atof(yytext); return(tFLOAT);}
  563.     YY_BREAK
  564. case 62:
  565. {return yytext[0];}
  566.     YY_BREAK
  567. case 63:
  568. YY_DEFAULT_ACTION;
  569.     YY_BREAK
  570.  
  571. case YY_NEW_FILE:
  572. break; /* begin reading from new file */
  573.  
  574. case YY_END_TOK:
  575. return ( YY_END_TOK );
  576.  
  577. default:
  578. YY_FATAL_ERROR( "fatal flex scanner internal error" );
  579.         }
  580.  
  581. get_next_token:
  582.     {
  583.     register int yy_curst;
  584.     register char yy_sym;
  585.  
  586.     YY_DO_BEFORE_SCAN
  587.  
  588.     /* set up to begin running DFA */
  589.  
  590.     yy_curst = yy_start;
  591.  
  592.     if ( yy_ch_buf[yy_c_buf_p] == '\n' )
  593.         ++yy_curst;
  594.  
  595.     /* yy_b_buf_p points to the position in yy_ch_buf
  596.      * of the start of the current run.
  597.      */
  598.  
  599.     yy_b_buf_p = yy_c_buf_p + 1;
  600.  
  601.     do /* until the machine jams */
  602.         {
  603.         if ( yy_c_buf_p == yy_e_buf_p )
  604.         { /* need more input */
  605.         if ( yy_e_buf_p >= YY_BUF_LIM )
  606.             { /* not enough room to do another read */
  607.             /* see if we can make some room for more chars */
  608.  
  609.             yy_n_chars = yy_e_buf_p - yy_b_buf_p;
  610.  
  611.             if ( yy_n_chars >= 0 )
  612.             /* shift down buffer to make room */
  613.             for ( yy_iii = 0; yy_iii <= yy_n_chars; ++yy_iii )
  614.                 {
  615.                 yy_buf_pos = yy_b_buf_p + yy_iii;
  616.                 yy_ch_buf[yy_iii] = yy_ch_buf[yy_buf_pos];
  617.                 yy_st_buf[yy_iii] = yy_st_buf[yy_buf_pos];
  618.                 }
  619.  
  620.             yy_b_buf_p = 0;
  621.             yy_e_buf_p = yy_n_chars;
  622.  
  623.             if ( yy_e_buf_p >= YY_BUF_LIM )
  624.             YY_FATAL_ERROR( "flex input buffer overflowed" );
  625.  
  626.             yy_c_buf_p = yy_e_buf_p;
  627.             }
  628.  
  629.         else if ( yy_saw_eof )
  630.             {
  631. saweof:            if ( yy_b_buf_p > yy_e_buf_p )
  632.             {
  633.             if ( yywrap() )
  634.                 {
  635.                 yy_act = YY_END_TOK;
  636.                 goto do_action;
  637.                 }
  638.             
  639.             else
  640.                 {
  641.                 YY_INIT;
  642.                 yy_act = YY_NEW_FILE;
  643.                 goto do_action;
  644.                 }
  645.             }
  646.  
  647.             else /* do a jam to eat up more input */
  648.             {
  649. #ifndef FLEX_INTERACTIVE_SCANNER
  650.             /* we're going to decrement yy_c_buf_p upon doing
  651.              * the jam.  In this case, that's wrong, since
  652.              * it points to the last non-jam character.  So
  653.              * we increment it now to counter the decrement.
  654.              */
  655.             ++yy_c_buf_p;
  656. #endif
  657.             break;
  658.             }
  659.             }
  660.  
  661.         YY_INPUT( (yy_ch_buf + yy_c_buf_p + 1), yy_n_chars,
  662.               YY_MAX_LINE );
  663.  
  664.         if ( yy_n_chars == YY_NULL )
  665.             {
  666.             if ( yy_saw_eof )
  667.     YY_FATAL_ERROR( "flex scanner saw EOF twice - shouldn't happen" );
  668.             yy_saw_eof = 1;
  669.             goto saweof;
  670.             }
  671.  
  672.         yy_e_buf_p += yy_n_chars;
  673.         }
  674.  
  675.         ++yy_c_buf_p;
  676.  
  677. #ifdef FLEX_USE_ECS
  678.         yy_sym = e[yy_ch_buf[yy_c_buf_p]];
  679. #else
  680.         yy_sym = yy_ch_buf[yy_c_buf_p];
  681. #endif
  682.  
  683. #ifdef FLEX_FULL_TABLE
  684.         yy_curst = n[yy_curst][yy_sym];
  685.  
  686. #else /* get next state from compressed table */
  687.  
  688.         while ( c[b[yy_curst] + yy_sym] != yy_curst )
  689.         {
  690.         yy_curst = d[yy_curst];
  691.  
  692. #ifdef FLEX_USE_MECS
  693.         /* we've arrange it so that templates are never chained
  694.          * to one another.  This means we can afford make a
  695.          * very simple test to see if we need to convert to
  696.          * yy_sym's meta-equivalence class without worrying
  697.          * about erroneously looking up the meta-equivalence
  698.          * class twice
  699.          */
  700.  
  701.         if ( yy_curst >= YY_TEMPLATE )
  702.             yy_sym = m[yy_sym];
  703. #endif
  704.         }
  705.  
  706.         yy_curst = n[b[yy_curst] + yy_sym];
  707.  
  708. #endif
  709.  
  710.         yy_st_buf[yy_c_buf_p] = yy_curst;
  711.  
  712.         }
  713. #ifdef FLEX_INTERACTIVE_SCANNER
  714.     while ( b[yy_curst] != YY_JAM_BASE );
  715. #else
  716.     while ( yy_curst != YY_JAM );
  717.     --yy_c_buf_p; /* put back character we jammed on */
  718.  
  719. #endif
  720.  
  721.     if ( yy_c_buf_p >= yy_b_buf_p )
  722.         { /* we matched some text */
  723.         yy_curst = yy_st_buf[yy_c_buf_p];
  724.         yy_lp = l[yy_curst];
  725.  
  726. #ifdef FLEX_REJECT_ENABLED
  727. find_rule: /* we branch to this label when doing a REJECT */
  728. #endif
  729.  
  730.         for ( ; ; ) /* until we find what rule we matched */
  731.         {
  732. #ifdef FLEX_REJECT_ENABLED
  733.         if ( yy_lp && yy_lp < l[yy_curst + 1] )
  734.             {
  735.             yy_act = a[yy_lp];
  736.             goto do_action; /* "continue 2" */
  737.             }
  738. #else
  739.         if ( yy_lp )
  740.             {
  741.             yy_act = yy_lp;
  742.             goto do_action; /* "continue 2" */
  743.             }
  744. #endif
  745.  
  746.         if ( --yy_c_buf_p < yy_b_buf_p )
  747.             break;
  748.  
  749.         yy_curst = yy_st_buf[yy_c_buf_p];
  750.         yy_lp = l[yy_curst];
  751.         }
  752.         }
  753.  
  754.     YY_FATAL_ERROR( "no match in flex scanner - possible NULL in input" );
  755.     }
  756.     }
  757.  
  758.     /*NOTREACHED*/
  759.     }
  760.  
  761.  
  762. static  void unput( c )
  763. char c;
  764. {
  765.  register int i;
  766.  register int yy_buf_pos ;
  767.  
  768.     YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  769.  
  770.     if ( yy_c_buf_p == 0 )
  771.     {
  772.     yy_buf_pos = YY_BUF_MAX ;
  773.     for ( i = yy_e_buf_p; i >= yy_c_buf_p; --i )
  774.         {
  775.         yy_ch_buf[yy_buf_pos] = yy_ch_buf[i];
  776.         yy_st_buf[yy_buf_pos] = yy_st_buf[i];
  777.         --yy_buf_pos;
  778.         }
  779.  
  780.     yy_c_buf_p = YY_BUF_MAX - yy_e_buf_p;
  781.     yy_e_buf_p = YY_BUF_MAX;
  782.     }
  783.  
  784.     if ( yy_c_buf_p <= 0 )
  785.     YY_FATAL_ERROR( "flex scanner push-back overflow" );
  786.  
  787.     if ( yy_c_buf_p >= yy_b_buf_p && yy_ch_buf[yy_c_buf_p] == '\n' )
  788.     yy_ch_buf[yy_c_buf_p - 1] = '\n';
  789.  
  790.     yy_ch_buf[yy_c_buf_p--] =  c;
  791.  
  792.     YY_DO_BEFORE_ACTION; /* set up yytext again */
  793.  
  794.     }
  795.  
  796.  
  797. static char input( void)
  798. {
  799.     char c;
  800.  
  801.     YY_DO_BEFORE_SCAN
  802.  
  803.     if ( yy_c_buf_p == yy_e_buf_p )
  804.     { /* need more input */
  805.     int yy_n_chars;
  806.  
  807.     /* we can throw away the entire current buffer */
  808.     if ( yy_saw_eof )
  809.         {
  810.         if ( yywrap() )
  811.         return ( EOF );
  812.  
  813.         YY_INIT;
  814.         }
  815.  
  816.     yy_b_buf_p = 0;
  817.     YY_INPUT( yy_ch_buf, yy_n_chars, YY_MAX_LINE );
  818.  
  819.     if ( yy_n_chars == YY_NULL )
  820.     {
  821.         yy_saw_eof = 1;
  822.  
  823.         if ( yywrap() )
  824.         return ( EOF );
  825.  
  826.         YY_INIT;
  827.  
  828.         return ( input() );
  829.     }
  830.  
  831.     yy_c_buf_p = -1;
  832.     yy_e_buf_p = yy_n_chars - 1;
  833.     }
  834.  
  835.     c = (unsigned char) yy_ch_buf[++yy_c_buf_p];
  836.  
  837.     YY_DO_BEFORE_ACTION;
  838.  
  839.     return ( c );
  840.     }
  841.  
  842. /*--------------------------------------------------------------------------*/
  843. /*------------------------- END OF LEXICAL ANALYZER ------------------------*/
  844. /*--------------------------------------------------------------------------*/
  845.  
  846.  
  847. yywrap() {return(1);}
  848. /*
  849.  * Skip over comments.
  850.  */
  851. skipcomments()
  852. {
  853.     char c;
  854.  
  855.     WriteVerbatim("/*");
  856.     while (1) {
  857.         while ((c = input()) != '*')
  858.             WriteChar(c);
  859.         WriteChar(c);
  860.         if ((c = input()) == '/') {
  861.             WriteChar(c);
  862.             WriteNewline();
  863.             return;
  864.         }
  865.         unput(c);
  866.     }
  867. }
  868. /*
  869.  * Deal with ccp-produced lines of the form:
  870.  * # n "filename"
  871.  * and
  872.  * # n
  873.  * Where filename is the name of the file being processed, and n is
  874.  * the current line number in that file.
  875.  */
  876. handlehash()
  877. {
  878.     char buf[BUFSIZ];
  879.     int i, linenumber;
  880.     extern int yylineno;
  881.     extern char yyfilename[];
  882.  
  883.     /*
  884.      * Read the entire line into buf.
  885.      */
  886.     for (i = 0; (buf[i] = input()) != '\n'; i++)
  887.             ;
  888.     unput(buf[i]);        /* To make sure consecutive # lines work. */
  889.     buf[i] = (char)NULL;    /* Replace newline with NULL. */
  890.  
  891.     yylval.c = strsave(buf);
  892.  
  893.     /*
  894.      * Set file/line if the line was of the form #n "filename"
  895.      */
  896.     if ((i = sscanf(buf, "%d \"%[^\"]s\"", &linenumber, buf)) != 0) {
  897.         yylineno = linenumber;
  898. #ifdef SYSV
  899.         if (strchr(buf, '"') != (char *)0) {
  900. #else
  901.         if (index(buf, '"') != (char *)0) {
  902. #endif
  903.             /*
  904.              * Filename was "", which means stdin.
  905.              */
  906.             strcpy(yyfilename, "stdin");
  907.         } else
  908.             strcpy(yyfilename, buf);
  909.     }
  910.     return tHASHTHING;
  911. }
  912.