#define YY_DEFAULT_ACTION ECHO;
#define FLEX_USE_ECS
#define FLEX_USE_MECS
/* A lexical scanner generated by flex */

#include "skeleton.h"

#define INITIAL 0
/* lex.l								   */
/* Copyright (C) 1989, 1991, Craig E. Kolb				   */
/* All rights reserved.							   */
/*									   */
/* This software may be freely copied, modified, and redistributed,	   */
/* provided that this copyright notice is preserved on all copies.	   */
/*									   */
/* You may not distribute this software, in whole or in part, as part of   */
/* any commercial product without the express consent of the authors.	   */
/* 									   */
/* There is no warranty or other guarantee of fitness of this software	   */
/* for any purpose.  It is provided solely "as is".			   */
/*									   */
/* $Id: lex.l,v 4.0.1.3 92/01/14 18:28:38 cek Exp Locker: cek $ */
#include "config.h"
#include "rayshade.h"
#ifdef I_STRING
#include <string.h>
#else
#include <strings.h>
#endif
#include "light.h"
#include "atmosphere.h"
#include "surface.h"
#include "texture.h"
#include "geom.h"
#include "symtab.h"
#include "yacc_tab.h"

extern int yylineno;
extern char *strsave();
#define YY_JAM 538
#define YY_JAM_BASE 1085
#define YY_TEMPLATE 539
static char l[539] =
    {   0,
       -2,   -2,  118,    1,    1,  118,  118,  112,  116,  116,
      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,    2,    0,    0,  114,    3,    0,    0,  117,  113,
      112,    0,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,

      116,  116,  106,  107,  116,  116,  116,    0,  117,  113,
        0,    0,  115,  116,  116,  116,  116,  116,  116,  116,
      116,   13,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,  116,  116,   30,  116,  116,   36,  116,
      116,   39,   41,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,  116,  116,   55,  116,  116,  116,  116,
      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
       83,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,  116,  116,  116,  116,    0,  114,    0,

        0,  113,  116,  116,  116,    7,  116,  116,   10,  116,
       12,   14,  116,  116,  116,   17,  116,   20,  116,  116,
      116,  116,  116,  116,   29,  116,  116,   33,  116,  116,
      116,  116,  116,  116,  116,  116,   46,  116,  116,  116,
      116,  116,  116,   53,  116,  116,  116,   59,  116,   60,
      116,  116,  116,  116,  116,  116,   68,  116,  116,  116,
      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,   89,  116,  116,  116,  116,   95,  116,  116,
      116,  116,  116,  116,  111,    0,  113,  116,  116,  116,
      116,  116,  116,  116,   16,  116,  116,  116,  116,  116,

      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,   44,   45,  116,   48,   49,  116,  116,   52,
       54,  116,  116,   58,  116,  116,  116,  116,  116,   65,
       67,  116,   70,   71,   72,  116,  116,  116,  116,  116,
       79,  116,  116,  116,  116,  116,  116,  116,  116,  116,
      116,  116,  116,   96,  116,  116,  105,  116,  116,  110,
      116,  116,  116,  116,  116,   11,  116,  116,  116,  116,
       22,  116,   25,  116,  116,  116,  116,  116,   34,  116,
       35,  116,  116,  116,   43,  116,  116,   51,   56,  116,
      116,  116,   63,  116,   66,  116,  116,   75,  116,   77,

       78,   80,  116,  116,   84,  116,  116,   85,  116,  116,
       91,  116,  116,  116,  116,  116,  101,  116,  116,  109,
        4,  116,  116,  116,  116,   15,  116,  116,   21,  116,
      116,  116,   26,  116,  116,   32,   37,  116,   40,  116,
      116,  116,  116,  116,  116,   64,   69,   73,  116,  116,
       82,   88,  116,  116,  116,   92,  116,   94,  116,  116,
       99,  116,  116,  108,    5,  116,  116,  116,  116,   19,
       23,  116,  116,  116,   31,  116,  116,  116,  116,   57,
       61,   62,  116,  116,  116,   87,  116,  116,   93,  116,
      116,  116,  116,  103,    6,  116,  116,   18,  116,  116,

      116,   38,  116,  116,   50,  116,  116,  116,   86,   90,
       97,   98,  116,  116,  116,    8,    9,  116,   27,  116,
      116,  116,   74,   76,  116,  116,  116,  104,   24,   28,
       42,   47,  116,  116,  102,   81,  100,    0
    } ;

static char e[128] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    2,    1,    1,    4,    1,    1,    1,    1,    1,
        1,    5,    6,    1,    7,    8,    9,   10,   10,   10,
       10,   10,   10,   10,   10,   10,   10,    1,    1,    1,
        1,    1,    1,    1,   11,   11,   11,   11,   12,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        1,    1,    1,    1,   13,    1,   14,   15,   16,   17,

       18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
       28,   29,   30,   31,   32,   33,   34,   35,   36,   37,
       38,   11,    1,    1,    1,    1,    1
    } ;

static char m[39] =
    {   0,
        1,    1,    1,    1,    2,    1,    3,    4,    4,    3,
        4,    4,    3,    4,    4,    4,    4,    4,    4,    4,
        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
        4,    4,    4,    4,    4,    4,    4,    4
    } ;

