Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. #line 2 "lex.yy.c"
  2.  
  3. #line 4 "lex.yy.c"
  4.  
  5. #define  YY_INT_ALIGNED short int
  6.  
  7. /* A lexical scanner generated by flex */
  8.  
  9. #define FLEX_SCANNER
  10. #define YY_FLEX_MAJOR_VERSION 2
  11. #define YY_FLEX_MINOR_VERSION 5
  12. #define YY_FLEX_SUBMINOR_VERSION 35
  13. #if YY_FLEX_SUBMINOR_VERSION > 0
  14. #define FLEX_BETA
  15. #endif
  16.  
  17. /* First, we deal with  platform-specific or compiler-specific issues. */
  18.  
  19. /* begin standard C headers. */
  20. #include <stdio.h>
  21. #include <string.h>
  22. #include <errno.h>
  23. #include <stdlib.h>
  24.  
  25. /* end standard C headers. */
  26.  
  27. /* flex integer type definitions */
  28.  
  29. #ifndef FLEXINT_H
  30. #define FLEXINT_H
  31.  
  32. /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
  33.  
  34. #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
  35.  
  36. /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
  37.  * if you want the limit (max/min) macros for int types.
  38.  */
  39. #ifndef __STDC_LIMIT_MACROS
  40. #define __STDC_LIMIT_MACROS 1
  41. #endif
  42.  
  43. #include <inttypes.h>
  44. typedef int8_t flex_int8_t;
  45. typedef uint8_t flex_uint8_t;
  46. typedef int16_t flex_int16_t;
  47. typedef uint16_t flex_uint16_t;
  48. typedef int32_t flex_int32_t;
  49. typedef uint32_t flex_uint32_t;
  50. #else
  51. typedef signed char flex_int8_t;
  52. typedef short int flex_int16_t;
  53. typedef int flex_int32_t;
  54. typedef unsigned char flex_uint8_t;
  55. typedef unsigned short int flex_uint16_t;
  56. typedef unsigned int flex_uint32_t;
  57.  
  58. /* Limits of integral types. */
  59. #ifndef INT8_MIN
  60. #define INT8_MIN               (-128)
  61. #endif
  62. #ifndef INT16_MIN
  63. #define INT16_MIN              (-32767-1)
  64. #endif
  65. #ifndef INT32_MIN
  66. #define INT32_MIN              (-2147483647-1)
  67. #endif
  68. #ifndef INT8_MAX
  69. #define INT8_MAX               (127)
  70. #endif
  71. #ifndef INT16_MAX
  72. #define INT16_MAX              (32767)
  73. #endif
  74. #ifndef INT32_MAX
  75. #define INT32_MAX              (2147483647)
  76. #endif
  77. #ifndef UINT8_MAX
  78. #define UINT8_MAX              (255U)
  79. #endif
  80. #ifndef UINT16_MAX
  81. #define UINT16_MAX             (65535U)
  82. #endif
  83. #ifndef UINT32_MAX
  84. #define UINT32_MAX             (4294967295U)
  85. #endif
  86.  
  87. #endif /* ! C99 */
  88.  
  89. #endif /* ! FLEXINT_H */
  90.  
  91. #ifdef __cplusplus
  92.  
  93. /* The "const" storage-class-modifier is valid. */
  94. #define YY_USE_CONST
  95.  
  96. #else   /* ! __cplusplus */
  97.  
  98. /* C99 requires __STDC__ to be defined as 1. */
  99. #if defined (__STDC__)
  100.  
  101. #define YY_USE_CONST
  102.  
  103. #endif  /* defined (__STDC__) */
  104. #endif  /* ! __cplusplus */
  105.  
  106. #ifdef YY_USE_CONST
  107. #define yyconst const
  108. #else
  109. #define yyconst
  110. #endif
  111.  
  112. /* Returned upon end-of-file. */
  113. #define YY_NULL 0
  114.  
  115. /* Promotes a possibly negative, possibly signed char to an unsigned
  116.  * integer for use as an array index.  If the signed char is negative,
  117.  * we want to instead treat it as an 8-bit unsigned char, hence the
  118.  * double cast.
  119.  */
  120. #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
  121.  
  122. /* An opaque pointer. */
  123. #ifndef YY_TYPEDEF_YY_SCANNER_T
  124. #define YY_TYPEDEF_YY_SCANNER_T
  125. typedef void* yyscan_t;
  126. #endif
  127.  
  128. /* For convenience, these vars (plus the bison vars far below)
  129.    are macros in the reentrant scanner. */
  130. #define yyin yyg->yyin_r
  131. #define yyout yyg->yyout_r
  132. #define yyextra yyg->yyextra_r
  133. #define yyleng yyg->yyleng_r
  134. #define yytext yyg->yytext_r
  135. #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
  136. #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
  137. #define yy_flex_debug yyg->yy_flex_debug_r
  138.  
  139. /* Enter a start condition.  This macro really ought to take a parameter,
  140.  * but we do it the disgusting crufty way forced on us by the ()-less
  141.  * definition of BEGIN.
  142.  */
  143. #define BEGIN yyg->yy_start = 1 + 2 *
  144.  
  145. /* Translate the current start state into a value that can be later handed
  146.  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  147.  * compatibility.
  148.  */
  149. #define YY_START ((yyg->yy_start - 1) / 2)
  150. #define YYSTATE YY_START
  151.  
  152. /* Action number for EOF rule of a given start state. */
  153. #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  154.  
  155. /* Special action meaning "start processing a new file". */
  156. #define YY_NEW_FILE _mesa_program_lexer_restart(yyin ,yyscanner )
  157.  
  158. #define YY_END_OF_BUFFER_CHAR 0
  159.  
  160. /* Size of default input buffer. */
  161. #ifndef YY_BUF_SIZE
  162. #ifdef __ia64__
  163. /* On IA-64, the buffer size is 16k, not 8k.
  164.  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
  165.  * Ditto for the __ia64__ case accordingly.
  166.  */
  167. #define YY_BUF_SIZE 32768
  168. #else
  169. #define YY_BUF_SIZE 16384
  170. #endif /* __ia64__ */
  171. #endif
  172.  
  173. /* The state buf must be large enough to hold one state per character in the main buffer.
  174.  */
  175. #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
  176.  
  177. #ifndef YY_TYPEDEF_YY_BUFFER_STATE
  178. #define YY_TYPEDEF_YY_BUFFER_STATE
  179. typedef struct yy_buffer_state *YY_BUFFER_STATE;
  180. #endif
  181.  
  182. #define EOB_ACT_CONTINUE_SCAN 0
  183. #define EOB_ACT_END_OF_FILE 1
  184. #define EOB_ACT_LAST_MATCH 2
  185.  
  186.     #define YY_LESS_LINENO(n)
  187.    
  188. /* Return all but the first "n" matched characters back to the input stream. */
  189. #define yyless(n) \
  190.         do \
  191.                 { \
  192.                 /* Undo effects of setting up yytext. */ \
  193.         int yyless_macro_arg = (n); \
  194.         YY_LESS_LINENO(yyless_macro_arg);\
  195.                 *yy_cp = yyg->yy_hold_char; \
  196.                 YY_RESTORE_YY_MORE_OFFSET \
  197.                 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
  198.                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
  199.                 } \
  200.         while ( 0 )
  201.  
  202. #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
  203.  
  204. #ifndef YY_TYPEDEF_YY_SIZE_T
  205. #define YY_TYPEDEF_YY_SIZE_T
  206. typedef size_t yy_size_t;
  207. #endif
  208.  
  209. #ifndef YY_STRUCT_YY_BUFFER_STATE
  210. #define YY_STRUCT_YY_BUFFER_STATE
  211. struct yy_buffer_state
  212.         {
  213.         FILE *yy_input_file;
  214.  
  215.         char *yy_ch_buf;                /* input buffer */
  216.         char *yy_buf_pos;               /* current position in input buffer */
  217.  
  218.         /* Size of input buffer in bytes, not including room for EOB
  219.          * characters.
  220.          */
  221.         yy_size_t yy_buf_size;
  222.  
  223.         /* Number of characters read into yy_ch_buf, not including EOB
  224.          * characters.
  225.          */
  226.         int yy_n_chars;
  227.  
  228.         /* Whether we "own" the buffer - i.e., we know we created it,
  229.          * and can realloc() it to grow it, and should free() it to
  230.          * delete it.
  231.          */
  232.         int yy_is_our_buffer;
  233.  
  234.         /* Whether this is an "interactive" input source; if so, and
  235.          * if we're using stdio for input, then we want to use getc()
  236.          * instead of fread(), to make sure we stop fetching input after
  237.          * each newline.
  238.          */
  239.         int yy_is_interactive;
  240.  
  241.         /* Whether we're considered to be at the beginning of a line.
  242.          * If so, '^' rules will be active on the next match, otherwise
  243.          * not.
  244.          */
  245.         int yy_at_bol;
  246.  
  247.     int yy_bs_lineno; /**< The line count. */
  248.     int yy_bs_column; /**< The column count. */
  249.    
  250.         /* Whether to try to fill the input buffer when we reach the
  251.          * end of it.
  252.          */
  253.         int yy_fill_buffer;
  254.  
  255.         int yy_buffer_status;
  256.  
  257. #define YY_BUFFER_NEW 0
  258. #define YY_BUFFER_NORMAL 1
  259.         /* When an EOF's been seen but there's still some text to process
  260.          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
  261.          * shouldn't try reading from the input source any more.  We might
  262.          * still have a bunch of tokens to match, though, because of
  263.          * possible backing-up.
  264.          *
  265.          * When we actually see the EOF, we change the status to "new"
  266.          * (via _mesa_program_lexer_restart()), so that the user can continue scanning by
  267.          * just pointing yyin at a new input file.
  268.          */
  269. #define YY_BUFFER_EOF_PENDING 2
  270.  
  271.         };
  272. #endif /* !YY_STRUCT_YY_BUFFER_STATE */
  273.  
  274. /* We provide macros for accessing buffer states in case in the
  275.  * future we want to put the buffer states in a more general
  276.  * "scanner state".
  277.  *
  278.  * Returns the top of the stack, or NULL.
  279.  */
  280. #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
  281.                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
  282.                           : NULL)
  283.  
  284. /* Same as previous macro, but useful when we know that the buffer stack is not
  285.  * NULL or when we need an lvalue. For internal use only.
  286.  */
  287. #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
  288.  
  289. void _mesa_program_lexer_restart (FILE *input_file ,yyscan_t yyscanner );
  290. void _mesa_program_lexer__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
  291. YY_BUFFER_STATE _mesa_program_lexer__create_buffer (FILE *file,int size ,yyscan_t yyscanner );
  292. void _mesa_program_lexer__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
  293. void _mesa_program_lexer__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
  294. void _mesa_program_lexer_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
  295. void _mesa_program_lexer_pop_buffer_state (yyscan_t yyscanner );
  296.  
  297. static void _mesa_program_lexer_ensure_buffer_stack (yyscan_t yyscanner );
  298. static void _mesa_program_lexer__load_buffer_state (yyscan_t yyscanner );
  299. static void _mesa_program_lexer__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
  300.  
  301. #define YY_FLUSH_BUFFER _mesa_program_lexer__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
  302.  
  303. YY_BUFFER_STATE _mesa_program_lexer__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
  304. YY_BUFFER_STATE _mesa_program_lexer__scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
  305. YY_BUFFER_STATE _mesa_program_lexer__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
  306.  
  307. void *_mesa_program_lexer_alloc (yy_size_t ,yyscan_t yyscanner );
  308. void *_mesa_program_lexer_realloc (void *,yy_size_t ,yyscan_t yyscanner );
  309. void _mesa_program_lexer_free (void * ,yyscan_t yyscanner );
  310.  
  311. #define yy_new_buffer _mesa_program_lexer__create_buffer
  312.  
  313. #define yy_set_interactive(is_interactive) \
  314.         { \
  315.         if ( ! YY_CURRENT_BUFFER ){ \
  316.         _mesa_program_lexer_ensure_buffer_stack (yyscanner); \
  317.                 YY_CURRENT_BUFFER_LVALUE =    \
  318.             _mesa_program_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
  319.         } \
  320.         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
  321.         }
  322.  
  323. #define yy_set_bol(at_bol) \
  324.         { \
  325.         if ( ! YY_CURRENT_BUFFER ){\
  326.         _mesa_program_lexer_ensure_buffer_stack (yyscanner); \
  327.                 YY_CURRENT_BUFFER_LVALUE =    \
  328.             _mesa_program_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
  329.         } \
  330.         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
  331.         }
  332.  
  333. #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
  334.  
  335. /* Begin user sect3 */
  336.  
  337. #define _mesa_program_lexer_wrap(n) 1
  338. #define YY_SKIP_YYWRAP
  339.  
  340. typedef unsigned char YY_CHAR;
  341.  
  342. typedef int yy_state_type;
  343.  
  344. #define yytext_ptr yytext_r
  345.  
  346. static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
  347. static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
  348. static int yy_get_next_buffer (yyscan_t yyscanner );
  349. static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
  350.  
  351. /* Done after the current pattern has been matched and before the
  352.  * corresponding action - sets up yytext.
  353.  */
  354. #define YY_DO_BEFORE_ACTION \
  355.         yyg->yytext_ptr = yy_bp; \
  356.         yyleng = (size_t) (yy_cp - yy_bp); \
  357.         yyg->yy_hold_char = *yy_cp; \
  358.         *yy_cp = '\0'; \
  359.         yyg->yy_c_buf_p = yy_cp;
  360.  
  361. #define YY_NUM_RULES 170
  362. #define YY_END_OF_BUFFER 171
  363. /* This struct is not used in this scanner,
  364.    but its presence is necessary. */
  365. struct yy_trans_info
  366.         {
  367.         flex_int32_t yy_verify;
  368.         flex_int32_t yy_nxt;
  369.         };
  370. static yyconst flex_int16_t yy_accept[850] =
  371.     {   0,
  372.         0,    0,  171,  169,  167,  166,  169,  169,  139,  165,
  373.       141,  141,  141,  141,  139,  139,  139,  139,  139,  139,
  374.       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  375.       139,  139,  139,  139,  139,  167,    0,    0,  168,  139,
  376.         0,  140,  142,  162,  162,    0,    0,    0,    0,  162,
  377.         0,    0,    0,    0,    0,    0,    0,  119,  163,  120,
  378.       121,  153,  153,  153,  153,    0,  141,    0,  127,  128,
  379.       129,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  380.       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  381.       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  382.  
  383.       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  384.       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  385.       139,  139,  139,  139,  139,  139,    0,    0,    0,    0,
  386.         0,    0,    0,    0,    0,  161,    0,    0,    0,    0,
  387.         0,    0,    0,    0,    0,  160,  160,    0,    0,    0,
  388.         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  389.       159,  159,  159,    0,    0,    0,    0,    0,    0,    0,
  390.         0,    0,    0,  150,  150,  150,  151,  151,  152,  143,
  391.       142,  143,    0,  144,   11,   12,  139,   13,  139,  139,
  392.        14,   15,  139,   16,   17,   18,   19,   20,   21,    6,
  393.  
  394.        22,   23,   24,   25,   26,   28,   27,   29,   30,   31,
  395.        32,   33,   34,   35,  139,  139,  139,  139,  139,   40,
  396.        41,  139,   42,   43,   44,   45,   46,   47,   48,  139,
  397.        49,   50,   51,   52,   53,   54,   55,  139,   56,   57,
  398.        58,   59,  139,  139,   64,   65,  139,  139,  139,  139,
  399.       139,  139,    0,    0,    0,    0,  142,    0,    0,    0,
  400.         0,    0,    0,    0,    0,    0,    0,   80,   81,   83,
  401.         0,  158,    0,    0,    0,    0,    0,    0,   97,    0,
  402.         0,    0,    0,    0,    0,    0,    0,    0,    0,  157,
  403.       156,  156,  109,    0,    0,    0,    0,    0,    0,    0,
  404.  
  405.         0,    0,    0,  147,  147,  148,  149,    0,  145,   11,
  406.        11,  139,   12,   12,   12,  139,  139,  139,  139,  139,
  407.        15,   15,  139,  130,   16,   16,  139,   17,   17,  139,
  408.        18,   18,  139,   19,   19,  139,   20,   20,  139,   21,
  409.        21,  139,   22,   22,  139,   24,   24,  139,   25,   25,
  410.       139,   28,   28,  139,   27,   27,  139,   30,   30,  139,
  411.        31,   31,  139,   32,   32,  139,   33,   33,  139,   34,
  412.        34,  139,   35,   35,  139,  139,  139,  139,   36,  139,
  413.        38,  139,   40,   40,  139,   41,   41,  139,  131,   42,
  414.        42,  139,   43,   43,  139,  139,   45,   45,  139,   46,
  415.  
  416.        46,  139,   47,   47,  139,   48,   48,  139,  139,   49,
  417.        49,  139,   50,   50,  139,   51,   51,  139,   52,   52,
  418.       139,   53,   53,  139,   54,   54,  139,  139,   10,   56,
  419.       139,   57,  139,   58,  139,   59,  139,   60,  139,   62,
  420.       139,   64,   64,  139,  139,  139,  139,  139,  139,  139,
  421.       139,    0,  164,    0,    0,    0,   73,   74,    0,    0,
  422.         0,    0,    0,    0,    0,   85,    0,    0,    0,    0,
  423.         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  424.         0,    0,    0,    0,  155,    0,    0,    0,  113,    0,
  425.       115,    0,    0,    0,    0,    0,    0,  154,  146,  139,
  426.  
  427.       139,  139,    4,  139,  139,  139,  139,  139,  139,  139,
  428.       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  429.       139,  139,  139,  139,  139,  139,    9,   37,   39,  139,
  430.       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  431.       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  432.        60,  139,   61,   62,  139,   63,  139,  139,  139,  139,
  433.       139,   69,  139,  139,    0,    0,    0,    0,    0,   75,
  434.        76,    0,    0,    0,    0,   84,    0,    0,   88,   91,
  435.         0,    0,    0,    0,    0,    0,    0,  102,  103,    0,
  436.         0,    0,    0,  108,    0,    0,    0,    0,    0,    0,
  437.  
  438.         0,    0,    0,    0,  139,  139,  139,  139,  139,  139,
  439.         5,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  440.       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  441.         7,    8,  139,  139,  139,  139,  139,  139,  139,  139,
  442.       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  443.       139,  139,  139,  139,   61,  139,  139,   63,  139,  139,
  444.       139,  139,  139,   70,  139,   66,    0,    0,    0,    0,
  445.       124,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  446.        94,    0,   98,   99,    0,  101,    0,    0,    0,    0,
  447.         0,    0,    0,    0,    0,    0,  117,  118,    0,    0,
  448.  
  449.       125,   11,    3,   12,  135,  136,  139,   14,   15,   16,
  450.        17,   18,   19,   20,   21,   22,   24,   25,   28,   27,
  451.        30,   31,   32,   33,   34,   35,   40,   41,   42,   43,
  452.        44,   45,   46,   47,   48,  139,  139,  139,   49,   50,
  453.        51,   52,   53,   54,   55,   56,   57,   58,   59,  139,
  454.       139,  139,  139,   64,   65,  139,   68,  126,    0,    0,
  455.        71,    0,   77,    0,    0,    0,   86,    0,    0,    0,
  456.         0,    0,    0,  100,    0,    0,  106,   93,    0,    0,
  457.         0,    0,    0,    0,  122,    0,  139,  132,  133,  139,
  458.        60,  139,   62,  139,   67,    0,    0,    0,    0,   79,
  459.  
  460.        82,   87,    0,    0,   92,    0,    0,    0,  105,    0,
  461.         0,    0,    0,  114,  116,    0,  139,  139,   61,   63,
  462.         2,    1,    0,   78,    0,   90,    0,   96,  104,    0,
  463.         0,  111,  112,  123,  139,  134,    0,   89,    0,  107,
  464.       110,  139,   72,   95,  139,  139,  137,  138,    0
  465.     } ;
  466.  
  467. static yyconst flex_int32_t yy_ec[256] =
  468.     {   0,
  469.         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
  470.         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
  471.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  472.         1,    2,    5,    1,    6,    7,    1,    1,    1,    1,
  473.         1,    1,    8,    1,    8,    9,    1,   10,   11,   12,
  474.        13,   14,   15,   15,   15,   15,   15,    1,    1,    1,
  475.         1,    1,    1,    1,   16,   17,   18,   19,   20,   21,
  476.        22,   23,   24,    7,   25,   26,   27,   28,   29,   30,
  477.        31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
  478.         1,    1,    1,    1,   41,    1,   42,   43,   44,   45,
  479.  
  480.        46,   47,   48,   49,   50,   51,   52,   53,   54,   55,
  481.        56,   57,   58,   59,   60,   61,   62,   63,   64,   65,
  482.        66,   67,    1,    1,    1,    1,    1,    1,    1,    1,
  483.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  484.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  485.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  486.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  487.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  488.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  489.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  490.  
  491.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  492.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  493.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  494.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  495.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  496.         1,    1,    1,    1,    1
  497.     } ;
  498.  
  499. static yyconst flex_int32_t yy_meta[68] =
  500.     {   0,
  501.         1,    1,    1,    1,    1,    1,    2,    1,    3,    2,
  502.         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
  503.         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
  504.         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
  505.         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
  506.         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
  507.         2,    2,    2,    2,    2,    2,    2
  508.     } ;
  509.  
  510. static yyconst flex_int16_t yy_base[853] =
  511.     {   0,
  512.         0,    0, 1299, 1300,   66, 1300, 1293, 1294,    0,   69,
  513.        85,  128,  140,  152,  151,   58,   56,   63,   76, 1272,
  514.       158,  160,   39,  163,  173,  189,   52, 1265,   76, 1235,
  515.      1234, 1246, 1230, 1244, 1243,  105, 1272, 1284, 1300,    0,
  516.       225, 1300,  218,  160,  157,   20,  123,   66,  119,  192,
  517.      1244, 1230,   54,  162, 1228, 1240,  194, 1300,  200,  195,
  518.        98,  227,  196,  231,  235,  293,  305,  316, 1300, 1300,
  519.      1300, 1249, 1262, 1256,  223, 1245, 1248, 1244, 1259,  107,
  520.       298, 1241, 1255,  246, 1241, 1254, 1245, 1258, 1235, 1246,
  521.      1237,  182, 1238, 1229, 1238, 1229, 1228, 1229,  144, 1223,
  522.  
  523.      1229, 1240, 1231, 1225, 1222, 1223, 1227,  289, 1236, 1223,
  524.       302, 1230, 1217, 1231, 1207,   65,  315,  276, 1227, 1226,
  525.      1202, 1187, 1182, 1199, 1175, 1180, 1206,  279, 1195,  293,
  526.      1190,  342,  299, 1192, 1173,  317, 1183, 1179, 1174,  207,
  527.      1180, 1166, 1182, 1179, 1170,  320,  324, 1172, 1161, 1175,
  528.      1178, 1160, 1175, 1162, 1159, 1166,  284, 1174,  227,  288,
  529.       327,  342,  345, 1151, 1168, 1169, 1162, 1144,  318, 1145,
  530.      1167, 1158,  330,  341,  345,  349,  353,  357,  361, 1300,
  531.       419,  430,  436,  442,  440,  441, 1191,    0, 1190, 1173,
  532.      1163,  443, 1183,  444,  451,  468,  470,  472,  471,    0,
  533.  
  534.       496,    0,  497,  498,    0,  499,  500,    0,  524,  525,
  535.       526,  536,  537,  553, 1178, 1171, 1184,  354,  356,  561,
  536.       563, 1165,  564,  565, 1157,  580,  590,  591,  592, 1178,
  537.       593,  617,  618,  619,  629,  630, 1155, 1165,  330,  362,
  538.       419,  483,  445,  364,  646, 1153, 1145, 1144, 1129, 1129,
  539.      1128, 1127, 1170, 1142, 1130,  662,  669,  643, 1134,  487,
  540.      1131, 1125, 1125, 1119, 1132, 1132, 1117, 1300, 1300, 1132,
  541.      1120,  646, 1127,  135, 1124, 1130,  561, 1125, 1300, 1116,
  542.      1123, 1122, 1125, 1111, 1110, 1114, 1109,  448, 1114,  650,
  543.       653,  665, 1300, 1106, 1104, 1104, 1112, 1113, 1095,  670,
  544.  
  545.      1100, 1106,  486,  579,  655,  661,  668,  726,  732, 1112,
  546.       682, 1119, 1110,  688,  730, 1117, 1116, 1109, 1123, 1113,
  547.      1104,  712, 1111,    0, 1102,  731, 1109, 1100,  733, 1107,
  548.      1098,  734, 1105, 1096,  736, 1103, 1094,  737, 1101, 1092,
  549.       738, 1099, 1090,  739, 1097, 1088,  740, 1095, 1086,  741,
  550.      1093, 1084,  742, 1091, 1082,  743, 1089, 1080,  744, 1087,
  551.      1078,  745, 1085, 1076,  746, 1083, 1074,  747, 1081, 1072,
  552.       748, 1079, 1070,  749, 1077, 1080, 1073, 1080,    0, 1073,
  553.         0, 1088, 1063,  750, 1070, 1061,  751, 1068,    0, 1059,
  554.       752, 1066, 1057,  755, 1064, 1063, 1054,  758, 1061, 1052,
  555.  
  556.       776, 1059, 1050,  777, 1057, 1048,  779, 1055, 1058, 1045,
  557.       780, 1052, 1043,  782, 1050, 1041,  783, 1048, 1039,  784,
  558.      1046, 1037,  785, 1044, 1035,  786, 1042, 1041,    0, 1032,
  559.      1039, 1030, 1037, 1028, 1035, 1026, 1033,  787, 1032,  788,
  560.      1047, 1022,  789, 1029, 1028, 1006, 1000, 1005, 1011,  994,
  561.      1009,  424, 1300, 1008,  998, 1002, 1300, 1300,  992, 1001,
  562.       987, 1004,  987,  990,  984, 1300,  985,  984,  981,  988,
  563.       981,  989,  985,  995,  992,  974,  980,  987,  971,  970,
  564.       988,  970,  982,  981, 1300,  980,  970,  974, 1300,  961,
  565.      1300,  966,  966,  974,  957,  958,  968, 1300, 1300, 1000,
  566.  
  567.       982,  998,    0,  798,  996,  996,  995,  994,  993,  992,
  568.       991,  990,  989,  988,  987,  986,  985,  984,  983,  982,
  569.       981,  980,  979,  978,  965,  958,    0,    0,    0,  975,
  570.       974,  973,  972,  971,  970,  969,  968,  967,  945,  965,
  571.       964,  963,  962,  961,  960,  959,  958,  957,  956,  955,
  572.       929,  936,  793,  927,  934,  794,  950,  949,  918,  921,
  573.       901,    0,  902,  895,  902,  901,  902,  894,  912, 1300,
  574.      1300,  894,  892,  902,  895, 1300,  890,  907,  516, 1300,
  575.       898,  882,  883,  892,  883,  882,  882, 1300,  881,  890,
  576.       880,  896,  893, 1300,  892,  890,  879,  880,  876,  868,
  577.  
  578.       875,  870,  871,  866,  892,  892,  890,  904,  903,  898,
  579.         0,  886,  885,  884,  883,  882,  881,  880,  879,  878,
  580.       877,  876,  875,  874,  873,  872,  871,  870,  869,  868,
  581.         0,    0,  867,  866,  865,  864,  863,  862,  861,  860,
  582.       859,  804,  858,  857,  856,  855,  854,  853,  852,  851,
  583.       850,  849,  848,  865,  839,  846,  862,  836,  843,  841,
  584.       840,  818,  818,    0,  825,    0,  859,  858,  807,  825,
  585.      1300,  820,  815,  808,  804,  816,  806,  804,  800,  816,
  586.       807,  806, 1300, 1300,  809, 1300,  804,  797,  786,  797,
  587.       789,  793,  806,  801,  804,  786, 1300, 1300,  798,  787,
  588.  
  589.      1300,    0,    0,    0,    0,    0,  826,    0,    0,    0,
  590.         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  591.         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  592.         0,    0,    0,    0,    0,  814,  813,  802,    0,    0,
  593.         0,    0,    0,    0,    0,    0,    0,    0,    0,  785,
  594.       798,  779,  792,    0,    0,  656,    0,    0,  706,  702,
  595.      1300,  649, 1300,  648,  648,  654, 1300,  637,  645,  610,
  596.       612,  608,  608, 1300,  572,  583, 1300, 1300,  577,  573,
  597.       560,  557,  542,  555, 1300,  539,  573,    0,    0,  572,
  598.         0,  555,    0,  546,    0,  562,  551,  495,  479, 1300,
  599.  
  600.      1300, 1300,  481,  481, 1300,  480,  443,   31, 1300,  141,
  601.       166,  171,  186, 1300, 1300,  211,  236,  276,    0,    0,
  602.      1300, 1300,  290, 1300,  325, 1300,  346, 1300, 1300,  343,
  603.       341, 1300, 1300, 1300,  365,    0,  380, 1300,  371, 1300,
  604.      1300,  486, 1300, 1300,  451,  458,    0,    0, 1300,  836,
  605.       503,  839
  606.     } ;
  607.  
  608. static yyconst flex_int16_t yy_def[853] =
  609.     {   0,
  610.       849,    1,  849,  849,  849,  849,  849,  850,  851,  849,
  611.       849,  849,  849,  849,  851,  851,  851,  851,  851,  851,
  612.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  613.       851,  851,  851,  851,  851,  849,  849,  850,  849,  851,
  614.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  615.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  616.       849,  849,  849,  849,  849,  852,  849,  849,  849,  849,
  617.       849,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  618.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  619.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  620.  
  621.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  622.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  623.       851,  851,  851,  851,  851,  851,  849,  849,  849,  849,
  624.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  625.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  626.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  627.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  628.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  629.       849,  849,  849,  849,  851,  851,  851,  851,  851,  851,
  630.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  631.  
  632.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  633.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  634.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  635.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  636.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  637.       851,  851,  849,  849,  849,  849,  849,  849,  849,  849,
  638.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  639.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  640.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  641.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  642.  
  643.       849,  849,  849,  849,  849,  849,  849,  849,  849,  851,
  644.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  645.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  646.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  647.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  648.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  649.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  650.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  651.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  652.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  653.  
  654.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  655.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  656.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  657.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  658.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  659.       851,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  660.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  661.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  662.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  663.       849,  849,  849,  849,  849,  849,  849,  849,  849,  851,
  664.  
  665.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  666.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  667.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  668.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  669.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  670.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  671.       851,  851,  851,  851,  849,  849,  849,  849,  849,  849,
  672.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  673.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  674.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  675.  
  676.       849,  849,  849,  849,  851,  851,  851,  851,  851,  851,
  677.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  678.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  679.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  680.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  681.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  682.       851,  851,  851,  851,  851,  851,  849,  849,  849,  849,
  683.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  684.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  685.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  686.  
  687.       849,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  688.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  689.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  690.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  691.       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
  692.       851,  851,  851,  851,  851,  851,  851,  851,  849,  849,
  693.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  694.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  695.       849,  849,  849,  849,  849,  849,  851,  851,  851,  851,
  696.       851,  851,  851,  851,  851,  849,  849,  849,  849,  849,
  697.  
  698.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  699.       849,  849,  849,  849,  849,  849,  851,  851,  851,  851,
  700.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  701.       849,  849,  849,  849,  851,  851,  849,  849,  849,  849,
  702.       849,  851,  849,  849,  851,  851,  851,  851,    0,  849,
  703.       849,  849
  704.     } ;
  705.  
  706. static yyconst flex_int16_t yy_nxt[1368] =
  707.     {   0,
  708.         4,    5,    6,    5,    7,    8,    9,    4,   10,   11,
  709.        12,   13,   14,   11,   11,   15,    9,   16,   17,   18,
  710.        19,    9,    9,    9,   20,   21,   22,    9,   23,   24,
  711.         9,   25,   26,   27,   28,    9,    9,   29,    9,    9,
  712.         9,    9,    9,    9,    9,    9,   30,    9,    9,    9,
  713.         9,    9,    9,    9,    9,    9,   31,    9,   32,   33,
  714.        34,    9,   35,    9,    9,    9,    9,   36,   96,   36,
  715.        41,  116,  137,   97,   80,  138,  829,   42,   43,   43,
  716.        43,   43,   43,   43,   77,   81,   78,  119,   82,  117,
  717.        83,  238,   79,   66,   67,   67,   67,   67,   67,   67,
  718.  
  719.        84,   85,  239,  150,   68,  120,   36,   86,   36,  151,
  720.        44,   45,   46,   47,   48,   49,   50,   51,   52,  141,
  721.       142,   53,   54,   55,   56,   57,   58,   59,   60,   61,
  722.        68,  143,   62,   63,   64,   65,   66,   67,   67,   67,
  723.        67,   67,   67,  170,  194,  195,   69,   68,   66,   67,
  724.        67,   67,   67,   67,   67,  218,  171,  219,   70,   68,
  725.        66,   67,   67,   67,   67,   67,   67,   72,  139,   73,
  726.        71,   68,  140,   68,  144,   92,   74,  145,   98,   88,
  727.       467,   89,   75,   93,   76,   68,   90,   99,   94,   91,
  728.       101,  100,  102,  103,   95,  468,  830,   68,  136,  133,
  729.  
  730.       210,  133,  133,  152,  133,  104,  105,  133,  106,  107,
  731.       108,  109,  110,  134,  111,  133,  112,  153,  133,  211,
  732.       135,  831,  113,  114,  154,  115,   41,   43,   43,   43,
  733.        43,   43,   43,  146,  147,  157,  832,  132,  165,  133,
  734.       166,  161,  162,  167,  168,  833,  158,  163,  188,  159,
  735.       133,  169,  160,  265,  189,  164,  834,  201,  133,  174,
  736.       173,  175,  176,  132,  835,  266,  128,  129,   46,   47,
  737.        48,   49,  172,   51,   52,  202,  285,   53,   54,   55,
  738.        56,   57,   58,  130,   60,   61,  286,  243,  131,  244,
  739.       173,  173,  173,  173,  177,  173,  173,  178,  179,  173,
  740.  
  741.       173,  173,  181,  181,  181,  181,  181,  181,  228,  836,
  742.       196,  197,  182,   66,   67,   67,   67,   67,   67,   67,
  743.       198,  232,  229,  183,   68,  184,  184,  184,  184,  184,
  744.       184,  240,  134,  241,  255,  233,  282,  287,  182,  135,
  745.       258,  258,  283,  288,  242,  837,  258,  430,  164,  256,
  746.        68,  257,  257,  257,  257,  257,  257,  258,  258,  258,
  747.       261,  258,  258,  298,  258,  272,  258,  258,  258,  258,
  748.       431,  258,  381,  299,  258,  258,  379,  838,  258,  432,
  749.       440,  289,  258,  290,  258,  258,  291,  292,  380,  258,
  750.       382,  839,  258,  303,  303,  303,  303,  840,  441,  841,
  751.  
  752.       258,  842,  433,  258,  303,  303,  303,  303,  304,  303,
  753.       303,  305,  306,  303,  303,  303,  303,  303,  303,  303,
  754.       307,  303,  303,  303,  303,  303,  303,  303,   43,   43,
  755.        43,   43,   43,   43,  843,  844,  434,  308,  132,  309,
  756.       309,  309,  309,  309,  309,  184,  184,  184,  184,  184,
  757.       184,  184,  184,  184,  184,  184,  184,  310,  313,  435,
  758.       321,  325,  311,  314,  132,  322,  326,  438,  328,  847,
  759.       565,  311,  315,  329,  322,  326,  848,  311,  314,  439,
  760.       312,  316,  329,  323,  327,  331,  566,  334,  340,  337,
  761.       332,  330,  335,  341,  338,  482,  845,  846,  483,  332,
  762.  
  763.       436,  335,  341,  338,   40,  332,  828,  335,  333,  338,
  764.       336,  342,  339,  343,  346,  349,  352,  355,  344,  347,
  765.       350,  353,  356,  437,  827,  826,  825,  344,  347,  350,
  766.       353,  356,  455,  824,  347,  350,  345,  348,  351,  354,
  767.       357,  358,  361,  364,  823,  456,  359,  362,  365,  498,
  768.       498,  498,  498,  367,  370,  359,  362,  365,  368,  371,
  769.       822,  359,  362,  365,  360,  363,  366,  368,  371,  678,
  770.       373,  821,  679,  368,  371,  374,  369,  372,  383,  820,
  771.       386,  390,  393,  384,  374,  387,  391,  394,  819,  818,
  772.       374,  817,  384,  375,  387,  391,  394,  397,  816,  815,
  773.  
  774.       814,  385,  398,  388,  392,  395,  471,  400,  403,  406,
  775.       410,  398,  401,  404,  407,  411,  813,  398,  812,  472,
  776.       399,  401,  404,  407,  411,  811,  810,  401,  404,  407,
  777.       402,  405,  408,  412,  413,  416,  419,  809,  808,  414,
  778.       417,  420,  498,  498,  498,  498,  422,  425,  414,  417,
  779.       420,  423,  426,  807,  414,  417,  420,  415,  418,  421,
  780.       423,  426,  806,  442,  805,  804,  423,  426,  443,  424,
  781.       427,  257,  257,  257,  257,  257,  257,  443,  257,  257,
  782.       257,  257,  257,  257,  453,  453,  444,  453,  453,  803,
  783.       453,  453,  453,  453,  453,  453,  802,  453,  801,  310,
  784.  
  785.       453,  453,  800,  799,  453,  313,  485,  453,  453,  798,
  786.       797,  453,  453,  492,  796,  493,  795,  494,  499,  498,
  787.       498,  498,  312,  453,  498,  498,  498,  498,  316,  321,
  788.       495,  498,  498,  498,  498,  309,  309,  309,  309,  309,
  789.       309,  309,  309,  309,  309,  309,  309,  313,  325,  501,
  790.       328,  331,  323,  334,  337,  340,  343,  346,  349,  352,
  791.       355,  358,  361,  364,  367,  370,  373,  383,  386,  390,
  792.       316,  327,  393,  330,  333,  397,  336,  339,  342,  345,
  793.       348,  351,  354,  357,  360,  363,  366,  369,  372,  375,
  794.       385,  388,  392,  400,  403,  395,  406,  410,  399,  413,
  795.  
  796.       416,  419,  422,  425,  551,  554,  442,  794,  608,  609,
  797.       655,  658,  793,  792,  736,  737,  402,  405,  791,  408,
  798.       412,  790,  415,  418,  421,  424,  427,  552,  555,  444,
  799.       610,  789,  788,  656,  659,  738,   38,   38,   38,  180,
  800.       180,  787,  786,  785,  784,  783,  782,  781,  780,  779,
  801.       778,  777,  776,  775,  774,  773,  772,  771,  770,  769,
  802.       768,  767,  766,  765,  764,  763,  762,  761,  760,  759,
  803.       758,  757,  756,  755,  754,  753,  659,  752,  751,  656,
  804.       750,  749,  748,  747,  746,  745,  744,  743,  742,  741,
  805.       740,  739,  735,  734,  733,  732,  731,  730,  729,  728,
  806.  
  807.       727,  726,  725,  724,  723,  722,  721,  720,  719,  718,
  808.       717,  716,  715,  714,  713,  712,  711,  710,  709,  708,
  809.       707,  706,  705,  704,  703,  702,  701,  700,  699,  698,
  810.       697,  696,  695,  694,  693,  692,  691,  690,  689,  688,
  811.       687,  686,  685,  684,  683,  682,  681,  680,  677,  676,
  812.       675,  674,  673,  672,  671,  670,  669,  668,  667,  666,
  813.       665,  664,  663,  662,  661,  660,  657,  555,  654,  552,
  814.       653,  652,  651,  650,  649,  648,  647,  646,  645,  644,
  815.       643,  642,  641,  640,  639,  638,  637,  636,  635,  634,
  816.       633,  632,  631,  630,  629,  628,  627,  626,  625,  624,
  817.  
  818.       623,  622,  621,  620,  619,  618,  617,  616,  615,  614,
  819.       613,  612,  611,  607,  606,  605,  604,  603,  602,  601,
  820.       600,  599,  598,  597,  596,  595,  594,  593,  592,  591,
  821.       590,  589,  588,  587,  586,  585,  584,  583,  582,  581,
  822.       580,  579,  578,  577,  576,  575,  574,  573,  572,  571,
  823.       570,  569,  568,  567,  564,  563,  562,  561,  560,  559,
  824.       558,  557,  444,  556,  553,  550,  437,  549,  435,  548,
  825.       433,  547,  431,  546,  545,  427,  544,  424,  543,  421,
  826.       542,  418,  541,  415,  540,  412,  539,  538,  408,  537,
  827.       405,  536,  402,  535,  399,  534,  533,  395,  532,  392,
  828.  
  829.       531,  388,  530,  385,  529,  528,  527,  526,  525,  524,
  830.       375,  523,  372,  522,  369,  521,  366,  520,  363,  519,
  831.       360,  518,  357,  517,  354,  516,  351,  515,  348,  514,
  832.       345,  513,  342,  512,  339,  511,  336,  510,  333,  509,
  833.       330,  508,  327,  507,  323,  506,  505,  504,  503,  502,
  834.       316,  500,  312,  497,  496,  491,  490,  489,  488,  487,
  835.       486,  484,  481,  480,  479,  478,  477,  476,  475,  474,
  836.       473,  470,  469,  466,  465,  464,  463,  462,  461,  460,
  837.       459,  458,  457,  454,  289,  261,  452,  451,  450,  449,
  838.       448,  447,  446,  445,  429,  428,  409,  396,  389,  378,
  839.  
  840.       377,  376,  324,  320,  319,  318,  317,  302,  301,  300,
  841.       297,  296,  295,  294,  293,  284,  281,  280,  279,  278,
  842.       277,  276,  275,  274,  273,  271,  270,  269,  268,  267,
  843.       264,  263,  262,  260,  259,  172,  254,  253,  252,  251,
  844.       250,  249,  248,  247,  246,  245,  237,  236,  235,  234,
  845.       231,  230,  227,  226,  225,  224,  223,  222,  221,  220,
  846.       217,  216,  215,  214,  213,  212,  209,  208,  207,  206,
  847.       205,  204,  203,  200,  199,  193,  192,  191,  190,  187,
  848.       186,  185,  156,  155,  149,  148,   39,  127,  126,  125,
  849.       124,  123,  122,  121,  118,   87,   39,   37,  849,    3,
  850.  
  851.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  852.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  853.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  854.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  855.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  856.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  857.       849,  849,  849,  849,  849,  849,  849
  858.     } ;
  859.  
  860. static yyconst flex_int16_t yy_chk[1368] =
  861.     {   0,
  862.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  863.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  864.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  865.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  866.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  867.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  868.         1,    1,    1,    1,    1,    1,    1,    5,   23,    5,
  869.        10,   27,   46,   23,   17,   46,  808,   10,   10,   10,
  870.        10,   10,   10,   10,   16,   17,   16,   29,   17,   27,
  871.        18,  116,   16,   11,   11,   11,   11,   11,   11,   11,
  872.  
  873.        18,   19,  116,   53,   11,   29,   36,   19,   36,   53,
  874.        10,   10,   10,   10,   10,   10,   10,   10,   10,   48,
  875.        48,   10,   10,   10,   10,   10,   10,   10,   10,   10,
  876.        11,   48,   10,   10,   10,   10,   12,   12,   12,   12,
  877.        12,   12,   12,   61,   80,   80,   12,   12,   13,   13,
  878.        13,   13,   13,   13,   13,   99,   61,   99,   13,   13,
  879.        14,   14,   14,   14,   14,   14,   14,   15,   47,   15,
  880.        14,   14,   47,   12,   49,   22,   15,   49,   24,   21,
  881.       274,   21,   15,   22,   15,   13,   21,   24,   22,   21,
  882.        25,   24,   25,   25,   22,  274,  810,   14,   45,   45,
  883.  
  884.        92,   44,   44,   54,   45,   25,   26,   44,   26,   26,
  885.        26,   26,   26,   44,   26,   45,   26,   54,   44,   92,
  886.        44,  811,   26,   26,   54,   26,   41,   43,   43,   43,
  887.        43,   43,   43,   50,   50,   57,  812,   43,   60,   50,
  888.        60,   59,   59,   60,   60,  813,   57,   59,   75,   57,
  889.        50,   60,   57,  140,   75,   59,  816,   84,   59,   63,
  890.        63,   63,   63,   43,  817,  140,   41,   41,   41,   41,
  891.        41,   41,   62,   41,   41,   84,  159,   41,   41,   41,
  892.        41,   41,   41,   41,   41,   41,  159,  118,   41,  118,
  893.        62,   62,   62,   62,   64,   64,   64,   64,   65,   65,
  894.  
  895.        65,   65,   66,   66,   66,   66,   66,   66,  108,  818,
  896.        81,   81,   66,   67,   67,   67,   67,   67,   67,   67,
  897.        81,  111,  108,   68,   67,   68,   68,   68,   68,   68,
  898.        68,  117,  128,  117,  130,  111,  157,  160,   66,  128,
  899.       133,  133,  157,  160,  117,  823,  133,  239,  130,  132,
  900.        67,  132,  132,  132,  132,  132,  132,  133,  136,  136,
  901.       136,  146,  146,  169,  136,  147,  147,  146,  161,  161,
  902.       239,  147,  219,  169,  161,  136,  218,  825,  146,  240,
  903.       244,  161,  147,  162,  162,  161,  163,  163,  218,  162,
  904.       219,  827,  163,  173,  173,  173,  173,  830,  244,  831,
  905.  
  906.       162,  835,  240,  163,  174,  174,  174,  174,  175,  175,
  907.       175,  175,  176,  176,  176,  176,  177,  177,  177,  177,
  908.       178,  178,  178,  178,  179,  179,  179,  179,  181,  181,
  909.       181,  181,  181,  181,  837,  839,  241,  182,  181,  182,
  910.       182,  182,  182,  182,  182,  183,  183,  183,  183,  183,
  911.       183,  184,  184,  184,  184,  184,  184,  185,  186,  241,
  912.       192,  194,  185,  186,  181,  192,  194,  243,  195,  845,
  913.       452,  185,  186,  195,  192,  194,  846,  185,  186,  243,
  914.       185,  186,  195,  192,  194,  196,  452,  197,  199,  198,
  915.       196,  195,  197,  199,  198,  288,  842,  842,  288,  196,
  916.  
  917.       242,  197,  199,  198,  851,  196,  807,  197,  196,  198,
  918.       197,  199,  198,  201,  203,  204,  206,  207,  201,  203,
  919.       204,  206,  207,  242,  806,  804,  803,  201,  203,  204,
  920.       206,  207,  260,  799,  203,  204,  201,  203,  204,  206,
  921.       207,  209,  210,  211,  798,  260,  209,  210,  211,  303,
  922.       303,  303,  303,  212,  213,  209,  210,  211,  212,  213,
  923.       797,  209,  210,  211,  209,  210,  211,  212,  213,  579,
  924.       214,  796,  579,  212,  213,  214,  212,  213,  220,  794,
  925.       221,  223,  224,  220,  214,  221,  223,  224,  792,  790,
  926.       214,  787,  220,  214,  221,  223,  224,  226,  786,  784,
  927.  
  928.       783,  220,  226,  221,  223,  224,  277,  227,  228,  229,
  929.       231,  226,  227,  228,  229,  231,  782,  226,  781,  277,
  930.       226,  227,  228,  229,  231,  780,  779,  227,  228,  229,
  931.       227,  228,  229,  231,  232,  233,  234,  776,  775,  232,
  932.       233,  234,  304,  304,  304,  304,  235,  236,  232,  233,
  933.       234,  235,  236,  773,  232,  233,  234,  232,  233,  234,
  934.       235,  236,  772,  245,  771,  770,  235,  236,  245,  235,
  935.       236,  256,  256,  256,  256,  256,  256,  245,  257,  257,
  936.       257,  257,  257,  257,  258,  258,  245,  272,  272,  769,
  937.       258,  290,  290,  272,  291,  291,  768,  290,  766,  311,
  938.  
  939.       291,  258,  765,  764,  272,  314,  292,  292,  290,  762,
  940.       760,  291,  292,  300,  759,  300,  756,  300,  305,  305,
  941.       305,  305,  311,  292,  306,  306,  306,  306,  314,  322,
  942.       300,  307,  307,  307,  307,  308,  308,  308,  308,  308,
  943.       308,  309,  309,  309,  309,  309,  309,  315,  326,  315,
  944.       329,  332,  322,  335,  338,  341,  344,  347,  350,  353,
  945.       356,  359,  362,  365,  368,  371,  374,  384,  387,  391,
  946.       315,  326,  394,  329,  332,  398,  335,  338,  341,  344,
  947.       347,  350,  353,  356,  359,  362,  365,  368,  371,  374,
  948.       384,  387,  391,  401,  404,  394,  407,  411,  398,  414,
  949.  
  950.       417,  420,  423,  426,  438,  440,  443,  753,  504,  504,
  951.       553,  556,  752,  751,  642,  642,  401,  404,  750,  407,
  952.       411,  738,  414,  417,  420,  423,  426,  438,  440,  443,
  953.       504,  737,  736,  553,  556,  642,  850,  850,  850,  852,
  954.       852,  707,  700,  699,  696,  695,  694,  693,  692,  691,
  955.       690,  689,  688,  687,  685,  682,  681,  680,  679,  678,
  956.       677,  676,  675,  674,  673,  672,  670,  669,  668,  667,
  957.       665,  663,  662,  661,  660,  659,  658,  657,  656,  655,
  958.       654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
  959.       644,  643,  641,  640,  639,  638,  637,  636,  635,  634,
  960.  
  961.       633,  630,  629,  628,  627,  626,  625,  624,  623,  622,
  962.       621,  620,  619,  618,  617,  616,  615,  614,  613,  612,
  963.       610,  609,  608,  607,  606,  605,  604,  603,  602,  601,
  964.       600,  599,  598,  597,  596,  595,  593,  592,  591,  590,
  965.       589,  587,  586,  585,  584,  583,  582,  581,  578,  577,
  966.       575,  574,  573,  572,  569,  568,  567,  566,  565,  564,
  967.       563,  561,  560,  559,  558,  557,  555,  554,  552,  551,
  968.       550,  549,  548,  547,  546,  545,  544,  543,  542,  541,
  969.       540,  539,  538,  537,  536,  535,  534,  533,  532,  531,
  970.       530,  526,  525,  524,  523,  522,  521,  520,  519,  518,
  971.  
  972.       517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
  973.       507,  506,  505,  502,  501,  500,  497,  496,  495,  494,
  974.       493,  492,  490,  488,  487,  486,  484,  483,  482,  481,
  975.       480,  479,  478,  477,  476,  475,  474,  473,  472,  471,
  976.       470,  469,  468,  467,  465,  464,  463,  462,  461,  460,
  977.       459,  456,  455,  454,  451,  450,  449,  448,  447,  446,
  978.       445,  444,  442,  441,  439,  437,  436,  435,  434,  433,
  979.       432,  431,  430,  428,  427,  425,  424,  422,  421,  419,
  980.       418,  416,  415,  413,  412,  410,  409,  408,  406,  405,
  981.       403,  402,  400,  399,  397,  396,  395,  393,  392,  390,
  982.  
  983.       388,  386,  385,  383,  382,  380,  378,  377,  376,  375,
  984.       373,  372,  370,  369,  367,  366,  364,  363,  361,  360,
  985.       358,  357,  355,  354,  352,  351,  349,  348,  346,  345,
  986.       343,  342,  340,  339,  337,  336,  334,  333,  331,  330,
  987.       328,  327,  325,  323,  321,  320,  319,  318,  317,  316,
  988.       313,  312,  310,  302,  301,  299,  298,  297,  296,  295,
  989.       294,  289,  287,  286,  285,  284,  283,  282,  281,  280,
  990.       278,  276,  275,  273,  271,  270,  267,  266,  265,  264,
  991.       263,  262,  261,  259,  255,  254,  253,  252,  251,  250,
  992.       249,  248,  247,  246,  238,  237,  230,  225,  222,  217,
  993.  
  994.       216,  215,  193,  191,  190,  189,  187,  172,  171,  170,
  995.       168,  167,  166,  165,  164,  158,  156,  155,  154,  153,
  996.       152,  151,  150,  149,  148,  145,  144,  143,  142,  141,
  997.       139,  138,  137,  135,  134,  131,  129,  127,  126,  125,
  998.       124,  123,  122,  121,  120,  119,  115,  114,  113,  112,
  999.       110,  109,  107,  106,  105,  104,  103,  102,  101,  100,
  1000.        98,   97,   96,   95,   94,   93,   91,   90,   89,   88,
  1001.        87,   86,   85,   83,   82,   79,   78,   77,   76,   74,
  1002.        73,   72,   56,   55,   52,   51,   38,   37,   35,   34,
  1003.        33,   32,   31,   30,   28,   20,    8,    7,    3,  849,
  1004.  
  1005.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  1006.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  1007.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  1008.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  1009.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  1010.       849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
  1011.       849,  849,  849,  849,  849,  849,  849
  1012.     } ;
  1013.  
  1014. /* The intent behind this definition is that it'll catch
  1015.  * any uses of REJECT which flex missed.
  1016.  */
  1017. #define REJECT reject_used_but_not_detected
  1018. #define yymore() yymore_used_but_not_detected
  1019. #define YY_MORE_ADJ 0
  1020. #define YY_RESTORE_YY_MORE_OFFSET
  1021. #line 1 "program_lexer.l"
  1022. #line 2 "program_lexer.l"
  1023. /*
  1024.  * Copyright © 2009 Intel Corporation
  1025.  *
  1026.  * Permission is hereby granted, free of charge, to any person obtaining a
  1027.  * copy of this software and associated documentation files (the "Software"),
  1028.  * to deal in the Software without restriction, including without limitation
  1029.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  1030.  * and/or sell copies of the Software, and to permit persons to whom the
  1031.  * Software is furnished to do so, subject to the following conditions:
  1032.  *
  1033.  * The above copyright notice and this permission notice (including the next
  1034.  * paragraph) shall be included in all copies or substantial portions of the
  1035.  * Software.
  1036.  *
  1037.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  1038.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  1039.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  1040.  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  1041.  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  1042.  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  1043.  * DEALINGS IN THE SOFTWARE.
  1044.  */
  1045. #include "main/glheader.h"
  1046. #include "main/imports.h"
  1047. #include "program/prog_instruction.h"
  1048. #include "program/prog_statevars.h"
  1049. #include "program/symbol_table.h"
  1050. #include "program/program_parser.h"
  1051. #include "program/program_parse.tab.h"
  1052.  
  1053. #define require_ARB_vp (yyextra->mode == ARB_vertex)
  1054. #define require_ARB_fp (yyextra->mode == ARB_fragment)
  1055. #define require_NV_fp  (yyextra->option.NV_fragment)
  1056. #define require_shadow (yyextra->option.Shadow)
  1057. #define require_rect   (yyextra->option.TexRect)
  1058. #define require_texarray        (yyextra->option.TexArray)
  1059.  
  1060. #ifndef HAVE_UNISTD_H
  1061. #define YY_NO_UNISTD_H
  1062. #endif
  1063.  
  1064. #define return_token_or_IDENTIFIER(condition, token)    \
  1065.    do {                                                 \
  1066.       if (condition) {                                  \
  1067.          return token;                                  \
  1068.       } else {                                          \
  1069.          return handle_ident(yyextra, yytext, yylval);  \
  1070.       }                                                 \
  1071.    } while (0)
  1072.  
  1073. #define return_token_or_DOT(condition, token)           \
  1074.    do {                                                 \
  1075.       if (condition) {                                  \
  1076.          return token;                                  \
  1077.       } else {                                          \
  1078.          yyless(1);                                     \
  1079.          return DOT;                                    \
  1080.       }                                                 \
  1081.    } while (0)
  1082.  
  1083.  
  1084. #define return_opcode(condition, token, opcode, len)    \
  1085.    do {                                                 \
  1086.       if (condition &&                                  \
  1087.           _mesa_parse_instruction_suffix(yyextra,       \
  1088.                                          yytext + len,  \
  1089.                                          & yylval->temp_inst)) {        \
  1090.          yylval->temp_inst.Opcode = OPCODE_ ## opcode;  \
  1091.          return token;                                  \
  1092.       } else {                                          \
  1093.          return handle_ident(yyextra, yytext, yylval);  \
  1094.       }                                                 \
  1095.    } while (0)
  1096.  
  1097. #define SWIZZLE_INVAL  MAKE_SWIZZLE4(SWIZZLE_NIL, SWIZZLE_NIL, \
  1098.                                      SWIZZLE_NIL, SWIZZLE_NIL)
  1099.  
  1100. static unsigned
  1101. mask_from_char(char c)
  1102. {
  1103.    switch (c) {
  1104.    case 'x':
  1105.    case 'r':
  1106.       return WRITEMASK_X;
  1107.    case 'y':
  1108.    case 'g':
  1109.       return WRITEMASK_Y;
  1110.    case 'z':
  1111.    case 'b':
  1112.       return WRITEMASK_Z;
  1113.    case 'w':
  1114.    case 'a':
  1115.       return WRITEMASK_W;
  1116.    }
  1117.  
  1118.    return 0;
  1119. }
  1120.  
  1121. static unsigned
  1122. swiz_from_char(char c)
  1123. {
  1124.    switch (c) {
  1125.    case 'x':
  1126.    case 'r':
  1127.       return SWIZZLE_X;
  1128.    case 'y':
  1129.    case 'g':
  1130.       return SWIZZLE_Y;
  1131.    case 'z':
  1132.    case 'b':
  1133.       return SWIZZLE_Z;
  1134.    case 'w':
  1135.    case 'a':
  1136.       return SWIZZLE_W;
  1137.    }
  1138.  
  1139.    return 0;
  1140. }
  1141.  
  1142. static int
  1143. handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval)
  1144. {
  1145.    lval->string = strdup(text);
  1146.  
  1147.    return (_mesa_symbol_table_find_symbol(state->st, 0, text) == NULL)
  1148.       ? IDENTIFIER : USED_IDENTIFIER;
  1149. }
  1150.  
  1151. #define YY_USER_ACTION                                                  \
  1152.    do {                                                                 \
  1153.       yylloc->first_column = yylloc->last_column;                       \
  1154.       yylloc->last_column += yyleng;                                    \
  1155.       if ((yylloc->first_line == 1)                                     \
  1156.           && (yylloc->first_column == 1)) {                             \
  1157.          yylloc->position = 1;                                          \
  1158.       } else {                                                          \
  1159.          yylloc->position += yylloc->last_column - yylloc->first_column; \
  1160.       }                                                                 \
  1161.    } while(0);
  1162.  
  1163. #define YY_NO_INPUT
  1164.  
  1165. /* Yes, this is intentionally doing nothing. We have this line of code
  1166. here only to avoid the compiler complaining about an unput function
  1167. that is defined, but never called. */
  1168. #define YY_USER_INIT while (0) { unput(0); }
  1169.  
  1170. #define YY_EXTRA_TYPE struct asm_parser_state *
  1171.  
  1172. /* Flex defines a couple of functions with no declarations nor the
  1173. static keyword. Declare them here to avoid a compiler warning. */
  1174. int _mesa_program_lexer_get_column  (yyscan_t yyscanner);
  1175. void _mesa_program_lexer_set_column (int  column_no , yyscan_t yyscanner);
  1176.  
  1177. #line 1178 "lex.yy.c"
  1178.  
  1179. #define INITIAL 0
  1180.  
  1181. #ifndef YY_NO_UNISTD_H
  1182. /* Special case for "unistd.h", since it is non-ANSI. We include it way
  1183.  * down here because we want the user's section 1 to have been scanned first.
  1184.  * The user has a chance to override it with an option.
  1185.  */
  1186. #include <unistd.h>
  1187. #endif
  1188.  
  1189. #ifndef YY_EXTRA_TYPE
  1190. #define YY_EXTRA_TYPE void *
  1191. #endif
  1192.  
  1193. /* Holds the entire state of the reentrant scanner. */
  1194. struct yyguts_t
  1195.     {
  1196.  
  1197.     /* User-defined. Not touched by flex. */
  1198.     YY_EXTRA_TYPE yyextra_r;
  1199.  
  1200.     /* The rest are the same as the globals declared in the non-reentrant scanner. */
  1201.     FILE *yyin_r, *yyout_r;
  1202.     size_t yy_buffer_stack_top; /**< index of top of stack. */
  1203.     size_t yy_buffer_stack_max; /**< capacity of stack. */
  1204.     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
  1205.     char yy_hold_char;
  1206.     int yy_n_chars;
  1207.     int yyleng_r;
  1208.     char *yy_c_buf_p;
  1209.     int yy_init;
  1210.     int yy_start;
  1211.     int yy_did_buffer_switch_on_eof;
  1212.     int yy_start_stack_ptr;
  1213.     int yy_start_stack_depth;
  1214.     int *yy_start_stack;
  1215.     yy_state_type yy_last_accepting_state;
  1216.     char* yy_last_accepting_cpos;
  1217.  
  1218.     int yylineno_r;
  1219.     int yy_flex_debug_r;
  1220.  
  1221.     char *yytext_r;
  1222.     int yy_more_flag;
  1223.     int yy_more_len;
  1224.  
  1225.     YYSTYPE * yylval_r;
  1226.  
  1227.     YYLTYPE * yylloc_r;
  1228.  
  1229.     }; /* end struct yyguts_t */
  1230.  
  1231. static int yy_init_globals (yyscan_t yyscanner );
  1232.  
  1233.     /* This must go here because YYSTYPE and YYLTYPE are included
  1234.      * from bison output in section 1.*/
  1235.     #    define yylval yyg->yylval_r
  1236.    
  1237.     #    define yylloc yyg->yylloc_r
  1238.    
  1239. int _mesa_program_lexer_lex_init (yyscan_t* scanner);
  1240.  
  1241. int _mesa_program_lexer_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
  1242.  
  1243. /* Accessor methods to globals.
  1244.    These are made visible to non-reentrant scanners for convenience. */
  1245.  
  1246. int _mesa_program_lexer_lex_destroy (yyscan_t yyscanner );
  1247.  
  1248. int _mesa_program_lexer_get_debug (yyscan_t yyscanner );
  1249.  
  1250. void _mesa_program_lexer_set_debug (int debug_flag ,yyscan_t yyscanner );
  1251.  
  1252. YY_EXTRA_TYPE _mesa_program_lexer_get_extra (yyscan_t yyscanner );
  1253.  
  1254. void _mesa_program_lexer_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
  1255.  
  1256. FILE *_mesa_program_lexer_get_in (yyscan_t yyscanner );
  1257.  
  1258. void _mesa_program_lexer_set_in  (FILE * in_str ,yyscan_t yyscanner );
  1259.  
  1260. FILE *_mesa_program_lexer_get_out (yyscan_t yyscanner );
  1261.  
  1262. void _mesa_program_lexer_set_out  (FILE * out_str ,yyscan_t yyscanner );
  1263.  
  1264. int _mesa_program_lexer_get_leng (yyscan_t yyscanner );
  1265.  
  1266. char *_mesa_program_lexer_get_text (yyscan_t yyscanner );
  1267.  
  1268. int _mesa_program_lexer_get_lineno (yyscan_t yyscanner );
  1269.  
  1270. void _mesa_program_lexer_set_lineno (int line_number ,yyscan_t yyscanner );
  1271.  
  1272. int _mesa_program_lexer_get_column  (yyscan_t yyscanner );
  1273.  
  1274. void _mesa_program_lexer_set_column (int column_no ,yyscan_t yyscanner );
  1275.  
  1276. YYSTYPE * _mesa_program_lexer_get_lval (yyscan_t yyscanner );
  1277.  
  1278. void _mesa_program_lexer_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
  1279.  
  1280.        YYLTYPE *_mesa_program_lexer_get_lloc (yyscan_t yyscanner );
  1281.    
  1282.         void _mesa_program_lexer_set_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
  1283.    
  1284. /* Macros after this point can all be overridden by user definitions in
  1285.  * section 1.
  1286.  */
  1287.  
  1288. #ifndef YY_SKIP_YYWRAP
  1289. #ifdef __cplusplus
  1290. extern "C" int _mesa_program_lexer_wrap (yyscan_t yyscanner );
  1291. #else
  1292. extern int _mesa_program_lexer_wrap (yyscan_t yyscanner );
  1293. #endif
  1294. #endif
  1295.  
  1296.     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
  1297.    
  1298. #ifndef yytext_ptr
  1299. static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
  1300. #endif
  1301.  
  1302. #ifdef YY_NEED_STRLEN
  1303. static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
  1304. #endif
  1305.  
  1306. #ifndef YY_NO_INPUT
  1307.  
  1308. #ifdef __cplusplus
  1309. static int yyinput (yyscan_t yyscanner );
  1310. #else
  1311. static int input (yyscan_t yyscanner );
  1312. #endif
  1313.  
  1314. #endif
  1315.  
  1316. /* Amount of stuff to slurp up with each read. */
  1317. #ifndef YY_READ_BUF_SIZE
  1318. #ifdef __ia64__
  1319. /* On IA-64, the buffer size is 16k, not 8k */
  1320. #define YY_READ_BUF_SIZE 16384
  1321. #else
  1322. #define YY_READ_BUF_SIZE 8192
  1323. #endif /* __ia64__ */
  1324. #endif
  1325.  
  1326. /* Copy whatever the last rule matched to the standard output. */
  1327. #ifndef ECHO
  1328. /* This used to be an fputs(), but since the string might contain NUL's,
  1329.  * we now use fwrite().
  1330.  */
  1331. #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
  1332. #endif
  1333.  
  1334. /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
  1335.  * is returned in "result".
  1336.  */
  1337. #ifndef YY_INPUT
  1338. #define YY_INPUT(buf,result,max_size) \
  1339.         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
  1340.                 { \
  1341.                 int c = '*'; \
  1342.                 size_t n; \
  1343.                 for ( n = 0; n < max_size && \
  1344.                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
  1345.                         buf[n] = (char) c; \
  1346.                 if ( c == '\n' ) \
  1347.                         buf[n++] = (char) c; \
  1348.                 if ( c == EOF && ferror( yyin ) ) \
  1349.                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
  1350.                 result = n; \
  1351.                 } \
  1352.         else \
  1353.                 { \
  1354.                 errno=0; \
  1355.                 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
  1356.                         { \
  1357.                         if( errno != EINTR) \
  1358.                                 { \
  1359.                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
  1360.                                 break; \
  1361.                                 } \
  1362.                         errno=0; \
  1363.                         clearerr(yyin); \
  1364.                         } \
  1365.                 }\
  1366. \
  1367.  
  1368. #endif
  1369.  
  1370. /* No semi-colon after return; correct usage is to write "yyterminate();" -
  1371.  * we don't want an extra ';' after the "return" because that will cause
  1372.  * some compilers to complain about unreachable statements.
  1373.  */
  1374. #ifndef yyterminate
  1375. #define yyterminate() return YY_NULL
  1376. #endif
  1377.  
  1378. /* Number of entries by which start-condition stack grows. */
  1379. #ifndef YY_START_STACK_INCR
  1380. #define YY_START_STACK_INCR 25
  1381. #endif
  1382.  
  1383. /* Report a fatal error. */
  1384. #ifndef YY_FATAL_ERROR
  1385. #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
  1386. #endif
  1387.  
  1388. /* end tables serialization structures and prototypes */
  1389.  
  1390. /* Default declaration of generated scanner - a define so the user can
  1391.  * easily add parameters.
  1392.  */
  1393. #ifndef YY_DECL
  1394. #define YY_DECL_IS_OURS 1
  1395.  
  1396. extern int _mesa_program_lexer_lex \
  1397.                (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
  1398.  
  1399. #define YY_DECL int _mesa_program_lexer_lex \
  1400.                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
  1401. #endif /* !YY_DECL */
  1402.  
  1403. /* Code executed at the beginning of each rule, after yytext and yyleng
  1404.  * have been set up.
  1405.  */
  1406. #ifndef YY_USER_ACTION
  1407. #define YY_USER_ACTION
  1408. #endif
  1409.  
  1410. /* Code executed at the end of each rule. */
  1411. #ifndef YY_BREAK
  1412. #define YY_BREAK break;
  1413. #endif
  1414.  
  1415. #define YY_RULE_SETUP \
  1416.         YY_USER_ACTION
  1417.  
  1418. /** The main scanner function which does all the work.
  1419.  */
  1420. YY_DECL
  1421. {
  1422.         register yy_state_type yy_current_state;
  1423.         register char *yy_cp, *yy_bp;
  1424.         register int yy_act;
  1425.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1426.  
  1427. #line 170 "program_lexer.l"
  1428.  
  1429.  
  1430. #line 1431 "lex.yy.c"
  1431.  
  1432.     yylval = yylval_param;
  1433.  
  1434.     yylloc = yylloc_param;
  1435.  
  1436.         if ( !yyg->yy_init )
  1437.                 {
  1438.                 yyg->yy_init = 1;
  1439.  
  1440. #ifdef YY_USER_INIT
  1441.                 YY_USER_INIT;
  1442. #endif
  1443.  
  1444.                 if ( ! yyg->yy_start )
  1445.                         yyg->yy_start = 1;      /* first start state */
  1446.  
  1447.                 if ( ! yyin )
  1448.                         yyin = stdin;
  1449.  
  1450.                 if ( ! yyout )
  1451.                         yyout = stdout;
  1452.  
  1453.                 if ( ! YY_CURRENT_BUFFER ) {
  1454.                         _mesa_program_lexer_ensure_buffer_stack (yyscanner);
  1455.                         YY_CURRENT_BUFFER_LVALUE =
  1456.                                 _mesa_program_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
  1457.                 }
  1458.  
  1459.                 _mesa_program_lexer__load_buffer_state(yyscanner );
  1460.                 }
  1461.  
  1462.         while ( 1 )             /* loops until end-of-file is reached */
  1463.                 {
  1464.                 yy_cp = yyg->yy_c_buf_p;
  1465.  
  1466.                 /* Support of yytext. */
  1467.                 *yy_cp = yyg->yy_hold_char;
  1468.  
  1469.                 /* yy_bp points to the position in yy_ch_buf of the start of
  1470.                  * the current run.
  1471.                  */
  1472.                 yy_bp = yy_cp;
  1473.  
  1474.                 yy_current_state = yyg->yy_start;
  1475. yy_match:
  1476.                 do
  1477.                         {
  1478.                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
  1479.                         if ( yy_accept[yy_current_state] )
  1480.                                 {
  1481.                                 yyg->yy_last_accepting_state = yy_current_state;
  1482.                                 yyg->yy_last_accepting_cpos = yy_cp;
  1483.                                 }
  1484.                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  1485.                                 {
  1486.                                 yy_current_state = (int) yy_def[yy_current_state];
  1487.                                 if ( yy_current_state >= 850 )
  1488.                                         yy_c = yy_meta[(unsigned int) yy_c];
  1489.                                 }
  1490.                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  1491.                         ++yy_cp;
  1492.                         }
  1493.                 while ( yy_base[yy_current_state] != 1300 );
  1494.  
  1495. yy_find_action:
  1496.                 yy_act = yy_accept[yy_current_state];
  1497.                 if ( yy_act == 0 )
  1498.                         { /* have to back up */
  1499.                         yy_cp = yyg->yy_last_accepting_cpos;
  1500.                         yy_current_state = yyg->yy_last_accepting_state;
  1501.                         yy_act = yy_accept[yy_current_state];
  1502.                         }
  1503.  
  1504.                 YY_DO_BEFORE_ACTION;
  1505.  
  1506. do_action:      /* This label is used only to access EOF actions. */
  1507.  
  1508.                 switch ( yy_act )
  1509.         { /* beginning of action switch */
  1510.                         case 0: /* must back up */
  1511.                         /* undo the effects of YY_DO_BEFORE_ACTION */
  1512.                         *yy_cp = yyg->yy_hold_char;
  1513.                         yy_cp = yyg->yy_last_accepting_cpos;
  1514.                         yy_current_state = yyg->yy_last_accepting_state;
  1515.                         goto yy_find_action;
  1516.  
  1517. case 1:
  1518. YY_RULE_SETUP
  1519. #line 172 "program_lexer.l"
  1520. { return ARBvp_10; }
  1521.         YY_BREAK
  1522. case 2:
  1523. YY_RULE_SETUP
  1524. #line 173 "program_lexer.l"
  1525. { return ARBfp_10; }
  1526.         YY_BREAK
  1527. case 3:
  1528. YY_RULE_SETUP
  1529. #line 174 "program_lexer.l"
  1530. {
  1531.    yylval->integer = at_address;
  1532.    return_token_or_IDENTIFIER(require_ARB_vp, ADDRESS);
  1533. }
  1534.         YY_BREAK
  1535. case 4:
  1536. YY_RULE_SETUP
  1537. #line 178 "program_lexer.l"
  1538. { return ALIAS; }
  1539.         YY_BREAK
  1540. case 5:
  1541. YY_RULE_SETUP
  1542. #line 179 "program_lexer.l"
  1543. { return ATTRIB; }
  1544.         YY_BREAK
  1545. case 6:
  1546. YY_RULE_SETUP
  1547. #line 180 "program_lexer.l"
  1548. { return END; }
  1549.         YY_BREAK
  1550. case 7:
  1551. YY_RULE_SETUP
  1552. #line 181 "program_lexer.l"
  1553. { return OPTION; }
  1554.         YY_BREAK
  1555. case 8:
  1556. YY_RULE_SETUP
  1557. #line 182 "program_lexer.l"
  1558. { return OUTPUT; }
  1559.         YY_BREAK
  1560. case 9:
  1561. YY_RULE_SETUP
  1562. #line 183 "program_lexer.l"
  1563. { return PARAM; }
  1564.         YY_BREAK
  1565. case 10:
  1566. YY_RULE_SETUP
  1567. #line 184 "program_lexer.l"
  1568. { yylval->integer = at_temp; return TEMP; }
  1569.         YY_BREAK
  1570. case 11:
  1571. YY_RULE_SETUP
  1572. #line 186 "program_lexer.l"
  1573. { return_opcode(             1, VECTOR_OP, ABS, 3); }
  1574.         YY_BREAK
  1575. case 12:
  1576. YY_RULE_SETUP
  1577. #line 187 "program_lexer.l"
  1578. { return_opcode(             1, BIN_OP, ADD, 3); }
  1579.         YY_BREAK
  1580. case 13:
  1581. YY_RULE_SETUP
  1582. #line 188 "program_lexer.l"
  1583. { return_opcode(require_ARB_vp, ARL, ARL, 3); }
  1584.         YY_BREAK
  1585. case 14:
  1586. YY_RULE_SETUP
  1587. #line 190 "program_lexer.l"
  1588. { return_opcode(require_ARB_fp, TRI_OP, CMP, 3); }
  1589.         YY_BREAK
  1590. case 15:
  1591. YY_RULE_SETUP
  1592. #line 191 "program_lexer.l"
  1593. { return_opcode(require_ARB_fp, SCALAR_OP, COS, 3); }
  1594.         YY_BREAK
  1595. case 16:
  1596. YY_RULE_SETUP
  1597. #line 193 "program_lexer.l"
  1598. { return_opcode(require_NV_fp,  VECTOR_OP, DDX, 3); }
  1599.         YY_BREAK
  1600. case 17:
  1601. YY_RULE_SETUP
  1602. #line 194 "program_lexer.l"
  1603. { return_opcode(require_NV_fp,  VECTOR_OP, DDY, 3); }
  1604.         YY_BREAK
  1605. case 18:
  1606. YY_RULE_SETUP
  1607. #line 195 "program_lexer.l"
  1608. { return_opcode(             1, BIN_OP, DP3, 3); }
  1609.         YY_BREAK
  1610. case 19:
  1611. YY_RULE_SETUP
  1612. #line 196 "program_lexer.l"
  1613. { return_opcode(             1, BIN_OP, DP4, 3); }
  1614.         YY_BREAK
  1615. case 20:
  1616. YY_RULE_SETUP
  1617. #line 197 "program_lexer.l"
  1618. { return_opcode(             1, BIN_OP, DPH, 3); }
  1619.         YY_BREAK
  1620. case 21:
  1621. YY_RULE_SETUP
  1622. #line 198 "program_lexer.l"
  1623. { return_opcode(             1, BIN_OP, DST, 3); }
  1624.         YY_BREAK
  1625. case 22:
  1626. YY_RULE_SETUP
  1627. #line 200 "program_lexer.l"
  1628. { return_opcode(             1, SCALAR_OP, EX2, 3); }
  1629.         YY_BREAK
  1630. case 23:
  1631. YY_RULE_SETUP
  1632. #line 201 "program_lexer.l"
  1633. { return_opcode(require_ARB_vp, SCALAR_OP, EXP, 3); }
  1634.         YY_BREAK
  1635. case 24:
  1636. YY_RULE_SETUP
  1637. #line 203 "program_lexer.l"
  1638. { return_opcode(             1, VECTOR_OP, FLR, 3); }
  1639.         YY_BREAK
  1640. case 25:
  1641. YY_RULE_SETUP
  1642. #line 204 "program_lexer.l"
  1643. { return_opcode(             1, VECTOR_OP, FRC, 3); }
  1644.         YY_BREAK
  1645. case 26:
  1646. YY_RULE_SETUP
  1647. #line 206 "program_lexer.l"
  1648. { return_opcode(require_ARB_fp, KIL, KIL, 3); }
  1649.         YY_BREAK
  1650. case 27:
  1651. YY_RULE_SETUP
  1652. #line 208 "program_lexer.l"
  1653. { return_opcode(             1, VECTOR_OP, LIT, 3); }
  1654.         YY_BREAK
  1655. case 28:
  1656. YY_RULE_SETUP
  1657. #line 209 "program_lexer.l"
  1658. { return_opcode(             1, SCALAR_OP, LG2, 3); }
  1659.         YY_BREAK
  1660. case 29:
  1661. YY_RULE_SETUP
  1662. #line 210 "program_lexer.l"
  1663. { return_opcode(require_ARB_vp, SCALAR_OP, LOG, 3); }
  1664.         YY_BREAK
  1665. case 30:
  1666. YY_RULE_SETUP
  1667. #line 211 "program_lexer.l"
  1668. { return_opcode(require_ARB_fp, TRI_OP, LRP, 3); }
  1669.         YY_BREAK
  1670. case 31:
  1671. YY_RULE_SETUP
  1672. #line 213 "program_lexer.l"
  1673. { return_opcode(             1, TRI_OP, MAD, 3); }
  1674.         YY_BREAK
  1675. case 32:
  1676. YY_RULE_SETUP
  1677. #line 214 "program_lexer.l"
  1678. { return_opcode(             1, BIN_OP, MAX, 3); }
  1679.         YY_BREAK
  1680. case 33:
  1681. YY_RULE_SETUP
  1682. #line 215 "program_lexer.l"
  1683. { return_opcode(             1, BIN_OP, MIN, 3); }
  1684.         YY_BREAK
  1685. case 34:
  1686. YY_RULE_SETUP
  1687. #line 216 "program_lexer.l"
  1688. { return_opcode(             1, VECTOR_OP, MOV, 3); }
  1689.         YY_BREAK
  1690. case 35:
  1691. YY_RULE_SETUP
  1692. #line 217 "program_lexer.l"
  1693. { return_opcode(             1, BIN_OP, MUL, 3); }
  1694.         YY_BREAK
  1695. case 36:
  1696. YY_RULE_SETUP
  1697. #line 219 "program_lexer.l"
  1698. { return_opcode(require_NV_fp,  VECTOR_OP, PK2H, 4); }
  1699.         YY_BREAK
  1700. case 37:
  1701. YY_RULE_SETUP
  1702. #line 220 "program_lexer.l"
  1703. { return_opcode(require_NV_fp,  VECTOR_OP, PK2US, 5); }
  1704.         YY_BREAK
  1705. case 38:
  1706. YY_RULE_SETUP
  1707. #line 221 "program_lexer.l"
  1708. { return_opcode(require_NV_fp,  VECTOR_OP, PK4B, 4); }
  1709.         YY_BREAK
  1710. case 39:
  1711. YY_RULE_SETUP
  1712. #line 222 "program_lexer.l"
  1713. { return_opcode(require_NV_fp,  VECTOR_OP, PK4UB, 5); }
  1714.         YY_BREAK
  1715. case 40:
  1716. YY_RULE_SETUP
  1717. #line 223 "program_lexer.l"
  1718. { return_opcode(             1, BINSC_OP, POW, 3); }
  1719.         YY_BREAK
  1720. case 41:
  1721. YY_RULE_SETUP
  1722. #line 225 "program_lexer.l"
  1723. { return_opcode(             1, SCALAR_OP, RCP, 3); }
  1724.         YY_BREAK
  1725. case 42:
  1726. YY_RULE_SETUP
  1727. #line 226 "program_lexer.l"
  1728. { return_opcode(require_NV_fp,  BIN_OP,    RFL, 3); }
  1729.         YY_BREAK
  1730. case 43:
  1731. YY_RULE_SETUP
  1732. #line 227 "program_lexer.l"
  1733. { return_opcode(             1, SCALAR_OP, RSQ, 3); }
  1734.         YY_BREAK
  1735. case 44:
  1736. YY_RULE_SETUP
  1737. #line 229 "program_lexer.l"
  1738. { return_opcode(require_ARB_fp, SCALAR_OP, SCS, 3); }
  1739.         YY_BREAK
  1740. case 45:
  1741. YY_RULE_SETUP
  1742. #line 230 "program_lexer.l"
  1743. { return_opcode(require_NV_fp,  BIN_OP, SEQ, 3); }
  1744.         YY_BREAK
  1745. case 46:
  1746. YY_RULE_SETUP
  1747. #line 231 "program_lexer.l"
  1748. { return_opcode(require_NV_fp,  BIN_OP, SFL, 3); }
  1749.         YY_BREAK
  1750. case 47:
  1751. YY_RULE_SETUP
  1752. #line 232 "program_lexer.l"
  1753. { return_opcode(             1, BIN_OP, SGE, 3); }
  1754.         YY_BREAK
  1755. case 48:
  1756. YY_RULE_SETUP
  1757. #line 233 "program_lexer.l"
  1758. { return_opcode(require_NV_fp,  BIN_OP, SGT, 3); }
  1759.         YY_BREAK
  1760. case 49:
  1761. YY_RULE_SETUP
  1762. #line 234 "program_lexer.l"
  1763. { return_opcode(require_ARB_fp, SCALAR_OP, SIN, 3); }
  1764.         YY_BREAK
  1765. case 50:
  1766. YY_RULE_SETUP
  1767. #line 235 "program_lexer.l"
  1768. { return_opcode(require_NV_fp,  BIN_OP, SLE, 3); }
  1769.         YY_BREAK
  1770. case 51:
  1771. YY_RULE_SETUP
  1772. #line 236 "program_lexer.l"
  1773. { return_opcode(             1, BIN_OP, SLT, 3); }
  1774.         YY_BREAK
  1775. case 52:
  1776. YY_RULE_SETUP
  1777. #line 237 "program_lexer.l"
  1778. { return_opcode(require_NV_fp,  BIN_OP, SNE, 3); }
  1779.         YY_BREAK
  1780. case 53:
  1781. YY_RULE_SETUP
  1782. #line 238 "program_lexer.l"
  1783. { return_opcode(require_NV_fp,  BIN_OP, STR, 3); }
  1784.         YY_BREAK
  1785. case 54:
  1786. YY_RULE_SETUP
  1787. #line 239 "program_lexer.l"
  1788. { return_opcode(             1, BIN_OP, SUB, 3); }
  1789.         YY_BREAK
  1790. case 55:
  1791. YY_RULE_SETUP
  1792. #line 240 "program_lexer.l"
  1793. { return_opcode(             1, SWZ, SWZ, 3); }
  1794.         YY_BREAK
  1795. case 56:
  1796. YY_RULE_SETUP
  1797. #line 242 "program_lexer.l"
  1798. { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, 3); }
  1799.         YY_BREAK
  1800. case 57:
  1801. YY_RULE_SETUP
  1802. #line 243 "program_lexer.l"
  1803. { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, 3); }
  1804.         YY_BREAK
  1805. case 58:
  1806. YY_RULE_SETUP
  1807. #line 244 "program_lexer.l"
  1808. { return_opcode(require_NV_fp,  TXD_OP, TXD, 3); }
  1809.         YY_BREAK
  1810. case 59:
  1811. YY_RULE_SETUP
  1812. #line 245 "program_lexer.l"
  1813. { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, 3); }
  1814.         YY_BREAK
  1815. case 60:
  1816. YY_RULE_SETUP
  1817. #line 247 "program_lexer.l"
  1818. { return_opcode(require_NV_fp,  SCALAR_OP, UP2H, 4); }
  1819.         YY_BREAK
  1820. case 61:
  1821. YY_RULE_SETUP
  1822. #line 248 "program_lexer.l"
  1823. { return_opcode(require_NV_fp,  SCALAR_OP, UP2US, 5); }
  1824.         YY_BREAK
  1825. case 62:
  1826. YY_RULE_SETUP
  1827. #line 249 "program_lexer.l"
  1828. { return_opcode(require_NV_fp,  SCALAR_OP, UP4B, 4); }
  1829.         YY_BREAK
  1830. case 63:
  1831. YY_RULE_SETUP
  1832. #line 250 "program_lexer.l"
  1833. { return_opcode(require_NV_fp,  SCALAR_OP, UP4UB, 5); }
  1834.         YY_BREAK
  1835. case 64:
  1836. YY_RULE_SETUP
  1837. #line 252 "program_lexer.l"
  1838. { return_opcode(require_NV_fp,  TRI_OP, X2D, 3); }
  1839.         YY_BREAK
  1840. case 65:
  1841. YY_RULE_SETUP
  1842. #line 253 "program_lexer.l"
  1843. { return_opcode(             1, BIN_OP, XPD, 3); }
  1844.         YY_BREAK
  1845. case 66:
  1846. YY_RULE_SETUP
  1847. #line 255 "program_lexer.l"
  1848. { return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); }
  1849.         YY_BREAK
  1850. case 67:
  1851. YY_RULE_SETUP
  1852. #line 256 "program_lexer.l"
  1853. { return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); }
  1854.         YY_BREAK
  1855. case 68:
  1856. YY_RULE_SETUP
  1857. #line 257 "program_lexer.l"
  1858. { return PROGRAM; }
  1859.         YY_BREAK
  1860. case 69:
  1861. YY_RULE_SETUP
  1862. #line 258 "program_lexer.l"
  1863. { return STATE; }
  1864.         YY_BREAK
  1865. case 70:
  1866. YY_RULE_SETUP
  1867. #line 259 "program_lexer.l"
  1868. { return RESULT; }
  1869.         YY_BREAK
  1870. case 71:
  1871. YY_RULE_SETUP
  1872. #line 261 "program_lexer.l"
  1873. { return AMBIENT; }
  1874.         YY_BREAK
  1875. case 72:
  1876. YY_RULE_SETUP
  1877. #line 262 "program_lexer.l"
  1878. { return ATTENUATION; }
  1879.         YY_BREAK
  1880. case 73:
  1881. YY_RULE_SETUP
  1882. #line 263 "program_lexer.l"
  1883. { return BACK; }
  1884.         YY_BREAK
  1885. case 74:
  1886. YY_RULE_SETUP
  1887. #line 264 "program_lexer.l"
  1888. { return_token_or_DOT(require_ARB_vp, CLIP); }
  1889.         YY_BREAK
  1890. case 75:
  1891. YY_RULE_SETUP
  1892. #line 265 "program_lexer.l"
  1893. { return COLOR; }
  1894.         YY_BREAK
  1895. case 76:
  1896. YY_RULE_SETUP
  1897. #line 266 "program_lexer.l"
  1898. { return_token_or_DOT(require_ARB_fp, DEPTH); }
  1899.         YY_BREAK
  1900. case 77:
  1901. YY_RULE_SETUP
  1902. #line 267 "program_lexer.l"
  1903. { return DIFFUSE; }
  1904.         YY_BREAK
  1905. case 78:
  1906. YY_RULE_SETUP
  1907. #line 268 "program_lexer.l"
  1908. { return DIRECTION; }
  1909.         YY_BREAK
  1910. case 79:
  1911. YY_RULE_SETUP
  1912. #line 269 "program_lexer.l"
  1913. { return EMISSION; }
  1914.         YY_BREAK
  1915. case 80:
  1916. YY_RULE_SETUP
  1917. #line 270 "program_lexer.l"
  1918. { return ENV; }
  1919.         YY_BREAK
  1920. case 81:
  1921. YY_RULE_SETUP
  1922. #line 271 "program_lexer.l"
  1923. { return EYE; }
  1924.         YY_BREAK
  1925. case 82:
  1926. YY_RULE_SETUP
  1927. #line 272 "program_lexer.l"
  1928. { return FOGCOORD; }
  1929.         YY_BREAK
  1930. case 83:
  1931. YY_RULE_SETUP
  1932. #line 273 "program_lexer.l"
  1933. { return FOG; }
  1934.         YY_BREAK
  1935. case 84:
  1936. YY_RULE_SETUP
  1937. #line 274 "program_lexer.l"
  1938. { return FRONT; }
  1939.         YY_BREAK
  1940. case 85:
  1941. YY_RULE_SETUP
  1942. #line 275 "program_lexer.l"
  1943. { return HALF; }
  1944.         YY_BREAK
  1945. case 86:
  1946. YY_RULE_SETUP
  1947. #line 276 "program_lexer.l"
  1948. { return INVERSE; }
  1949.         YY_BREAK
  1950. case 87:
  1951. YY_RULE_SETUP
  1952. #line 277 "program_lexer.l"
  1953. { return INVTRANS; }
  1954.         YY_BREAK
  1955. case 88:
  1956. YY_RULE_SETUP
  1957. #line 278 "program_lexer.l"
  1958. { return LIGHT; }
  1959.         YY_BREAK
  1960. case 89:
  1961. YY_RULE_SETUP
  1962. #line 279 "program_lexer.l"
  1963. { return LIGHTMODEL; }
  1964.         YY_BREAK
  1965. case 90:
  1966. YY_RULE_SETUP
  1967. #line 280 "program_lexer.l"
  1968. { return LIGHTPROD; }
  1969.         YY_BREAK
  1970. case 91:
  1971. YY_RULE_SETUP
  1972. #line 281 "program_lexer.l"
  1973. { return LOCAL; }
  1974.         YY_BREAK
  1975. case 92:
  1976. YY_RULE_SETUP
  1977. #line 282 "program_lexer.l"
  1978. { return MATERIAL; }
  1979.         YY_BREAK
  1980. case 93:
  1981. YY_RULE_SETUP
  1982. #line 283 "program_lexer.l"
  1983. { return MAT_PROGRAM; }
  1984.         YY_BREAK
  1985. case 94:
  1986. YY_RULE_SETUP
  1987. #line 284 "program_lexer.l"
  1988. { return MATRIX; }
  1989.         YY_BREAK
  1990. case 95:
  1991. YY_RULE_SETUP
  1992. #line 285 "program_lexer.l"
  1993. { return_token_or_DOT(require_ARB_vp, MATRIXINDEX); }
  1994.         YY_BREAK
  1995. case 96:
  1996. YY_RULE_SETUP
  1997. #line 286 "program_lexer.l"
  1998. { return MODELVIEW; }
  1999.         YY_BREAK
  2000. case 97:
  2001. YY_RULE_SETUP
  2002. #line 287 "program_lexer.l"
  2003. { return MVP; }
  2004.         YY_BREAK
  2005. case 98:
  2006. YY_RULE_SETUP
  2007. #line 288 "program_lexer.l"
  2008. { return_token_or_DOT(require_ARB_vp, NORMAL); }
  2009.         YY_BREAK
  2010. case 99:
  2011. YY_RULE_SETUP
  2012. #line 289 "program_lexer.l"
  2013. { return OBJECT; }
  2014.         YY_BREAK
  2015. case 100:
  2016. YY_RULE_SETUP
  2017. #line 290 "program_lexer.l"
  2018. { return PALETTE; }
  2019.         YY_BREAK
  2020. case 101:
  2021. YY_RULE_SETUP
  2022. #line 291 "program_lexer.l"
  2023. { return PARAMS; }
  2024.         YY_BREAK
  2025. case 102:
  2026. YY_RULE_SETUP
  2027. #line 292 "program_lexer.l"
  2028. { return PLANE; }
  2029.         YY_BREAK
  2030. case 103:
  2031. YY_RULE_SETUP
  2032. #line 293 "program_lexer.l"
  2033. { return_token_or_DOT(require_ARB_vp, POINT_TOK); }
  2034.         YY_BREAK
  2035. case 104:
  2036. YY_RULE_SETUP
  2037. #line 294 "program_lexer.l"
  2038. { return_token_or_DOT(require_ARB_vp, POINTSIZE); }
  2039.         YY_BREAK
  2040. case 105:
  2041. YY_RULE_SETUP
  2042. #line 295 "program_lexer.l"
  2043. { return POSITION; }
  2044.         YY_BREAK
  2045. case 106:
  2046. YY_RULE_SETUP
  2047. #line 296 "program_lexer.l"
  2048. { return PRIMARY; }
  2049.         YY_BREAK
  2050. case 107:
  2051. YY_RULE_SETUP
  2052. #line 297 "program_lexer.l"
  2053. { return PROJECTION; }
  2054.         YY_BREAK
  2055. case 108:
  2056. YY_RULE_SETUP
  2057. #line 298 "program_lexer.l"
  2058. { return_token_or_DOT(require_ARB_fp, RANGE); }
  2059.         YY_BREAK
  2060. case 109:
  2061. YY_RULE_SETUP
  2062. #line 299 "program_lexer.l"
  2063. { return ROW; }
  2064.         YY_BREAK
  2065. case 110:
  2066. YY_RULE_SETUP
  2067. #line 300 "program_lexer.l"
  2068. { return SCENECOLOR; }
  2069.         YY_BREAK
  2070. case 111:
  2071. YY_RULE_SETUP
  2072. #line 301 "program_lexer.l"
  2073. { return SECONDARY; }
  2074.         YY_BREAK
  2075. case 112:
  2076. YY_RULE_SETUP
  2077. #line 302 "program_lexer.l"
  2078. { return SHININESS; }
  2079.         YY_BREAK
  2080. case 113:
  2081. YY_RULE_SETUP
  2082. #line 303 "program_lexer.l"
  2083. { return_token_or_DOT(require_ARB_vp, SIZE_TOK); }
  2084.         YY_BREAK
  2085. case 114:
  2086. YY_RULE_SETUP
  2087. #line 304 "program_lexer.l"
  2088. { return SPECULAR; }
  2089.         YY_BREAK
  2090. case 115:
  2091. YY_RULE_SETUP
  2092. #line 305 "program_lexer.l"
  2093. { return SPOT; }
  2094.         YY_BREAK
  2095. case 116:
  2096. YY_RULE_SETUP
  2097. #line 306 "program_lexer.l"
  2098. { return TEXCOORD; }
  2099.         YY_BREAK
  2100. case 117:
  2101. YY_RULE_SETUP
  2102. #line 307 "program_lexer.l"
  2103. { return_token_or_DOT(require_ARB_fp, TEXENV); }
  2104.         YY_BREAK
  2105. case 118:
  2106. YY_RULE_SETUP
  2107. #line 308 "program_lexer.l"
  2108. { return_token_or_DOT(require_ARB_vp, TEXGEN); }
  2109.         YY_BREAK
  2110. case 119:
  2111. YY_RULE_SETUP
  2112. #line 309 "program_lexer.l"
  2113. { return_token_or_DOT(require_ARB_vp, TEXGEN_Q); }
  2114.         YY_BREAK
  2115. case 120:
  2116. YY_RULE_SETUP
  2117. #line 310 "program_lexer.l"
  2118. { return_token_or_DOT(require_ARB_vp, TEXGEN_S); }
  2119.         YY_BREAK
  2120. case 121:
  2121. YY_RULE_SETUP
  2122. #line 311 "program_lexer.l"
  2123. { return_token_or_DOT(require_ARB_vp, TEXGEN_T); }
  2124.         YY_BREAK
  2125. case 122:
  2126. YY_RULE_SETUP
  2127. #line 312 "program_lexer.l"
  2128. { return TEXTURE; }
  2129.         YY_BREAK
  2130. case 123:
  2131. YY_RULE_SETUP
  2132. #line 313 "program_lexer.l"
  2133. { return TRANSPOSE; }
  2134.         YY_BREAK
  2135. case 124:
  2136. YY_RULE_SETUP
  2137. #line 314 "program_lexer.l"
  2138. { return_token_or_DOT(require_ARB_vp, VTXATTRIB); }
  2139.         YY_BREAK
  2140. case 125:
  2141. YY_RULE_SETUP
  2142. #line 315 "program_lexer.l"
  2143. { return_token_or_DOT(require_ARB_vp, WEIGHT); }
  2144.         YY_BREAK
  2145. case 126:
  2146. YY_RULE_SETUP
  2147. #line 317 "program_lexer.l"
  2148. { return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); }
  2149.         YY_BREAK
  2150. case 127:
  2151. YY_RULE_SETUP
  2152. #line 318 "program_lexer.l"
  2153. { return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); }
  2154.         YY_BREAK
  2155. case 128:
  2156. YY_RULE_SETUP
  2157. #line 319 "program_lexer.l"
  2158. { return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); }
  2159.         YY_BREAK
  2160. case 129:
  2161. YY_RULE_SETUP
  2162. #line 320 "program_lexer.l"
  2163. { return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); }
  2164.         YY_BREAK
  2165. case 130:
  2166. YY_RULE_SETUP
  2167. #line 321 "program_lexer.l"
  2168. { return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); }
  2169.         YY_BREAK
  2170. case 131:
  2171. YY_RULE_SETUP
  2172. #line 322 "program_lexer.l"
  2173. { return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); }
  2174.         YY_BREAK
  2175. case 132:
  2176. YY_RULE_SETUP
  2177. #line 323 "program_lexer.l"
  2178. { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); }
  2179.         YY_BREAK
  2180. case 133:
  2181. YY_RULE_SETUP
  2182. #line 324 "program_lexer.l"
  2183. { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); }
  2184.         YY_BREAK
  2185. case 134:
  2186. YY_RULE_SETUP
  2187. #line 325 "program_lexer.l"
  2188. { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); }
  2189.         YY_BREAK
  2190. case 135:
  2191. YY_RULE_SETUP
  2192. #line 326 "program_lexer.l"
  2193. { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); }
  2194.         YY_BREAK
  2195. case 136:
  2196. YY_RULE_SETUP
  2197. #line 327 "program_lexer.l"
  2198. { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); }
  2199.         YY_BREAK
  2200. case 137:
  2201. YY_RULE_SETUP
  2202. #line 328 "program_lexer.l"
  2203. { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); }
  2204.         YY_BREAK
  2205. case 138:
  2206. YY_RULE_SETUP
  2207. #line 329 "program_lexer.l"
  2208. { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); }
  2209.         YY_BREAK
  2210. case 139:
  2211. YY_RULE_SETUP
  2212. #line 331 "program_lexer.l"
  2213. { return handle_ident(yyextra, yytext, yylval); }
  2214.         YY_BREAK
  2215. case 140:
  2216. YY_RULE_SETUP
  2217. #line 333 "program_lexer.l"
  2218. { return DOT_DOT; }
  2219.         YY_BREAK
  2220. case 141:
  2221. YY_RULE_SETUP
  2222. #line 335 "program_lexer.l"
  2223. {
  2224.    yylval->integer = strtol(yytext, NULL, 10);
  2225.    return INTEGER;
  2226. }
  2227.         YY_BREAK
  2228. case 142:
  2229. YY_RULE_SETUP
  2230. #line 339 "program_lexer.l"
  2231. {
  2232.    yylval->real = _mesa_strtof(yytext, NULL);
  2233.    return REAL;
  2234. }
  2235.         YY_BREAK
  2236. case 143:
  2237. /* rule 143 can match eol */
  2238. *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
  2239. yyg->yy_c_buf_p = yy_cp -= 1;
  2240. YY_DO_BEFORE_ACTION; /* set up yytext again */
  2241. YY_RULE_SETUP
  2242. #line 343 "program_lexer.l"
  2243. {
  2244.    yylval->real = _mesa_strtof(yytext, NULL);
  2245.    return REAL;
  2246. }
  2247.         YY_BREAK
  2248. case 144:
  2249. YY_RULE_SETUP
  2250. #line 347 "program_lexer.l"
  2251. {
  2252.    yylval->real = _mesa_strtof(yytext, NULL);
  2253.    return REAL;
  2254. }
  2255.         YY_BREAK
  2256. case 145:
  2257. YY_RULE_SETUP
  2258. #line 351 "program_lexer.l"
  2259. {
  2260.    yylval->real = _mesa_strtof(yytext, NULL);
  2261.    return REAL;
  2262. }
  2263.         YY_BREAK
  2264. case 146:
  2265. YY_RULE_SETUP
  2266. #line 356 "program_lexer.l"
  2267. {
  2268.    yylval->swiz_mask.swizzle = SWIZZLE_NOOP;
  2269.    yylval->swiz_mask.mask = WRITEMASK_XYZW;
  2270.    return MASK4;
  2271. }
  2272.         YY_BREAK
  2273. case 147:
  2274. YY_RULE_SETUP
  2275. #line 362 "program_lexer.l"
  2276. {
  2277.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2278.    yylval->swiz_mask.mask = WRITEMASK_XY
  2279.       | mask_from_char(yytext[3]);
  2280.    return MASK3;
  2281. }
  2282.         YY_BREAK
  2283. case 148:
  2284. YY_RULE_SETUP
  2285. #line 368 "program_lexer.l"
  2286. {
  2287.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2288.    yylval->swiz_mask.mask = WRITEMASK_XZW;
  2289.    return MASK3;
  2290. }
  2291.         YY_BREAK
  2292. case 149:
  2293. YY_RULE_SETUP
  2294. #line 373 "program_lexer.l"
  2295. {
  2296.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2297.    yylval->swiz_mask.mask = WRITEMASK_YZW;
  2298.    return MASK3;
  2299. }
  2300.         YY_BREAK
  2301. case 150:
  2302. YY_RULE_SETUP
  2303. #line 379 "program_lexer.l"
  2304. {
  2305.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2306.    yylval->swiz_mask.mask = WRITEMASK_X
  2307.       | mask_from_char(yytext[2]);
  2308.    return MASK2;
  2309. }
  2310.         YY_BREAK
  2311. case 151:
  2312. YY_RULE_SETUP
  2313. #line 385 "program_lexer.l"
  2314. {
  2315.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2316.    yylval->swiz_mask.mask = WRITEMASK_Y
  2317.       | mask_from_char(yytext[2]);
  2318.    return MASK2;
  2319. }
  2320.         YY_BREAK
  2321. case 152:
  2322. YY_RULE_SETUP
  2323. #line 391 "program_lexer.l"
  2324. {
  2325.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2326.    yylval->swiz_mask.mask = WRITEMASK_ZW;
  2327.    return MASK2;
  2328. }
  2329.         YY_BREAK
  2330. case 153:
  2331. YY_RULE_SETUP
  2332. #line 397 "program_lexer.l"
  2333. {
  2334.    const unsigned s = swiz_from_char(yytext[1]);
  2335.    yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s);
  2336.    yylval->swiz_mask.mask = mask_from_char(yytext[1]);
  2337.    return MASK1;
  2338. }
  2339.         YY_BREAK
  2340. case 154:
  2341. YY_RULE_SETUP
  2342. #line 404 "program_lexer.l"
  2343. {
  2344.    yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),
  2345.                                             swiz_from_char(yytext[2]),
  2346.                                             swiz_from_char(yytext[3]),
  2347.                                             swiz_from_char(yytext[4]));
  2348.    yylval->swiz_mask.mask = 0;
  2349.    return SWIZZLE;
  2350. }
  2351.         YY_BREAK
  2352. case 155:
  2353. YY_RULE_SETUP
  2354. #line 413 "program_lexer.l"
  2355. {
  2356.    yylval->swiz_mask.swizzle = SWIZZLE_NOOP;
  2357.    yylval->swiz_mask.mask = WRITEMASK_XYZW;
  2358.    return_token_or_DOT(require_ARB_fp, MASK4);
  2359. }
  2360.         YY_BREAK
  2361. case 156:
  2362. YY_RULE_SETUP
  2363. #line 419 "program_lexer.l"
  2364. {
  2365.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2366.    yylval->swiz_mask.mask = WRITEMASK_XY
  2367.       | mask_from_char(yytext[3]);
  2368.    return_token_or_DOT(require_ARB_fp, MASK3);
  2369. }
  2370.         YY_BREAK
  2371. case 157:
  2372. YY_RULE_SETUP
  2373. #line 425 "program_lexer.l"
  2374. {
  2375.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2376.    yylval->swiz_mask.mask = WRITEMASK_XZW;
  2377.    return_token_or_DOT(require_ARB_fp, MASK3);
  2378. }
  2379.         YY_BREAK
  2380. case 158:
  2381. YY_RULE_SETUP
  2382. #line 430 "program_lexer.l"
  2383. {
  2384.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2385.    yylval->swiz_mask.mask = WRITEMASK_YZW;
  2386.    return_token_or_DOT(require_ARB_fp, MASK3);
  2387. }
  2388.         YY_BREAK
  2389. case 159:
  2390. YY_RULE_SETUP
  2391. #line 436 "program_lexer.l"
  2392. {
  2393.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2394.    yylval->swiz_mask.mask = WRITEMASK_X
  2395.       | mask_from_char(yytext[2]);
  2396.    return_token_or_DOT(require_ARB_fp, MASK2);
  2397. }
  2398.         YY_BREAK
  2399. case 160:
  2400. YY_RULE_SETUP
  2401. #line 442 "program_lexer.l"
  2402. {
  2403.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2404.    yylval->swiz_mask.mask = WRITEMASK_Y
  2405.       | mask_from_char(yytext[2]);
  2406.    return_token_or_DOT(require_ARB_fp, MASK2);
  2407. }
  2408.         YY_BREAK
  2409. case 161:
  2410. YY_RULE_SETUP
  2411. #line 448 "program_lexer.l"
  2412. {
  2413.    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
  2414.    yylval->swiz_mask.mask = WRITEMASK_ZW;
  2415.    return_token_or_DOT(require_ARB_fp, MASK2);
  2416. }
  2417.         YY_BREAK
  2418. case 162:
  2419. YY_RULE_SETUP
  2420. #line 454 "program_lexer.l"
  2421. {
  2422.    const unsigned s = swiz_from_char(yytext[1]);
  2423.    yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s);
  2424.    yylval->swiz_mask.mask = mask_from_char(yytext[1]);
  2425.    return_token_or_DOT(require_ARB_fp, MASK1);
  2426. }
  2427.         YY_BREAK
  2428. case 163:
  2429. YY_RULE_SETUP
  2430. #line 462 "program_lexer.l"
  2431. {
  2432.    if (require_ARB_vp) {
  2433.       return TEXGEN_R;
  2434.    } else {
  2435.       yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_X,
  2436.                                                 SWIZZLE_X, SWIZZLE_X);
  2437.       yylval->swiz_mask.mask = WRITEMASK_X;
  2438.       return MASK1;
  2439.    }
  2440. }
  2441.         YY_BREAK
  2442. case 164:
  2443. YY_RULE_SETUP
  2444. #line 473 "program_lexer.l"
  2445. {
  2446.    yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),
  2447.                                             swiz_from_char(yytext[2]),
  2448.                                             swiz_from_char(yytext[3]),
  2449.                                             swiz_from_char(yytext[4]));
  2450.    yylval->swiz_mask.mask = 0;
  2451.    return_token_or_DOT(require_ARB_fp, SWIZZLE);
  2452. }
  2453.         YY_BREAK
  2454. case 165:
  2455. YY_RULE_SETUP
  2456. #line 482 "program_lexer.l"
  2457. { return DOT; }
  2458.         YY_BREAK
  2459. case 166:
  2460. /* rule 166 can match eol */
  2461. YY_RULE_SETUP
  2462. #line 484 "program_lexer.l"
  2463. {
  2464.    yylloc->first_line++;
  2465.    yylloc->first_column = 1;
  2466.    yylloc->last_line++;
  2467.    yylloc->last_column = 1;
  2468.    yylloc->position++;
  2469. }
  2470.         YY_BREAK
  2471. case 167:
  2472. YY_RULE_SETUP
  2473. #line 491 "program_lexer.l"
  2474. /* eat whitespace */ ;
  2475.         YY_BREAK
  2476. case 168:
  2477. *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
  2478. yyg->yy_c_buf_p = yy_cp -= 1;
  2479. YY_DO_BEFORE_ACTION; /* set up yytext again */
  2480. YY_RULE_SETUP
  2481. #line 492 "program_lexer.l"
  2482. /* eat comments */ ;
  2483.         YY_BREAK
  2484. case 169:
  2485. YY_RULE_SETUP
  2486. #line 493 "program_lexer.l"
  2487. { return yytext[0]; }
  2488.         YY_BREAK
  2489. case 170:
  2490. YY_RULE_SETUP
  2491. #line 494 "program_lexer.l"
  2492. ECHO;
  2493.         YY_BREAK
  2494. #line 2495 "lex.yy.c"
  2495. case YY_STATE_EOF(INITIAL):
  2496.         yyterminate();
  2497.  
  2498.         case YY_END_OF_BUFFER:
  2499.                 {
  2500.                 /* Amount of text matched not including the EOB char. */
  2501.                 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
  2502.  
  2503.                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
  2504.                 *yy_cp = yyg->yy_hold_char;
  2505.                 YY_RESTORE_YY_MORE_OFFSET
  2506.  
  2507.                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
  2508.                         {
  2509.                         /* We're scanning a new file or input source.  It's
  2510.                          * possible that this happened because the user
  2511.                          * just pointed yyin at a new source and called
  2512.                          * _mesa_program_lexer_lex().  If so, then we have to assure
  2513.                          * consistency between YY_CURRENT_BUFFER and our
  2514.                          * globals.  Here is the right place to do so, because
  2515.                          * this is the first action (other than possibly a
  2516.                          * back-up) that will match for the new input source.
  2517.                          */
  2518.                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
  2519.                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
  2520.                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
  2521.                         }
  2522.  
  2523.                 /* Note that here we test for yy_c_buf_p "<=" to the position
  2524.                  * of the first EOB in the buffer, since yy_c_buf_p will
  2525.                  * already have been incremented past the NUL character
  2526.                  * (since all states make transitions on EOB to the
  2527.                  * end-of-buffer state).  Contrast this with the test
  2528.                  * in input().
  2529.                  */
  2530.                 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
  2531.                         { /* This was really a NUL. */
  2532.                         yy_state_type yy_next_state;
  2533.  
  2534.                         yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
  2535.  
  2536.                         yy_current_state = yy_get_previous_state( yyscanner );
  2537.  
  2538.                         /* Okay, we're now positioned to make the NUL
  2539.                          * transition.  We couldn't have
  2540.                          * yy_get_previous_state() go ahead and do it
  2541.                          * for us because it doesn't know how to deal
  2542.                          * with the possibility of jamming (and we don't
  2543.                          * want to build jamming into it because then it
  2544.                          * will run more slowly).
  2545.                          */
  2546.  
  2547.                         yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
  2548.  
  2549.                         yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  2550.  
  2551.                         if ( yy_next_state )
  2552.                                 {
  2553.                                 /* Consume the NUL. */
  2554.                                 yy_cp = ++yyg->yy_c_buf_p;
  2555.                                 yy_current_state = yy_next_state;
  2556.                                 goto yy_match;
  2557.                                 }
  2558.  
  2559.                         else
  2560.                                 {
  2561.                                 yy_cp = yyg->yy_c_buf_p;
  2562.                                 goto yy_find_action;
  2563.                                 }
  2564.                         }
  2565.  
  2566.                 else switch ( yy_get_next_buffer( yyscanner ) )
  2567.                         {
  2568.                         case EOB_ACT_END_OF_FILE:
  2569.                                 {
  2570.                                 yyg->yy_did_buffer_switch_on_eof = 0;
  2571.  
  2572.                                 if ( _mesa_program_lexer_wrap(yyscanner ) )
  2573.                                         {
  2574.                                         /* Note: because we've taken care in
  2575.                                          * yy_get_next_buffer() to have set up
  2576.                                          * yytext, we can now set up
  2577.                                          * yy_c_buf_p so that if some total
  2578.                                          * hoser (like flex itself) wants to
  2579.                                          * call the scanner after we return the
  2580.                                          * YY_NULL, it'll still work - another
  2581.                                          * YY_NULL will get returned.
  2582.                                          */
  2583.                                         yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
  2584.  
  2585.                                         yy_act = YY_STATE_EOF(YY_START);
  2586.                                         goto do_action;
  2587.                                         }
  2588.  
  2589.                                 else
  2590.                                         {
  2591.                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
  2592.                                                 YY_NEW_FILE;
  2593.                                         }
  2594.                                 break;
  2595.                                 }
  2596.  
  2597.                         case EOB_ACT_CONTINUE_SCAN:
  2598.                                 yyg->yy_c_buf_p =
  2599.                                         yyg->yytext_ptr + yy_amount_of_matched_text;
  2600.  
  2601.                                 yy_current_state = yy_get_previous_state( yyscanner );
  2602.  
  2603.                                 yy_cp = yyg->yy_c_buf_p;
  2604.                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  2605.                                 goto yy_match;
  2606.  
  2607.                         case EOB_ACT_LAST_MATCH:
  2608.                                 yyg->yy_c_buf_p =
  2609.                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
  2610.  
  2611.                                 yy_current_state = yy_get_previous_state( yyscanner );
  2612.  
  2613.                                 yy_cp = yyg->yy_c_buf_p;
  2614.                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  2615.                                 goto yy_find_action;
  2616.                         }
  2617.                 break;
  2618.                 }
  2619.  
  2620.         default:
  2621.                 YY_FATAL_ERROR(
  2622.                         "fatal flex scanner internal error--no action found" );
  2623.         } /* end of action switch */
  2624.                 } /* end of scanning one token */
  2625. } /* end of _mesa_program_lexer_lex */
  2626.  
  2627. /* yy_get_next_buffer - try to read in a new buffer
  2628.  *
  2629.  * Returns a code representing an action:
  2630.  *      EOB_ACT_LAST_MATCH -
  2631.  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
  2632.  *      EOB_ACT_END_OF_FILE - end of file
  2633.  */
  2634. static int yy_get_next_buffer (yyscan_t yyscanner)
  2635. {
  2636.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  2637.         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
  2638.         register char *source = yyg->yytext_ptr;
  2639.         register int number_to_move, i;
  2640.         int ret_val;
  2641.  
  2642.         if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
  2643.                 YY_FATAL_ERROR(
  2644.                 "fatal flex scanner internal error--end of buffer missed" );
  2645.  
  2646.         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
  2647.                 { /* Don't try to fill the buffer, so this is an EOF. */
  2648.                 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
  2649.                         {
  2650.                         /* We matched a single character, the EOB, so
  2651.                          * treat this as a final EOF.
  2652.                          */
  2653.                         return EOB_ACT_END_OF_FILE;
  2654.                         }
  2655.  
  2656.                 else
  2657.                         {
  2658.                         /* We matched some text prior to the EOB, first
  2659.                          * process it.
  2660.                          */
  2661.                         return EOB_ACT_LAST_MATCH;
  2662.                         }
  2663.                 }
  2664.  
  2665.         /* Try to read more data. */
  2666.  
  2667.         /* First move last chars to start of buffer. */
  2668.         number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
  2669.  
  2670.         for ( i = 0; i < number_to_move; ++i )
  2671.                 *(dest++) = *(source++);
  2672.  
  2673.         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
  2674.                 /* don't do the read, it's not guaranteed to return an EOF,
  2675.                  * just force an EOF
  2676.                  */
  2677.                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
  2678.  
  2679.         else
  2680.                 {
  2681.                         int num_to_read =
  2682.                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
  2683.  
  2684.                 while ( num_to_read <= 0 )
  2685.                         { /* Not enough room in the buffer - grow it. */
  2686.  
  2687.                         /* just a shorter name for the current buffer */
  2688.                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
  2689.  
  2690.                         int yy_c_buf_p_offset =
  2691.                                 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
  2692.  
  2693.                         if ( b->yy_is_our_buffer )
  2694.                                 {
  2695.                                 int new_size = b->yy_buf_size * 2;
  2696.  
  2697.                                 if ( new_size <= 0 )
  2698.                                         b->yy_buf_size += b->yy_buf_size / 8;
  2699.                                 else
  2700.                                         b->yy_buf_size *= 2;
  2701.  
  2702.                                 b->yy_ch_buf = (char *)
  2703.                                         /* Include room in for 2 EOB chars. */
  2704.                                         _mesa_program_lexer_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
  2705.                                 }
  2706.                         else
  2707.                                 /* Can't grow it, we don't own it. */
  2708.                                 b->yy_ch_buf = 0;
  2709.  
  2710.                         if ( ! b->yy_ch_buf )
  2711.                                 YY_FATAL_ERROR(
  2712.                                 "fatal error - scanner input buffer overflow" );
  2713.  
  2714.                         yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
  2715.  
  2716.                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
  2717.                                                 number_to_move - 1;
  2718.  
  2719.                         }
  2720.  
  2721.                 if ( num_to_read > YY_READ_BUF_SIZE )
  2722.                         num_to_read = YY_READ_BUF_SIZE;
  2723.  
  2724.                 /* Read in more data. */
  2725.                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
  2726.                         yyg->yy_n_chars, (size_t) num_to_read );
  2727.  
  2728.                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
  2729.                 }
  2730.  
  2731.         if ( yyg->yy_n_chars == 0 )
  2732.                 {
  2733.                 if ( number_to_move == YY_MORE_ADJ )
  2734.                         {
  2735.                         ret_val = EOB_ACT_END_OF_FILE;
  2736.                         _mesa_program_lexer_restart(yyin  ,yyscanner);
  2737.                         }
  2738.  
  2739.                 else
  2740.                         {
  2741.                         ret_val = EOB_ACT_LAST_MATCH;
  2742.                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
  2743.                                 YY_BUFFER_EOF_PENDING;
  2744.                         }
  2745.                 }
  2746.  
  2747.         else
  2748.                 ret_val = EOB_ACT_CONTINUE_SCAN;
  2749.  
  2750.         if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
  2751.                 /* Extend the array by 50%, plus the number we really need. */
  2752.                 yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
  2753.                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) _mesa_program_lexer_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
  2754.                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
  2755.                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
  2756.         }
  2757.  
  2758.         yyg->yy_n_chars += number_to_move;
  2759.         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
  2760.         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
  2761.  
  2762.         yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
  2763.  
  2764.         return ret_val;
  2765. }
  2766.  
  2767. /* yy_get_previous_state - get the state just before the EOB char was reached */
  2768.  
  2769.     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
  2770. {
  2771.         register yy_state_type yy_current_state;
  2772.         register char *yy_cp;
  2773.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  2774.  
  2775.         yy_current_state = yyg->yy_start;
  2776.  
  2777.         for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
  2778.                 {
  2779.                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
  2780.                 if ( yy_accept[yy_current_state] )
  2781.                         {
  2782.                         yyg->yy_last_accepting_state = yy_current_state;
  2783.                         yyg->yy_last_accepting_cpos = yy_cp;
  2784.                         }
  2785.                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  2786.                         {
  2787.                         yy_current_state = (int) yy_def[yy_current_state];
  2788.                         if ( yy_current_state >= 850 )
  2789.                                 yy_c = yy_meta[(unsigned int) yy_c];
  2790.                         }
  2791.                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  2792.                 }
  2793.  
  2794.         return yy_current_state;
  2795. }
  2796.  
  2797. /* yy_try_NUL_trans - try to make a transition on the NUL character
  2798.  *
  2799.  * synopsis
  2800.  *      next_state = yy_try_NUL_trans( current_state );
  2801.  */
  2802.     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
  2803. {
  2804.         register int yy_is_jam;
  2805.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
  2806.         register char *yy_cp = yyg->yy_c_buf_p;
  2807.  
  2808.         register YY_CHAR yy_c = 1;
  2809.         if ( yy_accept[yy_current_state] )
  2810.                 {
  2811.                 yyg->yy_last_accepting_state = yy_current_state;
  2812.                 yyg->yy_last_accepting_cpos = yy_cp;
  2813.                 }
  2814.         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  2815.                 {
  2816.                 yy_current_state = (int) yy_def[yy_current_state];
  2817.                 if ( yy_current_state >= 850 )
  2818.                         yy_c = yy_meta[(unsigned int) yy_c];
  2819.                 }
  2820.         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  2821.         yy_is_jam = (yy_current_state == 849);
  2822.  
  2823.         return yy_is_jam ? 0 : yy_current_state;
  2824. }
  2825.  
  2826.     static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
  2827. {
  2828.         register char *yy_cp;
  2829.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  2830.  
  2831.     yy_cp = yyg->yy_c_buf_p;
  2832.  
  2833.         /* undo effects of setting up yytext */
  2834.         *yy_cp = yyg->yy_hold_char;
  2835.  
  2836.         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
  2837.                 { /* need to shift things up to make room */
  2838.                 /* +2 for EOB chars. */
  2839.                 register int number_to_move = yyg->yy_n_chars + 2;
  2840.                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
  2841.                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
  2842.                 register char *source =
  2843.                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
  2844.  
  2845.                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
  2846.                         *--dest = *--source;
  2847.  
  2848.                 yy_cp += (int) (dest - source);
  2849.                 yy_bp += (int) (dest - source);
  2850.                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
  2851.                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
  2852.  
  2853.                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
  2854.                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
  2855.                 }
  2856.  
  2857.         *--yy_cp = (char) c;
  2858.  
  2859.         yyg->yytext_ptr = yy_bp;
  2860.         yyg->yy_hold_char = *yy_cp;
  2861.         yyg->yy_c_buf_p = yy_cp;
  2862. }
  2863.  
  2864. #ifndef YY_NO_INPUT
  2865. #ifdef __cplusplus
  2866.     static int yyinput (yyscan_t yyscanner)
  2867. #else
  2868.     static int input  (yyscan_t yyscanner)
  2869. #endif
  2870.  
  2871. {
  2872.         int c;
  2873.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  2874.  
  2875.         *yyg->yy_c_buf_p = yyg->yy_hold_char;
  2876.  
  2877.         if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
  2878.                 {
  2879.                 /* yy_c_buf_p now points to the character we want to return.
  2880.                  * If this occurs *before* the EOB characters, then it's a
  2881.                  * valid NUL; if not, then we've hit the end of the buffer.
  2882.                  */
  2883.                 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
  2884.                         /* This was really a NUL. */
  2885.                         *yyg->yy_c_buf_p = '\0';
  2886.  
  2887.                 else
  2888.                         { /* need more input */
  2889.                         int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
  2890.                         ++yyg->yy_c_buf_p;
  2891.  
  2892.                         switch ( yy_get_next_buffer( yyscanner ) )
  2893.                                 {
  2894.                                 case EOB_ACT_LAST_MATCH:
  2895.                                         /* This happens because yy_g_n_b()
  2896.                                          * sees that we've accumulated a
  2897.                                          * token and flags that we need to
  2898.                                          * try matching the token before
  2899.                                          * proceeding.  But for input(),
  2900.                                          * there's no matching to consider.
  2901.                                          * So convert the EOB_ACT_LAST_MATCH
  2902.                                          * to EOB_ACT_END_OF_FILE.
  2903.                                          */
  2904.  
  2905.                                         /* Reset buffer status. */
  2906.                                         _mesa_program_lexer_restart(yyin ,yyscanner);
  2907.  
  2908.                                         /*FALLTHROUGH*/
  2909.  
  2910.                                 case EOB_ACT_END_OF_FILE:
  2911.                                         {
  2912.                                         if ( _mesa_program_lexer_wrap(yyscanner ) )
  2913.                                                 return EOF;
  2914.  
  2915.                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
  2916.                                                 YY_NEW_FILE;
  2917. #ifdef __cplusplus
  2918.                                         return yyinput(yyscanner);
  2919. #else
  2920.                                         return input(yyscanner);
  2921. #endif
  2922.                                         }
  2923.  
  2924.                                 case EOB_ACT_CONTINUE_SCAN:
  2925.                                         yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
  2926.                                         break;
  2927.                                 }
  2928.                         }
  2929.                 }
  2930.  
  2931.         c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
  2932.         *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
  2933.         yyg->yy_hold_char = *++yyg->yy_c_buf_p;
  2934.  
  2935.         return c;
  2936. }
  2937. #endif  /* ifndef YY_NO_INPUT */
  2938.  
  2939. /** Immediately switch to a different input stream.
  2940.  * @param input_file A readable stream.
  2941.  * @param yyscanner The scanner object.
  2942.  * @note This function does not reset the start condition to @c INITIAL .
  2943.  */
  2944.     void _mesa_program_lexer_restart  (FILE * input_file , yyscan_t yyscanner)
  2945. {
  2946.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  2947.  
  2948.         if ( ! YY_CURRENT_BUFFER ){
  2949.         _mesa_program_lexer_ensure_buffer_stack (yyscanner);
  2950.                 YY_CURRENT_BUFFER_LVALUE =
  2951.             _mesa_program_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
  2952.         }
  2953.  
  2954.         _mesa_program_lexer__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
  2955.         _mesa_program_lexer__load_buffer_state(yyscanner );
  2956. }
  2957.  
  2958. /** Switch to a different input buffer.
  2959.  * @param new_buffer The new input buffer.
  2960.  * @param yyscanner The scanner object.
  2961.  */
  2962.     void _mesa_program_lexer__switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
  2963. {
  2964.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  2965.  
  2966.         /* TODO. We should be able to replace this entire function body
  2967.          * with
  2968.          *              _mesa_program_lexer_pop_buffer_state();
  2969.          *              _mesa_program_lexer_push_buffer_state(new_buffer);
  2970.      */
  2971.         _mesa_program_lexer_ensure_buffer_stack (yyscanner);
  2972.         if ( YY_CURRENT_BUFFER == new_buffer )
  2973.                 return;
  2974.  
  2975.         if ( YY_CURRENT_BUFFER )
  2976.                 {
  2977.                 /* Flush out information for old buffer. */
  2978.                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
  2979.                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
  2980.                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
  2981.                 }
  2982.  
  2983.         YY_CURRENT_BUFFER_LVALUE = new_buffer;
  2984.         _mesa_program_lexer__load_buffer_state(yyscanner );
  2985.  
  2986.         /* We don't actually know whether we did this switch during
  2987.          * EOF (_mesa_program_lexer_wrap()) processing, but the only time this flag
  2988.          * is looked at is after _mesa_program_lexer_wrap() is called, so it's safe
  2989.          * to go ahead and always set it.
  2990.          */
  2991.         yyg->yy_did_buffer_switch_on_eof = 1;
  2992. }
  2993.  
  2994. static void _mesa_program_lexer__load_buffer_state  (yyscan_t yyscanner)
  2995. {
  2996.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  2997.         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
  2998.         yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
  2999.         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
  3000.         yyg->yy_hold_char = *yyg->yy_c_buf_p;
  3001. }
  3002.  
  3003. /** Allocate and initialize an input buffer state.
  3004.  * @param file A readable stream.
  3005.  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
  3006.  * @param yyscanner The scanner object.
  3007.  * @return the allocated buffer state.
  3008.  */
  3009.     YY_BUFFER_STATE _mesa_program_lexer__create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
  3010. {
  3011.         YY_BUFFER_STATE b;
  3012.    
  3013.         b = (YY_BUFFER_STATE) _mesa_program_lexer_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
  3014.         if ( ! b )
  3015.                 YY_FATAL_ERROR( "out of dynamic memory in _mesa_program_lexer__create_buffer()" );
  3016.  
  3017.         b->yy_buf_size = size;
  3018.  
  3019.         /* yy_ch_buf has to be 2 characters longer than the size given because
  3020.          * we need to put in 2 end-of-buffer characters.
  3021.          */
  3022.         b->yy_ch_buf = (char *) _mesa_program_lexer_alloc(b->yy_buf_size + 2 ,yyscanner );
  3023.         if ( ! b->yy_ch_buf )
  3024.                 YY_FATAL_ERROR( "out of dynamic memory in _mesa_program_lexer__create_buffer()" );
  3025.  
  3026.         b->yy_is_our_buffer = 1;
  3027.  
  3028.         _mesa_program_lexer__init_buffer(b,file ,yyscanner);
  3029.  
  3030.         return b;
  3031. }
  3032.  
  3033. /** Destroy the buffer.
  3034.  * @param b a buffer created with _mesa_program_lexer__create_buffer()
  3035.  * @param yyscanner The scanner object.
  3036.  */
  3037.     void _mesa_program_lexer__delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
  3038. {
  3039.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3040.  
  3041.         if ( ! b )
  3042.                 return;
  3043.  
  3044.         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
  3045.                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
  3046.  
  3047.         if ( b->yy_is_our_buffer )
  3048.                 _mesa_program_lexer_free((void *) b->yy_ch_buf ,yyscanner );
  3049.  
  3050.         _mesa_program_lexer_free((void *) b ,yyscanner );
  3051. }
  3052.  
  3053. /* Initializes or reinitializes a buffer.
  3054.  * This function is sometimes called more than once on the same buffer,
  3055.  * such as during a _mesa_program_lexer_restart() or at EOF.
  3056.  */
  3057.     static void _mesa_program_lexer__init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
  3058.  
  3059. {
  3060.         int oerrno = errno;
  3061.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3062.  
  3063.         _mesa_program_lexer__flush_buffer(b ,yyscanner);
  3064.  
  3065.         b->yy_input_file = file;
  3066.         b->yy_fill_buffer = 1;
  3067.  
  3068.     /* If b is the current buffer, then _mesa_program_lexer__init_buffer was _probably_
  3069.      * called from _mesa_program_lexer_restart() or through yy_get_next_buffer.
  3070.      * In that case, we don't want to reset the lineno or column.
  3071.      */
  3072.     if (b != YY_CURRENT_BUFFER){
  3073.         b->yy_bs_lineno = 1;
  3074.         b->yy_bs_column = 0;
  3075.     }
  3076.  
  3077.         b->yy_is_interactive = 0;
  3078.    
  3079.         errno = oerrno;
  3080. }
  3081.  
  3082. /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
  3083.  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
  3084.  * @param yyscanner The scanner object.
  3085.  */
  3086.     void _mesa_program_lexer__flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
  3087. {
  3088.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3089.         if ( ! b )
  3090.                 return;
  3091.  
  3092.         b->yy_n_chars = 0;
  3093.  
  3094.         /* We always need two end-of-buffer characters.  The first causes
  3095.          * a transition to the end-of-buffer state.  The second causes
  3096.          * a jam in that state.
  3097.          */
  3098.         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
  3099.         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
  3100.  
  3101.         b->yy_buf_pos = &b->yy_ch_buf[0];
  3102.  
  3103.         b->yy_at_bol = 1;
  3104.         b->yy_buffer_status = YY_BUFFER_NEW;
  3105.  
  3106.         if ( b == YY_CURRENT_BUFFER )
  3107.                 _mesa_program_lexer__load_buffer_state(yyscanner );
  3108. }
  3109.  
  3110. /** Pushes the new state onto the stack. The new state becomes
  3111.  *  the current state. This function will allocate the stack
  3112.  *  if necessary.
  3113.  *  @param new_buffer The new state.
  3114.  *  @param yyscanner The scanner object.
  3115.  */
  3116. void _mesa_program_lexer_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
  3117. {
  3118.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3119.         if (new_buffer == NULL)
  3120.                 return;
  3121.  
  3122.         _mesa_program_lexer_ensure_buffer_stack(yyscanner);
  3123.  
  3124.         /* This block is copied from _mesa_program_lexer__switch_to_buffer. */
  3125.         if ( YY_CURRENT_BUFFER )
  3126.                 {
  3127.                 /* Flush out information for old buffer. */
  3128.                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
  3129.                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
  3130.                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
  3131.                 }
  3132.  
  3133.         /* Only push if top exists. Otherwise, replace top. */
  3134.         if (YY_CURRENT_BUFFER)
  3135.                 yyg->yy_buffer_stack_top++;
  3136.         YY_CURRENT_BUFFER_LVALUE = new_buffer;
  3137.  
  3138.         /* copied from _mesa_program_lexer__switch_to_buffer. */
  3139.         _mesa_program_lexer__load_buffer_state(yyscanner );
  3140.         yyg->yy_did_buffer_switch_on_eof = 1;
  3141. }
  3142.  
  3143. /** Removes and deletes the top of the stack, if present.
  3144.  *  The next element becomes the new top.
  3145.  *  @param yyscanner The scanner object.
  3146.  */
  3147. void _mesa_program_lexer_pop_buffer_state (yyscan_t yyscanner)
  3148. {
  3149.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3150.         if (!YY_CURRENT_BUFFER)
  3151.                 return;
  3152.  
  3153.         _mesa_program_lexer__delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
  3154.         YY_CURRENT_BUFFER_LVALUE = NULL;
  3155.         if (yyg->yy_buffer_stack_top > 0)
  3156.                 --yyg->yy_buffer_stack_top;
  3157.  
  3158.         if (YY_CURRENT_BUFFER) {
  3159.                 _mesa_program_lexer__load_buffer_state(yyscanner );
  3160.                 yyg->yy_did_buffer_switch_on_eof = 1;
  3161.         }
  3162. }
  3163.  
  3164. /* Allocates the stack if it does not exist.
  3165.  *  Guarantees space for at least one push.
  3166.  */
  3167. static void _mesa_program_lexer_ensure_buffer_stack (yyscan_t yyscanner)
  3168. {
  3169.         int num_to_alloc;
  3170.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3171.  
  3172.         if (!yyg->yy_buffer_stack) {
  3173.  
  3174.                 /* First allocation is just for 2 elements, since we don't know if this
  3175.                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
  3176.                  * immediate realloc on the next call.
  3177.          */
  3178.                 num_to_alloc = 1;
  3179.                 yyg->yy_buffer_stack = (struct yy_buffer_state**)_mesa_program_lexer_alloc
  3180.                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
  3181.                                                                 , yyscanner);
  3182.                 if ( ! yyg->yy_buffer_stack )
  3183.                         YY_FATAL_ERROR( "out of dynamic memory in _mesa_program_lexer_ensure_buffer_stack()" );
  3184.                                                                  
  3185.                 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
  3186.                                
  3187.                 yyg->yy_buffer_stack_max = num_to_alloc;
  3188.                 yyg->yy_buffer_stack_top = 0;
  3189.                 return;
  3190.         }
  3191.  
  3192.         if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
  3193.  
  3194.                 /* Increase the buffer to prepare for a possible push. */
  3195.                 int grow_size = 8 /* arbitrary grow size */;
  3196.  
  3197.                 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
  3198.                 yyg->yy_buffer_stack = (struct yy_buffer_state**)_mesa_program_lexer_realloc
  3199.                                                                 (yyg->yy_buffer_stack,
  3200.                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
  3201.                                                                 , yyscanner);
  3202.                 if ( ! yyg->yy_buffer_stack )
  3203.                         YY_FATAL_ERROR( "out of dynamic memory in _mesa_program_lexer_ensure_buffer_stack()" );
  3204.  
  3205.                 /* zero only the new slots.*/
  3206.                 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
  3207.                 yyg->yy_buffer_stack_max = num_to_alloc;
  3208.         }
  3209. }
  3210.  
  3211. /** Setup the input buffer state to scan directly from a user-specified character buffer.
  3212.  * @param base the character buffer
  3213.  * @param size the size in bytes of the character buffer
  3214.  * @param yyscanner The scanner object.
  3215.  * @return the newly allocated buffer state object.
  3216.  */
  3217. YY_BUFFER_STATE _mesa_program_lexer__scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
  3218. {
  3219.         YY_BUFFER_STATE b;
  3220.    
  3221.         if ( size < 2 ||
  3222.              base[size-2] != YY_END_OF_BUFFER_CHAR ||
  3223.              base[size-1] != YY_END_OF_BUFFER_CHAR )
  3224.                 /* They forgot to leave room for the EOB's. */
  3225.                 return 0;
  3226.  
  3227.         b = (YY_BUFFER_STATE) _mesa_program_lexer_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
  3228.         if ( ! b )
  3229.                 YY_FATAL_ERROR( "out of dynamic memory in _mesa_program_lexer__scan_buffer()" );
  3230.  
  3231.         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
  3232.         b->yy_buf_pos = b->yy_ch_buf = base;
  3233.         b->yy_is_our_buffer = 0;
  3234.         b->yy_input_file = 0;
  3235.         b->yy_n_chars = b->yy_buf_size;
  3236.         b->yy_is_interactive = 0;
  3237.         b->yy_at_bol = 1;
  3238.         b->yy_fill_buffer = 0;
  3239.         b->yy_buffer_status = YY_BUFFER_NEW;
  3240.  
  3241.         _mesa_program_lexer__switch_to_buffer(b ,yyscanner );
  3242.  
  3243.         return b;
  3244. }
  3245.  
  3246. /** Setup the input buffer state to scan a string. The next call to _mesa_program_lexer_lex() will
  3247.  * scan from a @e copy of @a str.
  3248.  * @param yystr a NUL-terminated string to scan
  3249.  * @param yyscanner The scanner object.
  3250.  * @return the newly allocated buffer state object.
  3251.  * @note If you want to scan bytes that may contain NUL values, then use
  3252.  *       _mesa_program_lexer__scan_bytes() instead.
  3253.  */
  3254. YY_BUFFER_STATE _mesa_program_lexer__scan_string (yyconst char * yystr , yyscan_t yyscanner)
  3255. {
  3256.    
  3257.         return _mesa_program_lexer__scan_bytes(yystr,strlen(yystr) ,yyscanner);
  3258. }
  3259.  
  3260. /** Setup the input buffer state to scan the given bytes. The next call to _mesa_program_lexer_lex() will
  3261.  * scan from a @e copy of @a bytes.
  3262.  * @param yybytes the byte buffer to scan
  3263.  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  3264.  * @param yyscanner The scanner object.
  3265.  * @return the newly allocated buffer state object.
  3266.  */
  3267. YY_BUFFER_STATE _mesa_program_lexer__scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
  3268. {
  3269.         YY_BUFFER_STATE b;
  3270.         char *buf;
  3271.         yy_size_t n;
  3272.         int i;
  3273.    
  3274.         /* Get memory for full buffer, including space for trailing EOB's. */
  3275.         n = _yybytes_len + 2;
  3276.         buf = (char *) _mesa_program_lexer_alloc(n ,yyscanner );
  3277.         if ( ! buf )
  3278.                 YY_FATAL_ERROR( "out of dynamic memory in _mesa_program_lexer__scan_bytes()" );
  3279.  
  3280.         for ( i = 0; i < _yybytes_len; ++i )
  3281.                 buf[i] = yybytes[i];
  3282.  
  3283.         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
  3284.  
  3285.         b = _mesa_program_lexer__scan_buffer(buf,n ,yyscanner);
  3286.         if ( ! b )
  3287.                 YY_FATAL_ERROR( "bad buffer in _mesa_program_lexer__scan_bytes()" );
  3288.  
  3289.         /* It's okay to grow etc. this buffer, and we should throw it
  3290.          * away when we're done.
  3291.          */
  3292.         b->yy_is_our_buffer = 1;
  3293.  
  3294.         return b;
  3295. }
  3296.  
  3297. #ifndef YY_EXIT_FAILURE
  3298. #define YY_EXIT_FAILURE 2
  3299. #endif
  3300.  
  3301. static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
  3302. {
  3303.         (void) fprintf( stderr, "%s\n", msg );
  3304.         exit( YY_EXIT_FAILURE );
  3305. }
  3306.  
  3307. /* Redefine yyless() so it works in section 3 code. */
  3308.  
  3309. #undef yyless
  3310. #define yyless(n) \
  3311.         do \
  3312.                 { \
  3313.                 /* Undo effects of setting up yytext. */ \
  3314.         int yyless_macro_arg = (n); \
  3315.         YY_LESS_LINENO(yyless_macro_arg);\
  3316.                 yytext[yyleng] = yyg->yy_hold_char; \
  3317.                 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
  3318.                 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
  3319.                 *yyg->yy_c_buf_p = '\0'; \
  3320.                 yyleng = yyless_macro_arg; \
  3321.                 } \
  3322.         while ( 0 )
  3323.  
  3324. /* Accessor  methods (get/set functions) to struct members. */
  3325.  
  3326. /** Get the user-defined data for this scanner.
  3327.  * @param yyscanner The scanner object.
  3328.  */
  3329. YY_EXTRA_TYPE _mesa_program_lexer_get_extra  (yyscan_t yyscanner)
  3330. {
  3331.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3332.     return yyextra;
  3333. }
  3334.  
  3335. /** Get the current line number.
  3336.  * @param yyscanner The scanner object.
  3337.  */
  3338. int _mesa_program_lexer_get_lineno  (yyscan_t yyscanner)
  3339. {
  3340.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3341.    
  3342.         if (! YY_CURRENT_BUFFER)
  3343.             return 0;
  3344.    
  3345.     return yylineno;
  3346. }
  3347.  
  3348. /** Get the current column number.
  3349.  * @param yyscanner The scanner object.
  3350.  */
  3351. int _mesa_program_lexer_get_column  (yyscan_t yyscanner)
  3352. {
  3353.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3354.    
  3355.         if (! YY_CURRENT_BUFFER)
  3356.             return 0;
  3357.    
  3358.     return yycolumn;
  3359. }
  3360.  
  3361. /** Get the input stream.
  3362.  * @param yyscanner The scanner object.
  3363.  */
  3364. FILE *_mesa_program_lexer_get_in  (yyscan_t yyscanner)
  3365. {
  3366.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3367.     return yyin;
  3368. }
  3369.  
  3370. /** Get the output stream.
  3371.  * @param yyscanner The scanner object.
  3372.  */
  3373. FILE *_mesa_program_lexer_get_out  (yyscan_t yyscanner)
  3374. {
  3375.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3376.     return yyout;
  3377. }
  3378.  
  3379. /** Get the length of the current token.
  3380.  * @param yyscanner The scanner object.
  3381.  */
  3382. int _mesa_program_lexer_get_leng  (yyscan_t yyscanner)
  3383. {
  3384.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3385.     return yyleng;
  3386. }
  3387.  
  3388. /** Get the current token.
  3389.  * @param yyscanner The scanner object.
  3390.  */
  3391.  
  3392. char *_mesa_program_lexer_get_text  (yyscan_t yyscanner)
  3393. {
  3394.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3395.     return yytext;
  3396. }
  3397.  
  3398. /** Set the user-defined data. This data is never touched by the scanner.
  3399.  * @param user_defined The data to be associated with this scanner.
  3400.  * @param yyscanner The scanner object.
  3401.  */
  3402. void _mesa_program_lexer_set_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
  3403. {
  3404.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3405.     yyextra = user_defined ;
  3406. }
  3407.  
  3408. /** Set the current line number.
  3409.  * @param line_number
  3410.  * @param yyscanner The scanner object.
  3411.  */
  3412. void _mesa_program_lexer_set_lineno (int  line_number , yyscan_t yyscanner)
  3413. {
  3414.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3415.  
  3416.         /* lineno is only valid if an input buffer exists. */
  3417.         if (! YY_CURRENT_BUFFER )
  3418.            yy_fatal_error( "_mesa_program_lexer_set_lineno called with no buffer" , yyscanner);
  3419.    
  3420.     yylineno = line_number;
  3421. }
  3422.  
  3423. /** Set the current column.
  3424.  * @param line_number
  3425.  * @param yyscanner The scanner object.
  3426.  */
  3427. void _mesa_program_lexer_set_column (int  column_no , yyscan_t yyscanner)
  3428. {
  3429.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3430.  
  3431.         /* column is only valid if an input buffer exists. */
  3432.         if (! YY_CURRENT_BUFFER )
  3433.            yy_fatal_error( "_mesa_program_lexer_set_column called with no buffer" , yyscanner);
  3434.    
  3435.     yycolumn = column_no;
  3436. }
  3437.  
  3438. /** Set the input stream. This does not discard the current
  3439.  * input buffer.
  3440.  * @param in_str A readable stream.
  3441.  * @param yyscanner The scanner object.
  3442.  * @see _mesa_program_lexer__switch_to_buffer
  3443.  */
  3444. void _mesa_program_lexer_set_in (FILE *  in_str , yyscan_t yyscanner)
  3445. {
  3446.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3447.     yyin = in_str ;
  3448. }
  3449.  
  3450. void _mesa_program_lexer_set_out (FILE *  out_str , yyscan_t yyscanner)
  3451. {
  3452.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3453.     yyout = out_str ;
  3454. }
  3455.  
  3456. int _mesa_program_lexer_get_debug  (yyscan_t yyscanner)
  3457. {
  3458.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3459.     return yy_flex_debug;
  3460. }
  3461.  
  3462. void _mesa_program_lexer_set_debug (int  bdebug , yyscan_t yyscanner)
  3463. {
  3464.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3465.     yy_flex_debug = bdebug ;
  3466. }
  3467.  
  3468. /* Accessor methods for yylval and yylloc */
  3469.  
  3470. YYSTYPE * _mesa_program_lexer_get_lval  (yyscan_t yyscanner)
  3471. {
  3472.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3473.     return yylval;
  3474. }
  3475.  
  3476. void _mesa_program_lexer_set_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
  3477. {
  3478.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3479.     yylval = yylval_param;
  3480. }
  3481.  
  3482. YYLTYPE *_mesa_program_lexer_get_lloc  (yyscan_t yyscanner)
  3483. {
  3484.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3485.     return yylloc;
  3486. }
  3487.    
  3488. void _mesa_program_lexer_set_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
  3489. {
  3490.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3491.     yylloc = yylloc_param;
  3492. }
  3493.    
  3494. /* User-visible API */
  3495.  
  3496. /* _mesa_program_lexer_lex_init is special because it creates the scanner itself, so it is
  3497.  * the ONLY reentrant function that doesn't take the scanner as the last argument.
  3498.  * That's why we explicitly handle the declaration, instead of using our macros.
  3499.  */
  3500.  
  3501. int _mesa_program_lexer_lex_init(yyscan_t* ptr_yy_globals)
  3502.  
  3503. {
  3504.     if (ptr_yy_globals == NULL){
  3505.         errno = EINVAL;
  3506.         return 1;
  3507.     }
  3508.  
  3509.     *ptr_yy_globals = (yyscan_t) _mesa_program_lexer_alloc ( sizeof( struct yyguts_t ), NULL );
  3510.  
  3511.     if (*ptr_yy_globals == NULL){
  3512.         errno = ENOMEM;
  3513.         return 1;
  3514.     }
  3515.  
  3516.     /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
  3517.     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
  3518.  
  3519.     return yy_init_globals ( *ptr_yy_globals );
  3520. }
  3521.  
  3522. /* _mesa_program_lexer_lex_init_extra has the same functionality as _mesa_program_lexer_lex_init, but follows the
  3523.  * convention of taking the scanner as the last argument. Note however, that
  3524.  * this is a *pointer* to a scanner, as it will be allocated by this call (and
  3525.  * is the reason, too, why this function also must handle its own declaration).
  3526.  * The user defined value in the first argument will be available to _mesa_program_lexer_alloc in
  3527.  * the yyextra field.
  3528.  */
  3529.  
  3530. int _mesa_program_lexer_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
  3531.  
  3532. {
  3533.     struct yyguts_t dummy_yyguts;
  3534.  
  3535.     _mesa_program_lexer_set_extra (yy_user_defined, &dummy_yyguts);
  3536.  
  3537.     if (ptr_yy_globals == NULL){
  3538.         errno = EINVAL;
  3539.         return 1;
  3540.     }
  3541.        
  3542.     *ptr_yy_globals = (yyscan_t) _mesa_program_lexer_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
  3543.        
  3544.     if (*ptr_yy_globals == NULL){
  3545.         errno = ENOMEM;
  3546.         return 1;
  3547.     }
  3548.    
  3549.     /* By setting to 0xAA, we expose bugs in
  3550.     yy_init_globals. Leave at 0x00 for releases. */
  3551.     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
  3552.    
  3553.     _mesa_program_lexer_set_extra (yy_user_defined, *ptr_yy_globals);
  3554.    
  3555.     return yy_init_globals ( *ptr_yy_globals );
  3556. }
  3557.  
  3558. static int yy_init_globals (yyscan_t yyscanner)
  3559. {
  3560.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3561.     /* Initialization is the same as for the non-reentrant scanner.
  3562.      * This function is called from _mesa_program_lexer_lex_destroy(), so don't allocate here.
  3563.      */
  3564.  
  3565.     yyg->yy_buffer_stack = 0;
  3566.     yyg->yy_buffer_stack_top = 0;
  3567.     yyg->yy_buffer_stack_max = 0;
  3568.     yyg->yy_c_buf_p = (char *) 0;
  3569.     yyg->yy_init = 0;
  3570.     yyg->yy_start = 0;
  3571.  
  3572.     yyg->yy_start_stack_ptr = 0;
  3573.     yyg->yy_start_stack_depth = 0;
  3574.     yyg->yy_start_stack =  NULL;
  3575.  
  3576. /* Defined in main.c */
  3577. #ifdef YY_STDINIT
  3578.     yyin = stdin;
  3579.     yyout = stdout;
  3580. #else
  3581.     yyin = (FILE *) 0;
  3582.     yyout = (FILE *) 0;
  3583. #endif
  3584.  
  3585.     /* For future reference: Set errno on error, since we are called by
  3586.      * _mesa_program_lexer_lex_init()
  3587.      */
  3588.     return 0;
  3589. }
  3590.  
  3591. /* _mesa_program_lexer_lex_destroy is for both reentrant and non-reentrant scanners. */
  3592. int _mesa_program_lexer_lex_destroy  (yyscan_t yyscanner)
  3593. {
  3594.     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  3595.  
  3596.     /* Pop the buffer stack, destroying each element. */
  3597.         while(YY_CURRENT_BUFFER){
  3598.                 _mesa_program_lexer__delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
  3599.                 YY_CURRENT_BUFFER_LVALUE = NULL;
  3600.                 _mesa_program_lexer_pop_buffer_state(yyscanner);
  3601.         }
  3602.  
  3603.         /* Destroy the stack itself. */
  3604.         _mesa_program_lexer_free(yyg->yy_buffer_stack ,yyscanner);
  3605.         yyg->yy_buffer_stack = NULL;
  3606.  
  3607.     /* Destroy the start condition stack. */
  3608.         _mesa_program_lexer_free(yyg->yy_start_stack ,yyscanner );
  3609.         yyg->yy_start_stack = NULL;
  3610.  
  3611.     /* Reset the globals. This is important in a non-reentrant scanner so the next time
  3612.      * _mesa_program_lexer_lex() is called, initialization will occur. */
  3613.     yy_init_globals( yyscanner);
  3614.  
  3615.     /* Destroy the main struct (reentrant only). */
  3616.     _mesa_program_lexer_free ( yyscanner , yyscanner );
  3617.     yyscanner = NULL;
  3618.     return 0;
  3619. }
  3620.  
  3621. /*
  3622.  * Internal utility routines.
  3623.  */
  3624.  
  3625. #ifndef yytext_ptr
  3626. static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
  3627. {
  3628.         register int i;
  3629.         for ( i = 0; i < n; ++i )
  3630.                 s1[i] = s2[i];
  3631. }
  3632. #endif
  3633.  
  3634. #ifdef YY_NEED_STRLEN
  3635. static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
  3636. {
  3637.         register int n;
  3638.         for ( n = 0; s[n]; ++n )
  3639.                 ;
  3640.  
  3641.         return n;
  3642. }
  3643. #endif
  3644.  
  3645. void *_mesa_program_lexer_alloc (yy_size_t  size , yyscan_t yyscanner)
  3646. {
  3647.         return (void *) malloc( size );
  3648. }
  3649.  
  3650. void *_mesa_program_lexer_realloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
  3651. {
  3652.         /* The cast to (char *) in the following accommodates both
  3653.          * implementations that use char* generic pointers, and those
  3654.          * that use void* generic pointers.  It works with the latter
  3655.          * because both ANSI C and C++ allow castless assignment from
  3656.          * any pointer type to void*, and deal with argument conversions
  3657.          * as though doing an assignment.
  3658.          */
  3659.         return (void *) realloc( (char *) ptr, size );
  3660. }
  3661.  
  3662. void _mesa_program_lexer_free (void * ptr , yyscan_t yyscanner)
  3663. {
  3664.         free( (char *) ptr );   /* see _mesa_program_lexer_realloc() for (char *) cast */
  3665. }
  3666.  
  3667. #define YYTABLES_NAME "yytables"
  3668.  
  3669. #line 494 "program_lexer.l"
  3670.  
  3671.  
  3672.  
  3673. void
  3674. _mesa_program_lexer_ctor(void **scanner, struct asm_parser_state *state,
  3675.                          const char *string, size_t len)
  3676. {
  3677.    _mesa_program_lexer_lex_init_extra(state,scanner);
  3678.    _mesa_program_lexer__scan_bytes(string,len,*scanner);
  3679. }
  3680.  
  3681. void
  3682. _mesa_program_lexer_dtor(void *scanner)
  3683. {
  3684.    _mesa_program_lexer_lex_destroy(scanner);
  3685. }
  3686.  
  3687.