Subversion Repositories Kolibri OS

Rev

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

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