static short int b[542] =
    {   0,
        0, 1081, 1085, 1085, 1085,   31,   37,   39, 1075,   34,
       41,   67,   50,   43,   62,   69,   35,   47,   39,   80,
       82,   97,   88,   90,   45,   98,  118,  115,  121,  105,
      127, 1085, 1074,   77,  147, 1085,  111,  153, 1073,  154,
      159,  168, 1072,   49,  161,  120,  119,  144,  126,  159,
      154,  122,  164,  172,  173,  174,  175,  176,  178,  100,
      179,  184,  177,  195,  197,  180,   53,  199,  202,  206,
      205,  209,  207,  213,  216,  212,  214,  220,  221,  225,
      227,  222,  242,  243,  244,  249,  250,  251,  228,  253,
      255,  258,  264,  254,  266,  267,  265,  104,  276,  269,

      281,  282, 1071, 1070,  279,  280,  284,  299, 1069,  301,
      308, 1067, 1066,  299,  307,  308,  311,  313,  315,  314,
      288, 1066,  319,  318,  321,  322,  326,  323,  328,  333,
      327,  331,  337,  336,  334, 1065,  348,  349,  353,  354,
      355,  356, 1064,  358,  362,  363,  365,  366,  368,  367,
      371,  370,  381,  374,  382, 1063,  383,  384,  387,  388,
      390,  391,  395,  396,  400,  401,  402,  403,  408,  409,
      412,  413,  414,  415,  416,  417,  422,  427,  431,  424,
     1062,  425,  428,  440,  430,  441,  442,  443,  445,  447,
      446,  450,  452,  451,  458,  459,  465, 1060, 1059,  477,

     1058, 1057,  472,  460,  461, 1057,  462,  466, 1056,  476,
     1055, 1054,  479,  480,  482, 1053,  486, 1052,  487,  489,
      491,  492,  493,  496, 1051,  495,  497, 1050,  498,  500,
      505,  504,  517,  519,  506,  511, 1049,  521,  522,  516,
      523,  527,  524, 1048,  530,  535,  532, 1047,  537, 1046,
      538,  542,  539,  540,  549,  543,  552,  555,  556,  557,
      559,  560,  565,  564,  569,  574,  575,  570,  571,  572,
      573,  577, 1045,  576,  586,  587,  578, 1044,  590,  591,
      594,  597,  602,  604, 1043, 1041, 1040,  607,  605,  608,
      609,  610,  616,  611, 1040,  617,  619,  618,  626,  634,

      637,  622,  627,  638,  639,  641,  643,  649,  645,  651,
      653,  652, 1039, 1038,  654, 1037, 1036,  656,  655, 1035,
     1034,  661,  664, 1033,  657,  665,  658,  669,  671, 1032,
     1031,  672, 1030, 1029, 1028,  676,  674,  680,  686,  687,
     1027,  688,  689,  690,  692,  694,  701,  702,  697,  700,
      703,  707,  708, 1026,  718,  712, 1025,  714,  719, 1024,
      720,  725,  724,  727,  722, 1023,  726,  731,  729,  733,
     1022,  736, 1021,  742,  750,  753,  754,  755, 1020,  756,
     1019,  757,  760,  762, 1018,  764,  768, 1017, 1016,  761,
      769,  765, 1015,  772, 1014,  773,  780, 1013,  782, 1012,

     1011, 1010,  783,  767, 1009,  786,  787, 1008,  788,  790,
     1007,  793,  794,  796,  798,  809,  810,  808,  811, 1006,
     1005,  812,  797,  818,  800, 1004,  822,  799, 1003,  826,
      828,  829, 1002,  830,  831, 1001, 1000,  832,  999,  833,
      837,  835,  844,  836,  838,  998,  997,  846,  853,  845,
      996,  995,  852,  857,  843,  989,  854,  986,  861,  863,
      868,  869,  870,  985,  984,  871,  872,  877,  873,  983,
      982,  878,  882,  880,  981,  876,  888,  884,  886,  980,
      979,  978,  890,  892,  896,  977,  902,  903,  976,  904,
      905,  906,  908,  907,  975,  913,  919,  974,  920,  924,

      923,  973,  926,  929,  972,  930,  931,  934,  970,  969,
      967,  966,  935,  936,  937,  964,  962,  940,  961,  941,
      943,  938,  960,  959,  942,  944,  947,  909,  801,  735,
      290,  230,  948,  958,  229,  226,  182, 1085,  995,  997,
      999
    } ;

static short int d[542] =
    {   0,
      538,    1,  538,  538,  538,  538,  539,  538,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  538,  538,  539,  538,  538,  538,  539,  541,  538,
      538,  538,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,

      540,  540,  540,  540,  540,  540,  540,  538,  541,  538,
      538,  538,  538,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  538,  538,  538,

      538,  538,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  538,  538,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,

      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,

      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,

      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
      540,  540,  540,  540,  540,  540,  540,-32767,  538,  538,
      538
    } ;

static short int n[1124] =
    {   0,
        3,    4,    5,    3,    3,    3,    3,    6,    7,    8,
        9,    9,    3,   10,   11,   12,   13,   14,   15,   16,
       17,   18,   19,    9,   20,   21,   22,   23,   24,   25,
       26,   27,   28,   29,   30,   31,    9,    9,   33,   34,
       35,   36,   34,   34,   37,   38,   40,   34,   41,   34,
       42,   34,   70,   34,   48,   34,   42,   34,   34,   44,
       73,   34,   45,  114,   46,   49,   47,   58,   50,   60,
       34,   59,   71,   72,   51,   34,   63,   34,   86,   61,
       62,  538,   67,   64,   37,  538,  145,   52,   34,   65,
       34,   53,   66,   68,   54,   76,   34,   55,   34,   69,

       56,   74,   81,   77,   57,   34,   34,   75,   34,   78,
       79,   87,   34,   34,   83,   88,  136,   84,   33,   34,
       85,   82,  105,   34,   80,   89,   34,   34,   34,   34,
       34,   90,   98,   91,   34,   34,   99,  117,   92,  124,
      189,   93,  100,   94,  118,  101,   95,  102,  106,  103,
       96,   97,   34,  120,  107,  104,   35,  538,  108,  119,
       37,  538,   34,  110,  108,  111,   40,   34,   41,   34,
       42,  111,   34,  112,  112,  121,   42,  113,  115,  123,
       34,   34,   34,   34,   34,   34,   34,   34,   34,  116,
       34,  125,   34,  144,  132,  122,  133,  126,  127,  131,

      128,  138,  139,   34,  129,   34,  130,   34,  134,  135,
       34,  137,  141,   34,   34,   34,  142,   34,  149,  140,
       34,   34,   34,  147,   34,  150,  146,  148,   34,   34,
       34,  143,  153,   34,   34,   34,   34,   34,   34,  152,
      156,  151,  157,  155,  154,  159,  161,  162,  158,  164,
       34,   34,   34,  160,  165,  166,  163,   34,   34,   34,
      175,   34,   34,   34,  167,  169,   34,  168,  177,  172,
      170,  179,   34,   34,   34,   34,  171,   34,  176,  173,
      186,  182,  174,  183,   34,  178,  184,   34,   34,   34,
       34,  180,   34,  185,  192,  188,   34,  187,   34,  191,

      190,  181,  193,  194,  198,  198,  196,   34,  199,  195,
      110,  197,  200,  201,  201,   34,   34,  202,  200,   34,
      203,   34,   34,   34,  206,  211,   34,   34,  209,   34,
       34,   34,  205,  213,   34,   34,   34,  204,  208,   34,
      207,   34,   34,  216,   34,   34,  210,  212,  221,  225,
      215,  218,  222,  224,  214,  223,   34,   34,  217,  219,
      220,   34,   34,   34,   34,  226,   34,  230,  232,  227,
       34,   34,  233,   34,   34,   34,   34,  228,   34,   34,
      229,  237,   34,  234,  240,  238,  231,  239,  241,   34,
       34,   34,   34,  235,  236,   34,   34,  246,   34,   34,

      247,  243,  242,   34,   34,  245,  244,  250,   34,   34,
       34,   34,  251,  253,  249,  252,   34,   34,  254,  248,
       34,   34,   34,   34,   34,   34,  259,  255,  256,  264,
       34,  260,   34,   34,  258,   34,   34,  261,   34,   34,
      257,  262,  263,  271,  267,  265,  266,  268,   34,   34,
       34,   34,  270,   34,   34,   34,  269,  272,   34,   34,
       34,  276,  273,  275,  278,  281,   34,   34,   34,   34,
       34,  274,  283,   34,   34,  284,  280,  277,  282,  279,
       34,  285,  286,  286,   34,  292,  287,   34,   34,  288,
       34,  293,  289,  291,   34,   34,  295,   34,  290,   34,

       34,   34,  294,   34,   34,   34,   34,  299,   34,  296,
      302,  304,   34,   34,   34,  307,  297,  300,  301,   34,
      298,  305,  309,  306,   34,   34,  303,   34,  310,   34,
       34,   34,   34,  308,  311,   34,  312,  313,   34,  316,
       34,  315,  314,   34,  319,   34,   34,   34,   34,  323,
       34,   34,  317,  318,  327,  326,  320,   34,  321,  322,
       34,  328,  329,   34,   34,   34,  330,   34,   34,  324,
      325,  332,   34,   34,  335,  331,  336,   34,   34,   34,
       34,   34,   34,   34,   34,   34,   34,  333,  334,  338,
      337,  341,  342,  340,   34,   34,  339,  343,   34,   34,

      351,  346,   34,  344,  345,   34,  347,  348,  349,  352,
       34,  353,   34,   34,  350,   34,   34,   34,   34,   34,
      356,  354,  355,  357,   34,   34,   34,   34,  367,  358,
       34,  359,  369,  361,   34,   34,  366,  364,  362,  363,
      365,  360,   34,  368,  371,   34,   34,   34,  370,   34,
      372,   34,  374,   34,  373,  377,  378,   34,  375,   34,
       34,   34,   34,   34,   34,   34,   34,  382,  383,   34,
      376,  379,   34,   34,  380,  381,  384,   34,  389,   34,
       34,  392,   34,  385,   34,  388,  386,  387,   34,  391,
      393,  397,  390,  394,   34,   34,   34,   34,   34,  396,

       34,  395,   34,  400,  401,   34,  398,  404,   34,   34,
       34,   34,  405,  399,  402,   34,   34,  411,  412,  408,
       34,  406,   34,  409,  403,  407,   34,   34,   34,  410,
       34,  418,   34,   34,   34,   34,  415,   34,  414,   34,
      413,   34,  416,   34,   34,  419,  417,  424,  427,  425,
       34,  429,  421,  430,  420,  422,  426,  423,   34,  432,
      428,   34,   34,   34,   34,   34,  431,  433,   34,   34,
       34,  435,   34,   34,  434,   34,   34,   34,  438,  440,
       34,   34,  441,  439,  437,  442,  444,  436,   34,  446,
       34,   34,  445,  443,   34,   34,   34,  451,   34,  447,

      453,   34,   34,  454,   34,   34,   34,   34,   34,   34,
      456,  455,  448,  458,  449,  450,   34,   34,   34,   34,
       34,  452,  460,  462,  457,  459,   34,  466,  464,  465,
       34,  470,  463,  468,   34,  467,   34,   34,   34,   34,
       34,   34,  461,   34,   34,   34,   34,  475,  469,  472,
      479,   34,   34,   34,   34,  473,  471,  474,  478,  477,
       34,   34,   34,  476,  480,   34,  481,  483,  488,   34,
      487,   34,  489,  482,  484,  485,   34,   34,   34,   34,
       34,   34,  486,  492,   34,   34,   34,  494,   34,  495,
       34,  490,   34,  499,   34,  491,   34,  500,   34,  493,

       34,  504,  496,  497,   34,  498,  501,  503,  502,  508,
       34,   34,   34,   34,   34,   34,   34,   34,  505,  507,
      510,   34,  512,  513,  506,  514,  509,   34,   34,  511,
      516,   34,   34,  518,   34,  517,  520,   34,   34,   34,
      515,  519,   34,   34,   34,   34,   34,  523,   34,   34,
       34,   34,   34,  522,  532,   34,   34,  524,  521,  534,
      525,  526,  527,  531,  529,  530,   34,   34,   34,   34,
       34,  528,   34,  533,   34,   34,  536,   34,   34,  535,
       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
       34,   34,   34,   34,   34,  537,   39,   34,   39,   43,

       43,  109,  109,   34,   34,   34,   34,   34,   34,   34,
       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
       34,   34,   34,   34,   34,   34,   34,   34,   34,  287,
      287,   34,   34,   34,   34,   34,   34,   34,   34,   34,
       34,   34,   34,   34,   34,   34,  202,  202,  199,  199,
       34,   34,   34,   34,   34,  113,  113,   34,   34,   34,
       34,   34,   34,   34,   32,  538,  538,  538,  538,  538,
      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,

      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
      538,  538,  538
    } ;

static short int c[1124] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    6,    6,
        6,    7,   10,   17,    7,    7,    8,   19,    8,   11,
        8,   14,   17,   25,   11,   18,    8,   44,   13,   10,
       19,   67,   10,   44,   10,   11,   10,   13,   11,   14,
       15,   13,   18,   18,   11,   12,   15,   16,   25,   14,
       14,   34,   16,   15,   34,   34,   67,   12,   20,   15,
       21,   12,   15,   16,   12,   21,   23,   12,   24,   16,

       12,   20,   23,   21,   12,   22,   26,   20,   60,   21,
       22,   26,   98,   30,   24,   26,   60,   24,   37,   37,
       24,   23,   30,   28,   22,   26,   27,   47,   46,   29,
       52,   27,   28,   27,   49,   31,   28,   46,   27,   52,
       98,   27,   28,   27,   47,   28,   27,   29,   31,   29,
       27,   27,   48,   49,   31,   29,   35,   38,   35,   48,
       38,   38,   51,   40,   35,   40,   41,   50,   41,   45,
       41,   40,   53,   42,   42,   50,   41,   42,   45,   51,
       54,   55,   56,   57,   58,   63,   59,   61,   66,   45,
      537,   53,   62,   66,   58,   50,   59,   54,   54,   57,

       55,   62,   63,   64,   56,   65,   56,   68,   59,   59,
       69,   61,   65,   71,   70,   73,   65,   72,   71,   64,
       76,   74,   77,   69,   75,   72,   68,   70,   78,   79,
       82,   65,   74,   80,  536,   81,   89,  535,  532,   73,
       76,   72,   76,   75,   74,   77,   79,   80,   76,   81,
       83,   84,   85,   78,   82,   83,   80,   86,   87,   88,
       89,   90,   94,   91,   84,   85,   92,   84,   91,   88,
       86,   92,   93,   97,   95,   96,   87,  100,   90,   88,
       96,   94,   88,   95,   99,   91,   95,  105,  106,  101,
      102,   92,  107,   95,  101,   97,  121,   96,  531,  100,

       99,   93,  101,  102,  108,  108,  106,  114,  108,  105,
      110,  107,  110,  111,  111,  115,  116,  111,  110,  117,
      114,  118,  120,  119,  117,  121,  124,  123,  120,  125,
      126,  128,  116,  124,  127,  131,  129,  115,  119,  132,
      118,  130,  135,  127,  134,  133,  120,  123,  131,  135,
      126,  128,  132,  134,  125,  133,  137,  138,  127,  129,
      130,  139,  140,  141,  142,  137,  144,  139,  141,  137,
      145,  146,  142,  147,  148,  150,  149,  138,  152,  151,
      138,  147,  154,  144,  150,  148,  140,  149,  151,  153,
      155,  157,  158,  145,  146,  159,  160,  157,  161,  162,

      158,  153,  152,  163,  164,  155,  154,  161,  165,  166,
      167,  168,  162,  164,  160,  163,  169,  170,  165,  159,
      171,  172,  173,  174,  175,  176,  170,  166,  167,  175,
      177,  171,  180,  182,  169,  178,  183,  172,  185,  179,
      168,  173,  174,  183,  178,  176,  177,  179,  184,  186,
      187,  188,  182,  189,  191,  190,  180,  184,  192,  194,
      193,  188,  185,  187,  190,  193,  195,  196,  204,  205,
      207,  186,  195,  197,  208,  196,  192,  189,  194,  191,
      203,  197,  200,  200,  210,  208,  200,  213,  214,  203,
      215,  210,  204,  207,  217,  219,  214,  220,  205,  221,

      222,  223,  213,  226,  224,  227,  229,  220,  230,  215,
      223,  224,  232,  231,  235,  229,  217,  221,  222,  236,
      219,  226,  231,  227,  240,  233,  223,  234,  232,  238,
      239,  241,  243,  230,  233,  242,  234,  235,  245,  239,
      247,  238,  236,  246,  242,  249,  251,  253,  254,  247,
      252,  256,  240,  241,  253,  252,  243,  255,  245,  246,
      257,  254,  255,  258,  259,  260,  255,  261,  262,  249,
      251,  257,  264,  263,  260,  256,  261,  265,  268,  269,
      270,  271,  266,  267,  274,  272,  277,  258,  259,  263,
      262,  266,  267,  265,  275,  276,  264,  268,  279,  280,

      276,  271,  281,  269,  270,  282,  271,  272,  274,  277,
      283,  277,  284,  289,  275,  288,  290,  291,  292,  294,
      281,  279,  280,  282,  293,  296,  298,  297,  294,  283,
      302,  284,  297,  288,  299,  303,  293,  291,  289,  290,
      292,  284,  300,  296,  299,  301,  304,  305,  298,  306,
      300,  307,  302,  309,  301,  305,  306,  308,  303,  310,
      312,  311,  315,  319,  318,  325,  327,  310,  311,  322,
      304,  307,  323,  326,  308,  309,  312,  328,  322,  329,
      332,  326,  337,  312,  336,  319,  315,  318,  338,  325,
      327,  336,  323,  328,  339,  340,  342,  343,  344,  332,

      345,  329,  346,  339,  340,  349,  337,  344,  350,  347,
      348,  351,  345,  338,  342,  352,  353,  350,  351,  348,
      356,  346,  358,  348,  343,  347,  355,  359,  361,  349,
      365,  356,  363,  362,  367,  364,  355,  369,  353,  368,
      352,  370,  355,  530,  372,  358,  355,  364,  368,  365,
      374,  370,  361,  372,  359,  362,  367,  363,  375,  374,
      369,  376,  377,  378,  380,  382,  372,  375,  383,  390,
      384,  377,  386,  392,  376,  404,  387,  391,  382,  384,
      394,  396,  386,  383,  380,  387,  391,  378,  397,  394,
      399,  403,  392,  390,  406,  407,  409,  404,  410,  396,

      407,  412,  413,  409,  414,  423,  415,  428,  425,  529,
      412,  410,  397,  414,  399,  403,  418,  416,  417,  419,
      422,  406,  416,  417,  413,  415,  424,  423,  419,  422,
      427,  428,  418,  425,  430,  424,  431,  432,  434,  435,
      438,  440,  416,  442,  444,  441,  445,  435,  427,  431,
      442,  455,  443,  450,  448,  432,  430,  434,  441,  440,
      453,  449,  457,  438,  443,  454,  444,  448,  455,  459,
      454,  460,  457,  445,  449,  450,  461,  462,  463,  466,
      467,  469,  453,  461,  476,  468,  472,  463,  474,  466,
      473,  459,  478,  472,  479,  460,  477,  473,  483,  462,

      484,  478,  467,  468,  485,  469,  474,  477,  476,  485,
      487,  488,  490,  491,  492,  494,  493,  528,  479,  484,
      488,  496,  491,  492,  483,  493,  487,  497,  499,  490,
      496,  501,  500,  499,  503,  497,  501,  504,  506,  507,
      494,  500,  508,  513,  514,  515,  522,  506,  518,  520,
      525,  521,  526,  504,  522,  527,  533,  507,  503,  526,
      508,  513,  514,  521,  518,  520,  534,  524,  523,  519,
      517,  515,  516,  525,  512,  511,  533,  510,  509,  527,
      505,  502,  498,  495,  489,  486,  482,  481,  480,  475,
      471,  470,  465,  464,  458,  534,  539,  456,  539,  540,

      540,  541,  541,  452,  451,  447,  446,  439,  437,  436,
      433,  429,  426,  421,  420,  411,  408,  405,  402,  401,
      400,  398,  395,  393,  389,  388,  385,  381,  379,  373,
      371,  366,  360,  357,  354,  341,  335,  334,  333,  331,
      330,  324,  321,  320,  317,  316,  314,  313,  295,  287,
      286,  285,  278,  273,  250,  248,  244,  237,  228,  225,
      218,  216,  212,  211,  209,  206,  202,  201,  199,  198,
      181,  156,  143,  136,  122,  113,  112,  109,  104,  103,
       43,   39,   33,    9,    2,  538,  538,  538,  538,  538,
      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,

      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
      538,  538,  538
    } ;


/* these declarations have to come after the section 1 code or lint gets
 * confused about whether the variables are used
 */
FILE *yyin = stdin, *yyout = stdout;

/* these variables are all declared out here so that section 3 code can
 * manipulate them
 */
static int yy_start, yy_b_buf_p, yy_c_buf_p, yy_e_buf_p;
static int yy_saw_eof, yy_init = 1;

/* yy_ch_buf has to be 1 character longer than YY_BUF_SIZE, since when
 * setting up yytext we can try to put a '\0' just past the end of the
 * matched text
 */
static char yy_ch_buf[YY_BUF_SIZE + 1];
static int yy_st_buf[YY_BUF_SIZE];
static char yy_hold_char;

static char input( void) ;
static void unput( char) ;

char *yytext;
static int yyleng;

/*--------------------------------------------------------------------------*/
/*------------------------- BEGIN LEXICAL ANALYZER -------------------------*/
/*--------------------------------------------------------------------------*/

YY_DECL
    {
    int yy_n_chars, yy_lp, yy_iii, yy_buf_pos, yy_act;
#ifdef FLEX_REJECT_ENABLED
    int yy_full_match;
#endif



    if ( yy_init )
	{
	YY_INIT;
	yy_start = 1;
	yy_init = 0;
	}

    goto get_next_token;

do_action:

#ifdef FLEX_REJECT_ENABLED
    /* remember matched text in case we back up due to trailing context */
    yy_full_match = yy_c_buf_p;
#endif

    for ( ; ; )
	{
	YY_DO_BEFORE_ACTION

#ifdef FLEX_DEBUG
	fprintf( stderr, "--accepting rule #%d\n", yy_act );
#endif
	switch ( yy_act )
	    {
case 1:
;
	YY_BREAK
case 2:
handlehash();
	YY_BREAK
case 3:
skipcomments();
	YY_BREAK
case 4:
return tAMBIENT;
	YY_BREAK
case 5:
return tAPERTURE;
	YY_BREAK
case 6:
return tAPPLYSURF;
	YY_BREAK
case 7:
return tAREA;
	YY_BREAK
case 8:
return tATMOSPHERE;
	YY_BREAK
case 9:
return tBACKGROUND;
	YY_BREAK
case 10:
return tBLOB;
	YY_BREAK
case 11:
return tBLOTCH;
	YY_BREAK
case 12:
return tBODY;
	YY_BREAK
case 13:
return tBOX;
	YY_BREAK
case 14:
return tBUMP;
	YY_BREAK
case 15:
return tCHECKER;
	YY_BREAK
case 16:
return tCLOUD;
	YY_BREAK
case 17:
return tCONE;
	YY_BREAK
case 18:
return tCOMPONENT;
	YY_BREAK
case 19:
return tCONTRAST;
	YY_BREAK
case 20:
return tCROP;
	YY_BREAK
case 21:
return tCURSURF;
	YY_BREAK
case 22:
return tCUTOFF;
	YY_BREAK
case 23:
return tCYL;
	YY_BREAK
case 24:
return tCYLINDRICAL;
	YY_BREAK
case 25:
return tDEFINE;
	YY_BREAK
case 26:
return tDIFFUSE;
	YY_BREAK
case 27:
return tDIFFERENCE;
	YY_BREAK
case 28:
return tDIRECTIONAL;
	YY_BREAK
case 29:
return tDISC;
	YY_BREAK
case 30:
return tEND;
	YY_BREAK
case 31:
return tEXTENDED;
	YY_BREAK
case 32:
return tEXTINCT;
	YY_BREAK
case 33:
return tEYEP;
	YY_BREAK
case 34:
return tEYESEP;
	YY_BREAK
case 35:
return tFILTER;
	YY_BREAK
case 36:
return tFBM;
	YY_BREAK
case 37:
return tFBMBUMP;
	YY_BREAK
case 38:
return tFOCALDIST;
	YY_BREAK
case 39:
return tFOG;
	YY_BREAK
case 40:
return tFOGDECK;
	YY_BREAK
case 41:
return tFOV;
	YY_BREAK
case 42:
return tFRAMELENGTH;
	YY_BREAK
case 43:
return tFRAMES;
	YY_BREAK
case 44:
return tGAUSS;
	YY_BREAK
case 45:
return tGLOSS;
	YY_BREAK
case 46:
return tGRID;
	YY_BREAK
case 47:
return tHEIGHTFIELD;
	YY_BREAK
case 48:
return tIMAGE;
	YY_BREAK
case 49:
return tINDEX;
	YY_BREAK
case 50:
return tINTERSECT;
	YY_BREAK
case 51:
return tJITTER;
	YY_BREAK
case 52:
return tLIGHT;
	YY_BREAK
case 53:
return tLIST;
	YY_BREAK
case 54:
return tLOOKP;
	YY_BREAK
case 55:
return tMAP;
	YY_BREAK
case 56:
return tMARBLE;
	YY_BREAK
case 57:
return tMAXDEPTH;
	YY_BREAK
case 58:
return tMOUNT;
	YY_BREAK
case 59:
return tMIST;
	YY_BREAK
case 60:
return tNAME;
	YY_BREAK
case 61:
return tNOJITTER;
	YY_BREAK
case 62:
return tNOSHADOW;
	YY_BREAK
case 63:
return tOBJECT;
	YY_BREAK
case 64:
return tOUTFILE;
	YY_BREAK
case 65:
return tPLANE;
	YY_BREAK
case 66:
return tPLANAR;
	YY_BREAK
case 67:
return tPOINT;
	YY_BREAK
case 68:
return tPOLY;
	YY_BREAK
case 69:
return tPOLY;
	YY_BREAK
case 70:
return tPRINT;
	YY_BREAK
case 71:
return tQUIET;
	YY_BREAK
case 72:
return tRANGE;
	YY_BREAK
case 73:
return tREFLECT;
	YY_BREAK
case 74:
return tREFLECT;
	YY_BREAK
case 75:
return tREPORT;
	YY_BREAK
case 76:
return tSCREEN; /* A synonym for screen */
	YY_BREAK
case 77:
return tROTATE;
	YY_BREAK
case 78:
return tSAMPLE;
	YY_BREAK
case 79:
return tSCALE;
	YY_BREAK
case 80:
return tSCREEN;
	YY_BREAK
case 81:
return tSHADOWTRANSP;
	YY_BREAK
case 82:
return tSHUTTER;
	YY_BREAK
case 83:
return tSKY;
	YY_BREAK
case 84:
return tSMOOTH;
	YY_BREAK
case 85:
return tSPHERE;
	YY_BREAK
case 86:
return tSPHERICAL;
	YY_BREAK
case 87:
return tSPECULAR;
	YY_BREAK
case 88:
return tSPECPOW;
	YY_BREAK
case 89:
return tSPOT;
	YY_BREAK
case 90:
return tSTARTTIME;
	YY_BREAK
case 91:
return tSTRIPE;
	YY_BREAK
case 92:
return tSURFACE;
	YY_BREAK
case 93:
return tTEXTSURF;
	YY_BREAK
case 94:
return tTEXTURE;
	YY_BREAK
case 95:
return tTILE;
	YY_BREAK
case 96:
return tTORUS;
	YY_BREAK
case 97:
return tTRANSFORM;
	YY_BREAK
case 98:
return tTRANSLATE;
	YY_BREAK
case 99:
return tTRANSLU;
	YY_BREAK
case 100:
return tTRANSLU;
	YY_BREAK
case 101:
return tTRANSP;
	YY_BREAK
case 102:
return tTRANSP;
	YY_BREAK
case 103:
return tTRIANGLE;
	YY_BREAK
case 104:
return tTRIANGLEUV;
	YY_BREAK
case 105:
return tUNION;
	YY_BREAK
case 106:
return tUP;
	YY_BREAK
case 107:
return tUV;
	YY_BREAK
case 108:
return tVERBOSE;
	YY_BREAK
case 109:
return tWINDOW;
	YY_BREAK
case 110:
return tWINDY;
	YY_BREAK
case 111:
return tWOOD;
	YY_BREAK
case 112:
case 113:
case 114:
case 115:
{yylval.d = atof(yytext); return tFLOAT;}
	YY_BREAK
case 116:
{yylval.c = strsave(yytext); return tSTRING;}
	YY_BREAK
case 117:
{yylval.c = strsave(yytext); return tFILENAME;}
	YY_BREAK
case 118:
return yytext[0];
	YY_BREAK
case 119:
YY_DEFAULT_ACTION;
	YY_BREAK

case YY_NEW_FILE:
break; /* begin reading from new file */

case YY_END_TOK:
return ( YY_END_TOK );

default:
YY_FATAL_ERROR( "fatal flex scanner internal error" );
	    }

get_next_token:
	{
	register int yy_curst;
	register char yy_sym;

	YY_DO_BEFORE_SCAN

	/* set up to begin running DFA */

	yy_curst = yy_start;

	if ( yy_ch_buf[yy_c_buf_p] == '\n' ) {
		yylineno++;
		++yy_curst;
		}

	/* yy_b_buf_p points to the position in yy_ch_buf
	 * of the start of the current run.
	 */

	yy_b_buf_p = yy_c_buf_p + 1;

	do /* until the machine jams */
		{
		if ( yy_c_buf_p == yy_e_buf_p )
		{ /* need more input */
		if ( yy_e_buf_p >= YY_BUF_LIM )
			{ /* not enough room to do another read */
			/* see if we can make some room for more chars */

			yy_n_chars = yy_e_buf_p - yy_b_buf_p;

			if ( yy_n_chars >= 0 )
			/* shift down buffer to make room */
			for ( yy_iii = 0; yy_iii <= yy_n_chars; ++yy_iii )
				{
				yy_buf_pos = yy_b_buf_p + yy_iii;
				yy_ch_buf[yy_iii] = yy_ch_buf[yy_buf_pos];
				yy_st_buf[yy_iii] = yy_st_buf[yy_buf_pos];
				}

			yy_b_buf_p = 0;
			yy_e_buf_p = yy_n_chars;

			if ( yy_e_buf_p >= YY_BUF_LIM )
			YY_FATAL_ERROR( "flex input buffer overflowed" );

			yy_c_buf_p = yy_e_buf_p;
			}

		else if ( yy_saw_eof )
			{
saweof:		    if ( yy_b_buf_p > yy_e_buf_p )
			{
			if ( yywrap() )
				{
				yy_act = YY_END_TOK;
				goto do_action;
				}

			else
				{
				YY_INIT;
				yy_act = YY_NEW_FILE;
				goto do_action;
				}
			}

			else /* do a jam to eat up more input */
			{
#ifndef FLEX_INTERACTIVE_SCANNER
			/* we're going to decrement yy_c_buf_p upon doing
			 * the jam.  In this case, that's wrong, since
			 * it points to the last non-jam character.  So
			 * we increment it now to counter the decrement.
			 */
			++yy_c_buf_p;
#endif
			break;
			}
			}

		YY_INPUT( (yy_ch_buf + yy_c_buf_p + 1), yy_n_chars,
			  YY_MAX_LINE );

		if ( yy_n_chars == YY_NULL )
			{
			if ( yy_saw_eof )
	YY_FATAL_ERROR( "flex scanner saw EOF twice - shouldn't happen" );
			yy_saw_eof = 1;
			goto saweof;
			}

		yy_e_buf_p += yy_n_chars;
		}

		++yy_c_buf_p;

#ifdef FLEX_USE_ECS
		yy_sym = e[yy_ch_buf[yy_c_buf_p]];
#else
		yy_sym = yy_ch_buf[yy_c_buf_p];
#endif

#ifdef FLEX_FULL_TABLE
		yy_curst = n[yy_curst][yy_sym];

#else /* get next state from compressed table */

		while ( c[b[yy_curst] + yy_sym] != yy_curst )
		{
		yy_curst = d[yy_curst];

#ifdef FLEX_USE_MECS
		/* we've arrange it so that templates are never chained
		 * to one another.  This means we can afford make a
		 * very simple test to see if we need to convert to
		 * yy_sym's meta-equivalence class without worrying
		 * about erroneously looking up the meta-equivalence
		 * class twice
		 */

		if ( yy_curst >= YY_TEMPLATE )
			yy_sym = m[yy_sym];
#endif
		}

		yy_curst = n[b[yy_curst] + yy_sym];

#endif

		yy_st_buf[yy_c_buf_p] = yy_curst;

		}
#ifdef FLEX_INTERACTIVE_SCANNER
	while ( b[yy_curst] != YY_JAM_BASE );
#else
	while ( yy_curst != YY_JAM );
	--yy_c_buf_p; /* put back character we jammed on */

#endif

	if ( yy_c_buf_p >= yy_b_buf_p )
		{ /* we matched some text */
		yy_curst = yy_st_buf[yy_c_buf_p];
		yy_lp = l[yy_curst];

#ifdef FLEX_REJECT_ENABLED
find_rule: /* we branch to this label when doing a REJECT */
#endif

		for ( ; ; ) /* until we find what rule we matched */
		{
#ifdef FLEX_REJECT_ENABLED
		if ( yy_lp && yy_lp < l[yy_curst + 1] )
			{
			yy_act = a[yy_lp];
			goto do_action; /* "continue 2" */
			}
#else
		if ( yy_lp )
			{
			yy_act = yy_lp;
		    goto do_action; /* "continue 2" */
		    }
#endif

		if ( --yy_c_buf_p < yy_b_buf_p )
		    break;

		yy_curst = yy_st_buf[yy_c_buf_p];
		yy_lp = l[yy_curst];
		}
	    }

	YY_FATAL_ERROR( "no match in flex scanner - possible NULL in input" );
	}
	}

    /*NOTREACHED*/
    }


static  void unput( c )
char c;
{
 register int i;
 register int yy_buf_pos ;

	YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */

	if ( yy_c_buf_p == 0 )
	{
	yy_buf_pos = YY_BUF_MAX ;
	for ( i = yy_e_buf_p; i >= yy_c_buf_p; --i )
		{
		yy_ch_buf[yy_buf_pos] = yy_ch_buf[i];
		yy_st_buf[yy_buf_pos] = yy_st_buf[i];
		--yy_buf_pos;
		}

	yy_c_buf_p = YY_BUF_MAX - yy_e_buf_p;
	yy_e_buf_p = YY_BUF_MAX;
	}

	if ( yy_c_buf_p <= 0 )
	YY_FATAL_ERROR( "flex scanner push-back overflow" );

	if ( yy_c_buf_p >= yy_b_buf_p && yy_ch_buf[yy_c_buf_p] == '\n' )
	yy_ch_buf[yy_c_buf_p - 1] = '\n';

	yy_ch_buf[yy_c_buf_p--] =  c;

	YY_DO_BEFORE_ACTION; /* set up yytext again */

	}


static char input( void)
{
	char c;

	YY_DO_BEFORE_SCAN

	if ( yy_c_buf_p == yy_e_buf_p )
	{ /* need more input */
	int yy_n_chars;

	/* we can throw away the entire current buffer */
	if ( yy_saw_eof )
		{
		if ( yywrap() )
		return ( EOF );

		YY_INIT;
		}

	yy_b_buf_p = 0;
	YY_INPUT( yy_ch_buf, yy_n_chars, YY_MAX_LINE );

	if ( yy_n_chars == YY_NULL )
	{
		yy_saw_eof = 1;

		if ( yywrap() )
		return ( EOF );

		YY_INIT;

		return ( input() );
	}

	yy_c_buf_p = -1;
	yy_e_buf_p = yy_n_chars - 1;
	}

	c = (unsigned char) yy_ch_buf[++yy_c_buf_p];

	if (c=='\n')
		yylineno++;

	YY_DO_BEFORE_ACTION;

	return ( c );
	}

/*--------------------------------------------------------------------------*/
/*------------------------- END OF LEXICAL ANALYZER ------------------------*/
/*--------------------------------------------------------------------------*/


yywrap() {return 1;}
/*
 * Skip over comments.
 */
skipcomments()
{
	char c;

	while (1) {
		while (input() != '*')
			;
		if ((c = input()) == '/')
			return;
		unput(c);
	}
}
/*
 * Deal with ccp-produced lines of the form:
 * # n "filename"
 * and
 * # n
 * Where filename is the name of the file being processed, and n is
 * the current line number in that file.
 */
handlehash()
{
	char buf[BUFSIZ];
	int i;
	extern int yylineno;
	extern char yyfilename[];

	/*
	 * Read the entire line into buf.
	 */
	for (i = 0; (buf[i] = input()) != '\n'; i++)
			;
	unput(buf[i]);		/* To make sure consecutive # lines work. */
	buf[i] = (char)NULL;	/* Replace newline with NULL. */

	/*
	 * Complain if the line was not of the form #n "filename"
	 */
	if ((i = sscanf(buf,"%d \"%[^\"]s\"", &yylineno, yyfilename)) == 0 &&
		(i = sscanf(buf," line %d \"%[^\"]s\"",&yylineno,yyfilename))==0) {
		RLerror(RL_PANIC, "Unknown '#' control (%s).\n",buf,"","");
		exit(1);
	}
	if (i == 1 && (index(buf,'"') != (char *)NULL)) {
		/*
		 * Filename was given as ""
		 */
		(void)strcpy(yyfilename, "stdin");
	}
	yylineno--;  /* The newline we unput will increment yylineno */
}
