glsl_lexer.cpp revision b8e80941
1b8e80941Smrg#line 1 "src/compiler/glsl/glsl_lexer.cpp" 2b8e80941Smrg 3b8e80941Smrg#line 3 "src/compiler/glsl/glsl_lexer.cpp" 4b8e80941Smrg 5b8e80941Smrg#define YY_INT_ALIGNED short int 6b8e80941Smrg 7b8e80941Smrg/* A lexical scanner generated by flex */ 8b8e80941Smrg 9b8e80941Smrg#define FLEX_SCANNER 10b8e80941Smrg#define YY_FLEX_MAJOR_VERSION 2 11b8e80941Smrg#define YY_FLEX_MINOR_VERSION 6 12b8e80941Smrg#define YY_FLEX_SUBMINOR_VERSION 4 13b8e80941Smrg#if YY_FLEX_SUBMINOR_VERSION > 0 14b8e80941Smrg#define FLEX_BETA 15b8e80941Smrg#endif 16b8e80941Smrg 17b8e80941Smrg#ifdef yy_create_buffer 18b8e80941Smrg#define _mesa_glsl_lexer__create_buffer_ALREADY_DEFINED 19b8e80941Smrg#else 20b8e80941Smrg#define yy_create_buffer _mesa_glsl_lexer__create_buffer 21b8e80941Smrg#endif 22b8e80941Smrg 23b8e80941Smrg#ifdef yy_delete_buffer 24b8e80941Smrg#define _mesa_glsl_lexer__delete_buffer_ALREADY_DEFINED 25b8e80941Smrg#else 26b8e80941Smrg#define yy_delete_buffer _mesa_glsl_lexer__delete_buffer 27b8e80941Smrg#endif 28b8e80941Smrg 29b8e80941Smrg#ifdef yy_scan_buffer 30b8e80941Smrg#define _mesa_glsl_lexer__scan_buffer_ALREADY_DEFINED 31b8e80941Smrg#else 32b8e80941Smrg#define yy_scan_buffer _mesa_glsl_lexer__scan_buffer 33b8e80941Smrg#endif 34b8e80941Smrg 35b8e80941Smrg#ifdef yy_scan_string 36b8e80941Smrg#define _mesa_glsl_lexer__scan_string_ALREADY_DEFINED 37b8e80941Smrg#else 38b8e80941Smrg#define yy_scan_string _mesa_glsl_lexer__scan_string 39b8e80941Smrg#endif 40b8e80941Smrg 41b8e80941Smrg#ifdef yy_scan_bytes 42b8e80941Smrg#define _mesa_glsl_lexer__scan_bytes_ALREADY_DEFINED 43b8e80941Smrg#else 44b8e80941Smrg#define yy_scan_bytes _mesa_glsl_lexer__scan_bytes 45b8e80941Smrg#endif 46b8e80941Smrg 47b8e80941Smrg#ifdef yy_init_buffer 48b8e80941Smrg#define _mesa_glsl_lexer__init_buffer_ALREADY_DEFINED 49b8e80941Smrg#else 50b8e80941Smrg#define yy_init_buffer _mesa_glsl_lexer__init_buffer 51b8e80941Smrg#endif 52b8e80941Smrg 53b8e80941Smrg#ifdef yy_flush_buffer 54b8e80941Smrg#define _mesa_glsl_lexer__flush_buffer_ALREADY_DEFINED 55b8e80941Smrg#else 56b8e80941Smrg#define yy_flush_buffer _mesa_glsl_lexer__flush_buffer 57b8e80941Smrg#endif 58b8e80941Smrg 59b8e80941Smrg#ifdef yy_load_buffer_state 60b8e80941Smrg#define _mesa_glsl_lexer__load_buffer_state_ALREADY_DEFINED 61b8e80941Smrg#else 62b8e80941Smrg#define yy_load_buffer_state _mesa_glsl_lexer__load_buffer_state 63b8e80941Smrg#endif 64b8e80941Smrg 65b8e80941Smrg#ifdef yy_switch_to_buffer 66b8e80941Smrg#define _mesa_glsl_lexer__switch_to_buffer_ALREADY_DEFINED 67b8e80941Smrg#else 68b8e80941Smrg#define yy_switch_to_buffer _mesa_glsl_lexer__switch_to_buffer 69b8e80941Smrg#endif 70b8e80941Smrg 71b8e80941Smrg#ifdef yypush_buffer_state 72b8e80941Smrg#define _mesa_glsl_lexer_push_buffer_state_ALREADY_DEFINED 73b8e80941Smrg#else 74b8e80941Smrg#define yypush_buffer_state _mesa_glsl_lexer_push_buffer_state 75b8e80941Smrg#endif 76b8e80941Smrg 77b8e80941Smrg#ifdef yypop_buffer_state 78b8e80941Smrg#define _mesa_glsl_lexer_pop_buffer_state_ALREADY_DEFINED 79b8e80941Smrg#else 80b8e80941Smrg#define yypop_buffer_state _mesa_glsl_lexer_pop_buffer_state 81b8e80941Smrg#endif 82b8e80941Smrg 83b8e80941Smrg#ifdef yyensure_buffer_stack 84b8e80941Smrg#define _mesa_glsl_lexer_ensure_buffer_stack_ALREADY_DEFINED 85b8e80941Smrg#else 86b8e80941Smrg#define yyensure_buffer_stack _mesa_glsl_lexer_ensure_buffer_stack 87b8e80941Smrg#endif 88b8e80941Smrg 89b8e80941Smrg#ifdef yylex 90b8e80941Smrg#define _mesa_glsl_lexer_lex_ALREADY_DEFINED 91b8e80941Smrg#else 92b8e80941Smrg#define yylex _mesa_glsl_lexer_lex 93b8e80941Smrg#endif 94b8e80941Smrg 95b8e80941Smrg#ifdef yyrestart 96b8e80941Smrg#define _mesa_glsl_lexer_restart_ALREADY_DEFINED 97b8e80941Smrg#else 98b8e80941Smrg#define yyrestart _mesa_glsl_lexer_restart 99b8e80941Smrg#endif 100b8e80941Smrg 101b8e80941Smrg#ifdef yylex_init 102b8e80941Smrg#define _mesa_glsl_lexer_lex_init_ALREADY_DEFINED 103b8e80941Smrg#else 104b8e80941Smrg#define yylex_init _mesa_glsl_lexer_lex_init 105b8e80941Smrg#endif 106b8e80941Smrg 107b8e80941Smrg#ifdef yylex_init_extra 108b8e80941Smrg#define _mesa_glsl_lexer_lex_init_extra_ALREADY_DEFINED 109b8e80941Smrg#else 110b8e80941Smrg#define yylex_init_extra _mesa_glsl_lexer_lex_init_extra 111b8e80941Smrg#endif 112b8e80941Smrg 113b8e80941Smrg#ifdef yylex_destroy 114b8e80941Smrg#define _mesa_glsl_lexer_lex_destroy_ALREADY_DEFINED 115b8e80941Smrg#else 116b8e80941Smrg#define yylex_destroy _mesa_glsl_lexer_lex_destroy 117b8e80941Smrg#endif 118b8e80941Smrg 119b8e80941Smrg#ifdef yyget_debug 120b8e80941Smrg#define _mesa_glsl_lexer_get_debug_ALREADY_DEFINED 121b8e80941Smrg#else 122b8e80941Smrg#define yyget_debug _mesa_glsl_lexer_get_debug 123b8e80941Smrg#endif 124b8e80941Smrg 125b8e80941Smrg#ifdef yyset_debug 126b8e80941Smrg#define _mesa_glsl_lexer_set_debug_ALREADY_DEFINED 127b8e80941Smrg#else 128b8e80941Smrg#define yyset_debug _mesa_glsl_lexer_set_debug 129b8e80941Smrg#endif 130b8e80941Smrg 131b8e80941Smrg#ifdef yyget_extra 132b8e80941Smrg#define _mesa_glsl_lexer_get_extra_ALREADY_DEFINED 133b8e80941Smrg#else 134b8e80941Smrg#define yyget_extra _mesa_glsl_lexer_get_extra 135b8e80941Smrg#endif 136b8e80941Smrg 137b8e80941Smrg#ifdef yyset_extra 138b8e80941Smrg#define _mesa_glsl_lexer_set_extra_ALREADY_DEFINED 139b8e80941Smrg#else 140b8e80941Smrg#define yyset_extra _mesa_glsl_lexer_set_extra 141b8e80941Smrg#endif 142b8e80941Smrg 143b8e80941Smrg#ifdef yyget_in 144b8e80941Smrg#define _mesa_glsl_lexer_get_in_ALREADY_DEFINED 145b8e80941Smrg#else 146b8e80941Smrg#define yyget_in _mesa_glsl_lexer_get_in 147b8e80941Smrg#endif 148b8e80941Smrg 149b8e80941Smrg#ifdef yyset_in 150b8e80941Smrg#define _mesa_glsl_lexer_set_in_ALREADY_DEFINED 151b8e80941Smrg#else 152b8e80941Smrg#define yyset_in _mesa_glsl_lexer_set_in 153b8e80941Smrg#endif 154b8e80941Smrg 155b8e80941Smrg#ifdef yyget_out 156b8e80941Smrg#define _mesa_glsl_lexer_get_out_ALREADY_DEFINED 157b8e80941Smrg#else 158b8e80941Smrg#define yyget_out _mesa_glsl_lexer_get_out 159b8e80941Smrg#endif 160b8e80941Smrg 161b8e80941Smrg#ifdef yyset_out 162b8e80941Smrg#define _mesa_glsl_lexer_set_out_ALREADY_DEFINED 163b8e80941Smrg#else 164b8e80941Smrg#define yyset_out _mesa_glsl_lexer_set_out 165b8e80941Smrg#endif 166b8e80941Smrg 167b8e80941Smrg#ifdef yyget_leng 168b8e80941Smrg#define _mesa_glsl_lexer_get_leng_ALREADY_DEFINED 169b8e80941Smrg#else 170b8e80941Smrg#define yyget_leng _mesa_glsl_lexer_get_leng 171b8e80941Smrg#endif 172b8e80941Smrg 173b8e80941Smrg#ifdef yyget_text 174b8e80941Smrg#define _mesa_glsl_lexer_get_text_ALREADY_DEFINED 175b8e80941Smrg#else 176b8e80941Smrg#define yyget_text _mesa_glsl_lexer_get_text 177b8e80941Smrg#endif 178b8e80941Smrg 179b8e80941Smrg#ifdef yyget_lineno 180b8e80941Smrg#define _mesa_glsl_lexer_get_lineno_ALREADY_DEFINED 181b8e80941Smrg#else 182b8e80941Smrg#define yyget_lineno _mesa_glsl_lexer_get_lineno 183b8e80941Smrg#endif 184b8e80941Smrg 185b8e80941Smrg#ifdef yyset_lineno 186b8e80941Smrg#define _mesa_glsl_lexer_set_lineno_ALREADY_DEFINED 187b8e80941Smrg#else 188b8e80941Smrg#define yyset_lineno _mesa_glsl_lexer_set_lineno 189b8e80941Smrg#endif 190b8e80941Smrg 191b8e80941Smrg#ifdef yyget_column 192b8e80941Smrg#define _mesa_glsl_lexer_get_column_ALREADY_DEFINED 193b8e80941Smrg#else 194b8e80941Smrg#define yyget_column _mesa_glsl_lexer_get_column 195b8e80941Smrg#endif 196b8e80941Smrg 197b8e80941Smrg#ifdef yyset_column 198b8e80941Smrg#define _mesa_glsl_lexer_set_column_ALREADY_DEFINED 199b8e80941Smrg#else 200b8e80941Smrg#define yyset_column _mesa_glsl_lexer_set_column 201b8e80941Smrg#endif 202b8e80941Smrg 203b8e80941Smrg#ifdef yywrap 204b8e80941Smrg#define _mesa_glsl_lexer_wrap_ALREADY_DEFINED 205b8e80941Smrg#else 206b8e80941Smrg#define yywrap _mesa_glsl_lexer_wrap 207b8e80941Smrg#endif 208b8e80941Smrg 209b8e80941Smrg#ifdef yyget_lval 210b8e80941Smrg#define _mesa_glsl_lexer_get_lval_ALREADY_DEFINED 211b8e80941Smrg#else 212b8e80941Smrg#define yyget_lval _mesa_glsl_lexer_get_lval 213b8e80941Smrg#endif 214b8e80941Smrg 215b8e80941Smrg#ifdef yyset_lval 216b8e80941Smrg#define _mesa_glsl_lexer_set_lval_ALREADY_DEFINED 217b8e80941Smrg#else 218b8e80941Smrg#define yyset_lval _mesa_glsl_lexer_set_lval 219b8e80941Smrg#endif 220b8e80941Smrg 221b8e80941Smrg#ifdef yyget_lloc 222b8e80941Smrg#define _mesa_glsl_lexer_get_lloc_ALREADY_DEFINED 223b8e80941Smrg#else 224b8e80941Smrg#define yyget_lloc _mesa_glsl_lexer_get_lloc 225b8e80941Smrg#endif 226b8e80941Smrg 227b8e80941Smrg#ifdef yyset_lloc 228b8e80941Smrg#define _mesa_glsl_lexer_set_lloc_ALREADY_DEFINED 229b8e80941Smrg#else 230b8e80941Smrg#define yyset_lloc _mesa_glsl_lexer_set_lloc 231b8e80941Smrg#endif 232b8e80941Smrg 233b8e80941Smrg#ifdef yyalloc 234b8e80941Smrg#define _mesa_glsl_lexer_alloc_ALREADY_DEFINED 235b8e80941Smrg#else 236b8e80941Smrg#define yyalloc _mesa_glsl_lexer_alloc 237b8e80941Smrg#endif 238b8e80941Smrg 239b8e80941Smrg#ifdef yyrealloc 240b8e80941Smrg#define _mesa_glsl_lexer_realloc_ALREADY_DEFINED 241b8e80941Smrg#else 242b8e80941Smrg#define yyrealloc _mesa_glsl_lexer_realloc 243b8e80941Smrg#endif 244b8e80941Smrg 245b8e80941Smrg#ifdef yyfree 246b8e80941Smrg#define _mesa_glsl_lexer_free_ALREADY_DEFINED 247b8e80941Smrg#else 248b8e80941Smrg#define yyfree _mesa_glsl_lexer_free 249b8e80941Smrg#endif 250b8e80941Smrg 251b8e80941Smrg/* First, we deal with platform-specific or compiler-specific issues. */ 252b8e80941Smrg 253b8e80941Smrg/* begin standard C headers. */ 254b8e80941Smrg#ifdef _LIBC 255b8e80941Smrg#include "namespace.h" 256b8e80941Smrg#endif 257b8e80941Smrg#include <stdio.h> 258b8e80941Smrg#include <string.h> 259b8e80941Smrg#include <errno.h> 260b8e80941Smrg#include <stdlib.h> 261b8e80941Smrg 262b8e80941Smrg/* end standard C headers. */ 263b8e80941Smrg 264b8e80941Smrg/* $NetBSD: glsl_lexer.cpp,v 1.1.1.1 2021/07/11 20:36:33 mrg Exp $ */ 265b8e80941Smrg 266b8e80941Smrg/* flex integer type definitions */ 267b8e80941Smrg 268b8e80941Smrg#ifndef FLEXINT_H 269b8e80941Smrg#define FLEXINT_H 270b8e80941Smrg 271b8e80941Smrg/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ 272b8e80941Smrg 273b8e80941Smrg#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 274b8e80941Smrg 275b8e80941Smrg/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, 276b8e80941Smrg * if you want the limit (max/min) macros for int types. 277b8e80941Smrg */ 278b8e80941Smrg#ifndef __STDC_LIMIT_MACROS 279b8e80941Smrg#define __STDC_LIMIT_MACROS 1 280b8e80941Smrg#endif 281b8e80941Smrg 282b8e80941Smrg#include <inttypes.h> 283b8e80941Smrgtypedef int8_t flex_int8_t; 284b8e80941Smrgtypedef uint8_t flex_uint8_t; 285b8e80941Smrgtypedef int16_t flex_int16_t; 286b8e80941Smrgtypedef uint16_t flex_uint16_t; 287b8e80941Smrgtypedef int32_t flex_int32_t; 288b8e80941Smrgtypedef uint32_t flex_uint32_t; 289b8e80941Smrg#else 290b8e80941Smrgtypedef signed char flex_int8_t; 291b8e80941Smrgtypedef short int flex_int16_t; 292b8e80941Smrgtypedef int flex_int32_t; 293b8e80941Smrgtypedef unsigned char flex_uint8_t; 294b8e80941Smrgtypedef unsigned short int flex_uint16_t; 295b8e80941Smrgtypedef unsigned int flex_uint32_t; 296b8e80941Smrg 297b8e80941Smrg/* Limits of integral types. */ 298b8e80941Smrg#ifndef INT8_MIN 299b8e80941Smrg#define INT8_MIN (-128) 300b8e80941Smrg#endif 301b8e80941Smrg#ifndef INT16_MIN 302b8e80941Smrg#define INT16_MIN (-32767-1) 303b8e80941Smrg#endif 304b8e80941Smrg#ifndef INT32_MIN 305b8e80941Smrg#define INT32_MIN (-2147483647-1) 306b8e80941Smrg#endif 307b8e80941Smrg#ifndef INT8_MAX 308b8e80941Smrg#define INT8_MAX (127) 309b8e80941Smrg#endif 310b8e80941Smrg#ifndef INT16_MAX 311b8e80941Smrg#define INT16_MAX (32767) 312b8e80941Smrg#endif 313b8e80941Smrg#ifndef INT32_MAX 314b8e80941Smrg#define INT32_MAX (2147483647) 315b8e80941Smrg#endif 316b8e80941Smrg#ifndef UINT8_MAX 317b8e80941Smrg#define UINT8_MAX (255U) 318b8e80941Smrg#endif 319b8e80941Smrg#ifndef UINT16_MAX 320b8e80941Smrg#define UINT16_MAX (65535U) 321b8e80941Smrg#endif 322b8e80941Smrg#ifndef UINT32_MAX 323b8e80941Smrg#define UINT32_MAX (4294967295U) 324b8e80941Smrg#endif 325b8e80941Smrg 326b8e80941Smrg#ifndef SIZE_MAX 327b8e80941Smrg#define SIZE_MAX (~(size_t)0) 328b8e80941Smrg#endif 329b8e80941Smrg 330b8e80941Smrg#endif /* ! C99 */ 331b8e80941Smrg 332b8e80941Smrg#endif /* ! FLEXINT_H */ 333b8e80941Smrg 334b8e80941Smrg/* begin standard C++ headers. */ 335b8e80941Smrg 336b8e80941Smrg/* TODO: this is always defined, so inline it */ 337b8e80941Smrg#define yyconst const 338b8e80941Smrg 339b8e80941Smrg#if defined(__GNUC__) && __GNUC__ >= 3 340b8e80941Smrg#define yynoreturn __attribute__((__noreturn__)) 341b8e80941Smrg#else 342b8e80941Smrg#define yynoreturn 343b8e80941Smrg#endif 344b8e80941Smrg 345b8e80941Smrg/* Returned upon end-of-file. */ 346b8e80941Smrg#define YY_NULL 0 347b8e80941Smrg 348b8e80941Smrg/* Promotes a possibly negative, possibly signed char to an 349b8e80941Smrg * integer in range [0..255] for use as an array index. 350b8e80941Smrg */ 351b8e80941Smrg#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) 352b8e80941Smrg 353b8e80941Smrg/* An opaque pointer. */ 354b8e80941Smrg#ifndef YY_TYPEDEF_YY_SCANNER_T 355b8e80941Smrg#define YY_TYPEDEF_YY_SCANNER_T 356b8e80941Smrgtypedef void* yyscan_t; 357b8e80941Smrg#endif 358b8e80941Smrg 359b8e80941Smrg/* For convenience, these vars (plus the bison vars far below) 360b8e80941Smrg are macros in the reentrant scanner. */ 361b8e80941Smrg#define yyin yyg->yyin_r 362b8e80941Smrg#define yyout yyg->yyout_r 363b8e80941Smrg#define yyextra yyg->yyextra_r 364b8e80941Smrg#define yyleng yyg->yyleng_r 365b8e80941Smrg#define yytext yyg->yytext_r 366b8e80941Smrg#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) 367b8e80941Smrg#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) 368b8e80941Smrg#define yy_flex_debug yyg->yy_flex_debug_r 369b8e80941Smrg 370b8e80941Smrg/* Enter a start condition. This macro really ought to take a parameter, 371b8e80941Smrg * but we do it the disgusting crufty way forced on us by the ()-less 372b8e80941Smrg * definition of BEGIN. 373b8e80941Smrg */ 374b8e80941Smrg#define BEGIN yyg->yy_start = 1 + 2 * 375b8e80941Smrg/* Translate the current start state into a value that can be later handed 376b8e80941Smrg * to BEGIN to return to the state. The YYSTATE alias is for lex 377b8e80941Smrg * compatibility. 378b8e80941Smrg */ 379b8e80941Smrg#define YY_START ((yyg->yy_start - 1) / 2) 380b8e80941Smrg#define YYSTATE YY_START 381b8e80941Smrg/* Action number for EOF rule of a given start state. */ 382b8e80941Smrg#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 383b8e80941Smrg/* Special action meaning "start processing a new file". */ 384b8e80941Smrg#define YY_NEW_FILE yyrestart( yyin , yyscanner ) 385b8e80941Smrg#define YY_END_OF_BUFFER_CHAR 0 386b8e80941Smrg 387b8e80941Smrg/* Size of default input buffer. */ 388b8e80941Smrg#ifndef YY_BUF_SIZE 389b8e80941Smrg#ifdef __ia64__ 390b8e80941Smrg/* On IA-64, the buffer size is 16k, not 8k. 391b8e80941Smrg * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. 392b8e80941Smrg * Ditto for the __ia64__ case accordingly. 393b8e80941Smrg */ 394b8e80941Smrg#define YY_BUF_SIZE 32768 395b8e80941Smrg#else 396b8e80941Smrg#define YY_BUF_SIZE 16384 397b8e80941Smrg#endif /* __ia64__ */ 398b8e80941Smrg#endif 399b8e80941Smrg 400b8e80941Smrg/* The state buf must be large enough to hold one state per character in the main buffer. 401b8e80941Smrg */ 402b8e80941Smrg#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) 403b8e80941Smrg 404b8e80941Smrg#ifndef YY_TYPEDEF_YY_BUFFER_STATE 405b8e80941Smrg#define YY_TYPEDEF_YY_BUFFER_STATE 406b8e80941Smrgtypedef struct yy_buffer_state *YY_BUFFER_STATE; 407b8e80941Smrg#endif 408b8e80941Smrg 409b8e80941Smrg#ifndef YY_TYPEDEF_YY_SIZE_T 410b8e80941Smrg#define YY_TYPEDEF_YY_SIZE_T 411b8e80941Smrgtypedef size_t yy_size_t; 412b8e80941Smrg#endif 413b8e80941Smrg 414b8e80941Smrg#define EOB_ACT_CONTINUE_SCAN 0 415b8e80941Smrg#define EOB_ACT_END_OF_FILE 1 416b8e80941Smrg#define EOB_ACT_LAST_MATCH 2 417b8e80941Smrg 418b8e80941Smrg #define YY_LESS_LINENO(n) 419b8e80941Smrg #define YY_LINENO_REWIND_TO(ptr) 420b8e80941Smrg 421b8e80941Smrg/* Return all but the first "n" matched characters back to the input stream. */ 422b8e80941Smrg#define yyless(n) \ 423b8e80941Smrg do \ 424b8e80941Smrg { \ 425b8e80941Smrg /* Undo effects of setting up yytext. */ \ 426b8e80941Smrg int yyless_macro_arg = (n); \ 427b8e80941Smrg YY_LESS_LINENO(yyless_macro_arg);\ 428b8e80941Smrg *yy_cp = yyg->yy_hold_char; \ 429b8e80941Smrg YY_RESTORE_YY_MORE_OFFSET \ 430b8e80941Smrg yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ 431b8e80941Smrg YY_DO_BEFORE_ACTION; /* set up yytext again */ \ 432b8e80941Smrg } \ 433b8e80941Smrg while ( 0 ) 434b8e80941Smrg#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) 435b8e80941Smrg 436b8e80941Smrg#ifndef YY_STRUCT_YY_BUFFER_STATE 437b8e80941Smrg#define YY_STRUCT_YY_BUFFER_STATE 438b8e80941Smrgstruct yy_buffer_state 439b8e80941Smrg { 440b8e80941Smrg FILE *yy_input_file; 441b8e80941Smrg 442b8e80941Smrg char *yy_ch_buf; /* input buffer */ 443b8e80941Smrg char *yy_buf_pos; /* current position in input buffer */ 444b8e80941Smrg 445b8e80941Smrg /* Size of input buffer in bytes, not including room for EOB 446b8e80941Smrg * characters. 447b8e80941Smrg */ 448b8e80941Smrg size_t yy_buf_size; 449b8e80941Smrg 450b8e80941Smrg /* Number of characters read into yy_ch_buf, not including EOB 451b8e80941Smrg * characters. 452b8e80941Smrg */ 453b8e80941Smrg size_t yy_n_chars; 454b8e80941Smrg 455b8e80941Smrg /* Whether we "own" the buffer - i.e., we know we created it, 456b8e80941Smrg * and can realloc() it to grow it, and should free() it to 457b8e80941Smrg * delete it. 458b8e80941Smrg */ 459b8e80941Smrg int yy_is_our_buffer; 460b8e80941Smrg 461b8e80941Smrg /* Whether this is an "interactive" input source; if so, and 462b8e80941Smrg * if we're using stdio for input, then we want to use getc() 463b8e80941Smrg * instead of fread(), to make sure we stop fetching input after 464b8e80941Smrg * each newline. 465b8e80941Smrg */ 466b8e80941Smrg int yy_is_interactive; 467b8e80941Smrg 468b8e80941Smrg /* Whether we're considered to be at the beginning of a line. 469b8e80941Smrg * If so, '^' rules will be active on the next match, otherwise 470b8e80941Smrg * not. 471b8e80941Smrg */ 472b8e80941Smrg int yy_at_bol; 473b8e80941Smrg 474b8e80941Smrg int yy_bs_lineno; /**< The line count. */ 475b8e80941Smrg int yy_bs_column; /**< The column count. */ 476b8e80941Smrg 477b8e80941Smrg /* Whether to try to fill the input buffer when we reach the 478b8e80941Smrg * end of it. 479b8e80941Smrg */ 480b8e80941Smrg int yy_fill_buffer; 481b8e80941Smrg 482b8e80941Smrg int yy_buffer_status; 483b8e80941Smrg 484b8e80941Smrg#define YY_BUFFER_NEW 0 485b8e80941Smrg#define YY_BUFFER_NORMAL 1 486b8e80941Smrg /* When an EOF's been seen but there's still some text to process 487b8e80941Smrg * then we mark the buffer as YY_EOF_PENDING, to indicate that we 488b8e80941Smrg * shouldn't try reading from the input source any more. We might 489b8e80941Smrg * still have a bunch of tokens to match, though, because of 490b8e80941Smrg * possible backing-up. 491b8e80941Smrg * 492b8e80941Smrg * When we actually see the EOF, we change the status to "new" 493b8e80941Smrg * (via yyrestart()), so that the user can continue scanning by 494b8e80941Smrg * just pointing yyin at a new input file. 495b8e80941Smrg */ 496b8e80941Smrg#define YY_BUFFER_EOF_PENDING 2 497b8e80941Smrg 498b8e80941Smrg }; 499b8e80941Smrg#endif /* !YY_STRUCT_YY_BUFFER_STATE */ 500b8e80941Smrg 501b8e80941Smrg/* We provide macros for accessing buffer states in case in the 502b8e80941Smrg * future we want to put the buffer states in a more general 503b8e80941Smrg * "scanner state". 504b8e80941Smrg * 505b8e80941Smrg * Returns the top of the stack, or NULL. 506b8e80941Smrg */ 507b8e80941Smrg#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ 508b8e80941Smrg ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ 509b8e80941Smrg : NULL) 510b8e80941Smrg/* Same as previous macro, but useful when we know that the buffer stack is not 511b8e80941Smrg * NULL or when we need an lvalue. For internal use only. 512b8e80941Smrg */ 513b8e80941Smrg#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] 514b8e80941Smrg 515b8e80941Smrgvoid yyrestart ( FILE *input_file , yyscan_t yyscanner ); 516b8e80941Smrgvoid yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); 517b8e80941SmrgYY_BUFFER_STATE yy_create_buffer ( FILE *file, yy_size_t size , yyscan_t yyscanner ); 518b8e80941Smrgvoid yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); 519b8e80941Smrgvoid yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); 520b8e80941Smrgvoid yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); 521b8e80941Smrgvoid yypop_buffer_state ( yyscan_t yyscanner ); 522b8e80941Smrg 523b8e80941Smrgstatic void yyensure_buffer_stack ( yyscan_t yyscanner ); 524b8e80941Smrgstatic void yy_load_buffer_state ( yyscan_t yyscanner ); 525b8e80941Smrgstatic void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); 526b8e80941Smrg#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) 527b8e80941Smrg 528b8e80941SmrgYY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); 529b8e80941SmrgYY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); 530b8e80941SmrgYY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len , yyscan_t yyscanner ); 531b8e80941Smrg 532b8e80941Smrgvoid *yyalloc ( yy_size_t , yyscan_t yyscanner ); 533b8e80941Smrgvoid *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); 534b8e80941Smrgvoid yyfree ( void * , yyscan_t yyscanner ); 535b8e80941Smrg 536b8e80941Smrg#define yy_new_buffer yy_create_buffer 537b8e80941Smrg#define yy_set_interactive(is_interactive) \ 538b8e80941Smrg { \ 539b8e80941Smrg if ( ! YY_CURRENT_BUFFER ){ \ 540b8e80941Smrg yyensure_buffer_stack (yyscanner); \ 541b8e80941Smrg YY_CURRENT_BUFFER_LVALUE = \ 542b8e80941Smrg yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ 543b8e80941Smrg } \ 544b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ 545b8e80941Smrg } 546b8e80941Smrg#define yy_set_bol(at_bol) \ 547b8e80941Smrg { \ 548b8e80941Smrg if ( ! YY_CURRENT_BUFFER ){\ 549b8e80941Smrg yyensure_buffer_stack (yyscanner); \ 550b8e80941Smrg YY_CURRENT_BUFFER_LVALUE = \ 551b8e80941Smrg yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ 552b8e80941Smrg } \ 553b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ 554b8e80941Smrg } 555b8e80941Smrg#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) 556b8e80941Smrg 557b8e80941Smrg/* Begin user sect3 */ 558b8e80941Smrg 559b8e80941Smrg#define _mesa_glsl_lexer_wrap(yyscanner) (/*CONSTCOND*/1) 560b8e80941Smrg#define YY_SKIP_YYWRAP 561b8e80941Smrgtypedef flex_uint8_t YY_CHAR; 562b8e80941Smrg 563b8e80941Smrgtypedef int yy_state_type; 564b8e80941Smrg 565b8e80941Smrg#define yytext_ptr yytext_r 566b8e80941Smrg 567b8e80941Smrgstatic yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); 568b8e80941Smrgstatic yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); 569b8e80941Smrgstatic int yy_get_next_buffer ( yyscan_t yyscanner ); 570b8e80941Smrgstatic void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); 571b8e80941Smrg 572b8e80941Smrg/* Done after the current pattern has been matched and before the 573b8e80941Smrg * corresponding action - sets up yytext. 574b8e80941Smrg */ 575b8e80941Smrg#define YY_DO_BEFORE_ACTION \ 576b8e80941Smrg yyg->yytext_ptr = yy_bp; \ 577b8e80941Smrg yyleng = (yy_size_t)(yy_cp - yy_bp); \ 578b8e80941Smrg yyg->yy_hold_char = *yy_cp; \ 579b8e80941Smrg *yy_cp = '\0'; \ 580b8e80941Smrg yyg->yy_c_buf_p = yy_cp; 581b8e80941Smrg#define YY_NUM_RULES 277 582b8e80941Smrg#define YY_END_OF_BUFFER 278 583b8e80941Smrg/* This struct is not used in this scanner, 584b8e80941Smrg but its presence is necessary. */ 585b8e80941Smrgstruct yy_trans_info 586b8e80941Smrg { 587b8e80941Smrg flex_int32_t yy_verify; 588b8e80941Smrg flex_int32_t yy_nxt; 589b8e80941Smrg }; 590b8e80941Smrgstatic const flex_int16_t yy_accept[1096] = 591b8e80941Smrg { 0, 592b8e80941Smrg 0, 0, 18, 18, 0, 0, 278, 276, 1, 25, 593b8e80941Smrg 276, 276, 276, 276, 276, 276, 275, 276, 182, 180, 594b8e80941Smrg 276, 276, 276, 274, 276, 274, 274, 274, 274, 274, 595b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 596b8e80941Smrg 274, 274, 274, 274, 274, 276, 1, 276, 24, 18, 597b8e80941Smrg 23, 24, 22, 21, 19, 20, 16, 15, 1, 164, 598b8e80941Smrg 173, 165, 176, 170, 159, 172, 160, 179, 184, 171, 599b8e80941Smrg 185, 182, 0, 0, 182, 182, 0, 182, 180, 180, 600b8e80941Smrg 180, 180, 168, 161, 163, 162, 169, 274, 177, 167, 601b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 602b8e80941Smrg 603b8e80941Smrg 274, 274, 274, 274, 34, 274, 274, 274, 274, 274, 604b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 38, 605b8e80941Smrg 274, 274, 65, 274, 274, 274, 274, 274, 274, 274, 606b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 607b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 608b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 178, 166, 609b8e80941Smrg 1, 0, 0, 2, 0, 0, 0, 0, 18, 17, 610b8e80941Smrg 21, 20, 0, 184, 0, 0, 183, 0, 185, 0, 611b8e80941Smrg 0, 0, 186, 181, 174, 175, 274, 193, 274, 274, 612b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 613b8e80941Smrg 614b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 615b8e80941Smrg 274, 274, 274, 37, 274, 274, 274, 274, 274, 274, 616b8e80941Smrg 274, 274, 274, 274, 274, 30, 274, 274, 274, 274, 617b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 66, 274, 274, 618b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 619b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 620b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 621b8e80941Smrg 274, 274, 274, 274, 274, 0, 0, 0, 0, 17, 622b8e80941Smrg 0, 184, 188, 0, 183, 0, 0, 0, 185, 189, 623b8e80941Smrg 186, 0, 0, 181, 181, 181, 274, 274, 274, 28, 624b8e80941Smrg 625b8e80941Smrg 274, 274, 274, 251, 244, 274, 274, 274, 274, 274, 626b8e80941Smrg 274, 274, 274, 274, 274, 274, 36, 196, 274, 274, 627b8e80941Smrg 274, 274, 73, 274, 274, 201, 214, 274, 274, 274, 628b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 629b8e80941Smrg 274, 211, 247, 53, 54, 55, 274, 274, 274, 274, 630b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 631b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 632b8e80941Smrg 274, 274, 199, 191, 274, 274, 274, 31, 274, 274, 633b8e80941Smrg 274, 274, 274, 274, 274, 50, 51, 52, 157, 274, 634b8e80941Smrg 274, 274, 0, 0, 0, 0, 0, 183, 187, 190, 635b8e80941Smrg 636b8e80941Smrg 274, 274, 274, 32, 274, 41, 42, 43, 274, 194, 637b8e80941Smrg 274, 274, 27, 274, 274, 274, 225, 226, 227, 274, 638b8e80941Smrg 222, 223, 224, 274, 192, 274, 215, 29, 237, 238, 639b8e80941Smrg 239, 249, 219, 220, 221, 274, 274, 274, 274, 67, 640b8e80941Smrg 217, 274, 274, 274, 274, 44, 45, 46, 274, 274, 641b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 76, 642b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 212, 643b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 644b8e80941Smrg 274, 274, 274, 195, 274, 274, 246, 47, 48, 49, 645b8e80941Smrg 274, 274, 35, 274, 0, 0, 0, 0, 254, 274, 646b8e80941Smrg 647b8e80941Smrg 274, 69, 274, 274, 252, 274, 274, 274, 274, 274, 648b8e80941Smrg 274, 213, 208, 257, 274, 274, 274, 274, 274, 274, 649b8e80941Smrg 274, 204, 274, 274, 274, 274, 158, 56, 57, 58, 650b8e80941Smrg 59, 60, 61, 62, 63, 64, 274, 274, 274, 274, 651b8e80941Smrg 218, 200, 274, 274, 206, 274, 274, 274, 40, 274, 652b8e80941Smrg 264, 155, 243, 74, 207, 156, 274, 255, 202, 274, 653b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 654b8e80941Smrg 0, 0, 0, 0, 274, 274, 274, 274, 274, 203, 655b8e80941Smrg 39, 228, 229, 230, 231, 232, 233, 234, 235, 236, 656b8e80941Smrg 274, 267, 268, 269, 274, 274, 274, 274, 274, 112, 657b8e80941Smrg 658b8e80941Smrg 113, 114, 274, 274, 266, 274, 274, 274, 248, 274, 659b8e80941Smrg 274, 274, 274, 111, 274, 274, 274, 274, 274, 274, 660b8e80941Smrg 274, 274, 197, 271, 272, 273, 274, 274, 274, 274, 661b8e80941Smrg 274, 274, 68, 274, 274, 70, 274, 274, 0, 0, 662b8e80941Smrg 0, 0, 0, 274, 274, 71, 149, 33, 209, 123, 663b8e80941Smrg 124, 125, 274, 274, 274, 274, 274, 274, 274, 274, 664b8e80941Smrg 274, 274, 274, 274, 274, 274, 205, 274, 274, 274, 665b8e80941Smrg 152, 263, 151, 274, 274, 274, 274, 274, 274, 274, 666b8e80941Smrg 274, 198, 134, 135, 136, 274, 274, 270, 216, 274, 667b8e80941Smrg 150, 274, 0, 0, 6, 0, 0, 0, 14, 3, 668b8e80941Smrg 669b8e80941Smrg 274, 26, 274, 274, 274, 274, 274, 274, 274, 274, 670b8e80941Smrg 274, 121, 274, 274, 274, 116, 210, 72, 274, 274, 671b8e80941Smrg 274, 274, 274, 245, 274, 253, 250, 258, 77, 78, 672b8e80941Smrg 79, 274, 274, 274, 274, 274, 274, 274, 274, 274, 673b8e80941Smrg 274, 274, 274, 274, 274, 274, 153, 0, 0, 0, 674b8e80941Smrg 0, 0, 0, 0, 0, 274, 274, 274, 132, 274, 675b8e80941Smrg 274, 127, 274, 274, 274, 274, 274, 274, 274, 274, 676b8e80941Smrg 88, 89, 90, 274, 274, 274, 274, 274, 274, 274, 677b8e80941Smrg 274, 274, 274, 274, 274, 274, 265, 274, 274, 143, 678b8e80941Smrg 274, 274, 138, 94, 95, 96, 274, 274, 4, 0, 679b8e80941Smrg 680b8e80941Smrg 5, 0, 0, 0, 0, 0, 0, 0, 154, 274, 681b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 115, 682b8e80941Smrg 274, 117, 274, 274, 274, 274, 274, 274, 274, 274, 683b8e80941Smrg 274, 274, 274, 100, 274, 274, 274, 274, 80, 274, 684b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 685b8e80941Smrg 274, 274, 0, 0, 0, 0, 0, 274, 274, 274, 686b8e80941Smrg 126, 128, 274, 118, 274, 119, 274, 274, 274, 274, 687b8e80941Smrg 274, 101, 274, 274, 91, 274, 274, 274, 274, 274, 688b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 689b8e80941Smrg 137, 139, 274, 274, 274, 102, 274, 274, 97, 0, 690b8e80941Smrg 691b8e80941Smrg 0, 0, 0, 129, 130, 274, 274, 274, 145, 274, 692b8e80941Smrg 274, 146, 274, 274, 274, 274, 274, 274, 274, 75, 693b8e80941Smrg 274, 274, 274, 274, 240, 274, 241, 256, 274, 274, 694b8e80941Smrg 274, 140, 141, 274, 274, 274, 274, 274, 274, 274, 695b8e80941Smrg 274, 0, 0, 0, 0, 274, 274, 274, 274, 122, 696b8e80941Smrg 120, 274, 274, 274, 259, 261, 274, 81, 274, 82, 697b8e80941Smrg 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 698b8e80941Smrg 274, 260, 262, 274, 0, 0, 0, 0, 0, 133, 699b8e80941Smrg 131, 274, 274, 92, 93, 274, 274, 274, 83, 274, 700b8e80941Smrg 274, 274, 84, 274, 274, 274, 144, 142, 98, 99, 701b8e80941Smrg 702b8e80941Smrg 274, 274, 0, 0, 0, 0, 0, 274, 274, 274, 703b8e80941Smrg 274, 274, 274, 103, 274, 106, 274, 274, 274, 274, 704b8e80941Smrg 0, 0, 0, 0, 0, 0, 274, 274, 104, 107, 705b8e80941Smrg 274, 274, 274, 274, 85, 274, 105, 108, 0, 0, 706b8e80941Smrg 0, 7, 0, 0, 0, 0, 147, 148, 274, 274, 707b8e80941Smrg 274, 274, 110, 0, 0, 8, 0, 0, 0, 0, 708b8e80941Smrg 274, 274, 242, 274, 0, 0, 0, 0, 0, 11, 709b8e80941Smrg 86, 87, 274, 0, 0, 0, 9, 0, 12, 274, 710b8e80941Smrg 0, 0, 10, 109, 0, 0, 0, 0, 0, 0, 711b8e80941Smrg 0, 0, 0, 13, 0 712b8e80941Smrg 713b8e80941Smrg } ; 714b8e80941Smrg 715b8e80941Smrgstatic const YY_CHAR yy_ec[256] = 716b8e80941Smrg { 0, 717b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 718b8e80941Smrg 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 719b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 720b8e80941Smrg 1, 2, 5, 1, 6, 1, 7, 8, 1, 9, 721b8e80941Smrg 10, 11, 12, 1, 13, 14, 15, 16, 17, 18, 722b8e80941Smrg 19, 20, 21, 22, 21, 23, 23, 24, 1, 25, 723b8e80941Smrg 26, 27, 1, 1, 28, 29, 30, 31, 32, 33, 724b8e80941Smrg 34, 35, 35, 35, 35, 36, 37, 35, 38, 35, 725b8e80941Smrg 35, 39, 40, 41, 42, 35, 35, 43, 35, 35, 726b8e80941Smrg 1, 1, 1, 44, 45, 1, 46, 47, 48, 49, 727b8e80941Smrg 728b8e80941Smrg 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 729b8e80941Smrg 60, 61, 35, 62, 63, 64, 65, 66, 67, 68, 730b8e80941Smrg 69, 70, 1, 71, 1, 1, 1, 1, 1, 1, 731b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 732b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 733b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 734b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 735b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 736b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 737b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 738b8e80941Smrg 739b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 740b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 741b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 742b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 743b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 744b8e80941Smrg 1, 1, 1, 1, 1 745b8e80941Smrg } ; 746b8e80941Smrg 747b8e80941Smrgstatic const YY_CHAR yy_meta[72] = 748b8e80941Smrg { 0, 749b8e80941Smrg 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 750b8e80941Smrg 1, 1, 1, 4, 1, 5, 5, 5, 5, 5, 751b8e80941Smrg 5, 5, 6, 1, 1, 1, 1, 7, 7, 7, 752b8e80941Smrg 7, 8, 9, 10, 10, 11, 10, 10, 10, 10, 753b8e80941Smrg 10, 10, 12, 1, 10, 7, 7, 7, 7, 8, 754b8e80941Smrg 9, 10, 10, 10, 10, 10, 11, 10, 10, 10, 755b8e80941Smrg 10, 10, 10, 10, 10, 10, 10, 12, 10, 10, 756b8e80941Smrg 1 757b8e80941Smrg } ; 758b8e80941Smrg 759b8e80941Smrgstatic const flex_int16_t yy_base[1110] = 760b8e80941Smrg { 0, 761b8e80941Smrg 0, 70, 76, 0, 1543, 1542, 1544, 1547, 71, 1547, 762b8e80941Smrg 1517, 1516, 140, 1515, 137, 138, 136, 1514, 153, 208, 763b8e80941Smrg 135, 1513, 151, 0, 124, 117, 122, 133, 147, 141, 764b8e80941Smrg 188, 1478, 140, 198, 156, 158, 173, 1472, 197, 186, 765b8e80941Smrg 214, 213, 217, 191, 161, 206, 282, 267, 1547, 213, 766b8e80941Smrg 1547, 1521, 1547, 273, 1547, 0, 1547, 1547, 251, 1547, 767b8e80941Smrg 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 318, 1547, 768b8e80941Smrg 360, 231, 271, 288, 1547, 1499, 0, 1477, 0, 1547, 769b8e80941Smrg 1497, 1475, 1505, 1547, 1547, 1547, 1504, 0, 1547, 1547, 770b8e80941Smrg 1465, 1470, 238, 1467, 1476, 1474, 1474, 1460, 1463, 1475, 771b8e80941Smrg 772b8e80941Smrg 260, 1469, 1456, 1472, 1452, 1466, 1452, 1449, 1449, 1455, 773b8e80941Smrg 255, 269, 1449, 1460, 1445, 1451, 1455, 1456, 1485, 0, 774b8e80941Smrg 1446, 1457, 292, 1456, 1451, 1431, 132, 1435, 1449, 1439, 775b8e80941Smrg 266, 1432, 268, 1445, 1447, 279, 1426, 1434, 285, 1421, 776b8e80941Smrg 1430, 298, 300, 1435, 1430, 1433, 1421, 1424, 1464, 153, 777b8e80941Smrg 184, 268, 1433, 1420, 1433, 305, 1426, 1425, 1547, 1547, 778b8e80941Smrg 361, 368, 370, 1547, 1410, 1423, 1414, 1425, 344, 0, 779b8e80941Smrg 368, 0, 382, 1547, 1441, 1422, 390, 432, 1547, 1439, 780b8e80941Smrg 1420, 440, 373, 428, 1547, 1547, 1416, 0, 1411, 1406, 781b8e80941Smrg 1410, 1420, 1414, 1416, 357, 1399, 1399, 1411, 1402, 349, 782b8e80941Smrg 783b8e80941Smrg 1413, 1410, 1393, 1409, 1407, 1404, 1395, 1402, 1388, 1386, 784b8e80941Smrg 1399, 1384, 1401, 0, 1398, 1385, 1393, 1390, 1394, 1375, 785b8e80941Smrg 1394, 1387, 1384, 1372, 1371, 392, 1389, 1376, 1385, 1372, 786b8e80941Smrg 1379, 1369, 419, 1375, 1378, 1368, 1376, 1364, 1368, 1359, 787b8e80941Smrg 1374, 1373, 1363, 1370, 355, 1353, 1372, 1355, 1353, 1352, 788b8e80941Smrg 1363, 1352, 1347, 1345, 1347, 1358, 1343, 1345, 1342, 1354, 789b8e80941Smrg 1353, 1336, 1355, 1336, 304, 1345, 1340, 1338, 1348, 1326, 790b8e80941Smrg 447, 1345, 1347, 1335, 1327, 1326, 1330, 1342, 1325, 0, 791b8e80941Smrg 455, 446, 1547, 488, 1547, 1353, 1334, 496, 487, 1547, 792b8e80941Smrg 1547, 1351, 1332, 1547, 1346, 1324, 1314, 1325, 1324, 0, 793b8e80941Smrg 794b8e80941Smrg 1321, 1326, 468, 0, 0, 1313, 1311, 1311, 1312, 1307, 795b8e80941Smrg 1316, 1304, 1322, 471, 1310, 476, 0, 0, 1304, 1315, 796b8e80941Smrg 1314, 1314, 0, 1298, 506, 0, 0, 1300, 509, 1310, 797b8e80941Smrg 1307, 1308, 1298, 1292, 1291, 1334, 1291, 1290, 1290, 512, 798b8e80941Smrg 1285, 0, 0, 1281, 1280, 1279, 1281, 1282, 1287, 1281, 799b8e80941Smrg 1277, 1291, 1286, 1286, 1284, 1283, 1276, 1270, 1272, 1271, 800b8e80941Smrg 1274, 1274, 1280, 1265, 1268, 1263, 1272, 1277, 1264, 1261, 801b8e80941Smrg 1274, 1264, 0, 0, 1271, 1269, 1266, 1295, 1256, 1256, 802b8e80941Smrg 1262, 1252, 1260, 515, 1257, 0, 0, 0, 0, 1246, 803b8e80941Smrg 1259, 1258, 1257, 1256, 1253, 1241, 529, 503, 1547, 1547, 804b8e80941Smrg 805b8e80941Smrg 1253, 1254, 1254, 0, 1238, 0, 0, 0, 1239, 0, 806b8e80941Smrg 1248, 1238, 0, 1237, 1238, 1232, 1225, 1224, 1223, 1240, 807b8e80941Smrg 0, 0, 0, 1230, 0, 1226, 0, 0, 0, 0, 808b8e80941Smrg 0, 0, 0, 0, 0, 1239, 1236, 538, 1235, 0, 809b8e80941Smrg 0, 1239, 1232, 1228, 1224, 0, 0, 0, 1216, 522, 810b8e80941Smrg 543, 546, 1221, 1217, 1223, 1213, 1211, 1225, 1209, 0, 811b8e80941Smrg 1209, 1223, 1211, 1207, 1214, 1208, 1220, 1215, 1215, 0, 812b8e80941Smrg 1212, 1209, 1213, 1196, 1194, 1197, 1204, 1210, 1205, 1206, 813b8e80941Smrg 1203, 1232, 1189, 0, 1191, 1192, 0, 0, 0, 0, 814b8e80941Smrg 1189, 1193, 0, 1186, 1186, 1242, 1185, 1188, 0, 1196, 815b8e80941Smrg 816b8e80941Smrg 1175, 0, 1185, 1179, 0, 1172, 1172, 1186, 551, 554, 817b8e80941Smrg 557, 0, 1188, 0, 560, 564, 1202, 1201, 1200, 1165, 818b8e80941Smrg 1164, 0, 1164, 1181, 1180, 1175, 0, 0, 0, 0, 819b8e80941Smrg 0, 0, 0, 0, 0, 0, 1163, 1177, 1163, 1160, 820b8e80941Smrg 0, 0, 1166, 378, 0, 1162, 1170, 1169, 0, 1161, 821b8e80941Smrg 1153, 0, 0, 0, 0, 0, 1150, 0, 0, 1149, 822b8e80941Smrg 1161, 566, 570, 1166, 1152, 1159, 1158, 1155, 1149, 1146, 823b8e80941Smrg 1141, 588, 1157, 1142, 1136, 1136, 1150, 1134, 1147, 0, 824b8e80941Smrg 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 825b8e80941Smrg 1139, 0, 0, 0, 1164, 1163, 1162, 1127, 1126, 440, 826b8e80941Smrg 827b8e80941Smrg 575, 0, 1139, 1142, 0, 1140, 1128, 1124, 0, 1137, 828b8e80941Smrg 1134, 1133, 1122, 0, 1121, 1111, 1129, 1114, 1117, 599, 829b8e80941Smrg 1122, 1125, 0, 0, 0, 0, 1143, 1142, 1141, 1106, 830b8e80941Smrg 1105, 1105, 0, 1119, 1105, 0, 1116, 1108, 1110, 589, 831b8e80941Smrg 617, 1161, 1103, 1107, 1110, 0, 0, 0, 0, 1131, 832b8e80941Smrg 585, 0, 1107, 1110, 1094, 1102, 1092, 1113, 1102, 1098, 833b8e80941Smrg 1099, 1099, 1098, 1083, 624, 1096, 0, 1097, 1085, 1084, 834b8e80941Smrg 0, 0, 0, 1080, 1110, 1109, 1108, 1073, 1072, 1068, 835b8e80941Smrg 1076, 0, 1106, 619, 0, 1082, 1085, 0, 0, 631, 836b8e80941Smrg 0, 1062, 1070, 649, 1547, 660, 0, 671, 657, 1547, 837b8e80941Smrg 838b8e80941Smrg 1070, 0, 1066, 1065, 1086, 1075, 1073, 1073, 1060, 1075, 839b8e80941Smrg 1058, 1091, 1070, 1071, 1066, 1087, 0, 0, 1083, 1082, 840b8e80941Smrg 1081, 1046, 1045, 0, 1045, 0, 0, 0, 441, 668, 841b8e80941Smrg 1069, 1056, 1059, 1035, 1048, 1035, 1034, 1055, 1044, 1041, 842b8e80941Smrg 1033, 1051, 1050, 1049, 1014, 1013, 0, 1017, 642, 709, 843b8e80941Smrg 481, 1031, 1020, 1008, 1019, 999, 1000, 996, 1028, 1007, 844b8e80941Smrg 1001, 1021, 1002, 987, 981, 931, 928, 942, 928, 927, 845b8e80941Smrg 960, 647, 0, 936, 939, 931, 922, 930, 920, 941, 846b8e80941Smrg 930, 926, 928, 926, 926, 925, 0, 911, 910, 943, 847b8e80941Smrg 922, 919, 940, 939, 676, 0, 913, 916, 1547, 496, 848b8e80941Smrg 849b8e80941Smrg 1547, 717, 0, 738, 930, 913, 10, 100, 0, 146, 850b8e80941Smrg 189, 225, 233, 264, 295, 297, 314, 328, 346, 0, 851b8e80941Smrg 356, 0, 371, 373, 381, 406, 442, 451, 471, 456, 852b8e80941Smrg 475, 497, 491, 530, 511, 549, 548, 547, 655, 536, 853b8e80941Smrg 555, 556, 559, 559, 563, 564, 565, 568, 606, 605, 854b8e80941Smrg 613, 648, 697, 667, 637, 649, 650, 645, 647, 656, 855b8e80941Smrg 0, 0, 659, 682, 656, 702, 697, 677, 699, 684, 856b8e80941Smrg 685, 720, 701, 700, 723, 702, 707, 713, 717, 702, 857b8e80941Smrg 701, 717, 703, 706, 707, 717, 712, 703, 704, 712, 858b8e80941Smrg 0, 0, 713, 714, 715, 750, 731, 730, 753, 746, 859b8e80941Smrg 860b8e80941Smrg 731, 726, 731, 0, 0, 740, 741, 735, 0, 736, 861b8e80941Smrg 721, 0, 722, 746, 747, 732, 731, 734, 735, 0, 862b8e80941Smrg 729, 739, 731, 739, 762, 743, 0, 0, 742, 759, 863b8e80941Smrg 760, 0, 0, 761, 762, 763, 764, 749, 748, 751, 864b8e80941Smrg 752, 813, 814, 763, 759, 750, 751, 775, 776, 0, 865b8e80941Smrg 0, 755, 756, 764, 0, 0, 765, 788, 762, 790, 866b8e80941Smrg 785, 779, 766, 788, 786, 779, 768, 769, 770, 771, 867b8e80941Smrg 779, 0, 0, 780, 841, 842, 843, 776, 795, 0, 868b8e80941Smrg 0, 799, 800, 0, 0, 804, 806, 800, 0, 801, 869b8e80941Smrg 786, 810, 0, 788, 798, 821, 0, 0, 0, 0, 870b8e80941Smrg 871b8e80941Smrg 814, 815, 803, 861, 813, 815, 864, 807, 808, 800, 872b8e80941Smrg 801, 825, 828, 0, 826, 836, 810, 846, 810, 811, 873b8e80941Smrg 815, 831, 881, 883, 884, 882, 820, 821, 0, 0, 874b8e80941Smrg 840, 841, 834, 843, 0, 857, 0, 0, 852, 897, 875b8e80941Smrg 898, 1547, 900, 899, 902, 854, 0, 0, 846, 850, 876b8e80941Smrg 844, 866, 0, 852, 913, 1547, 914, 866, 867, 917, 877b8e80941Smrg 853, 855, 0, 875, 872, 877, 927, 928, 929, 1547, 878b8e80941Smrg 0, 0, 872, 887, 933, 934, 1547, 938, 1547, 867, 879b8e80941Smrg 882, 943, 1547, 0, 882, 945, 947, 948, 949, 895, 880b8e80941Smrg 898, 955, 956, 1547, 1547, 995, 1003, 1011, 1020, 1024, 881b8e80941Smrg 882b8e80941Smrg 1033, 1041, 1048, 1055, 1062, 1072, 1080, 1088, 1096 883b8e80941Smrg } ; 884b8e80941Smrg 885b8e80941Smrgstatic const flex_int16_t yy_def[1110] = 886b8e80941Smrg { 0, 887b8e80941Smrg 1095, 1, 1095, 3, 1096, 1096, 1095, 1095, 1095, 1095, 888b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 889b8e80941Smrg 1095, 1095, 1095, 1097, 1095, 1097, 1097, 1097, 1097, 1097, 890b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 891b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 892b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1098, 1095, 1095, 1095, 1095, 893b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 894b8e80941Smrg 1095, 19, 1099, 1095, 1095, 1095, 1100, 1095, 20, 1095, 895b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1095, 1095, 896b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 897b8e80941Smrg 898b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 899b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 900b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 901b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 902b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 903b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095, 904b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1101, 905b8e80941Smrg 1095, 1098, 1095, 1095, 1095, 1095, 71, 1095, 1095, 1095, 906b8e80941Smrg 1095, 1095, 1102, 1100, 1095, 1095, 1097, 1097, 1097, 1097, 907b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 908b8e80941Smrg 909b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 910b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 911b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 912b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 913b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 914b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 915b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 916b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1101, 917b8e80941Smrg 1095, 1103, 1095, 1095, 1095, 1095, 1095, 1095, 1104, 1095, 918b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 919b8e80941Smrg 920b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 921b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 922b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 923b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 924b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 925b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 926b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 927b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 928b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 929b8e80941Smrg 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1105, 1095, 1095, 930b8e80941Smrg 931b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 932b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 933b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 934b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 935b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 936b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 937b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 938b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 939b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 940b8e80941Smrg 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1097, 1097, 941b8e80941Smrg 942b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 943b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 944b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 945b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 946b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 947b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 948b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 949b8e80941Smrg 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 950b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 951b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 952b8e80941Smrg 953b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 954b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 955b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 956b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1106, 957b8e80941Smrg 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 958b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 959b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 960b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 961b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 962b8e80941Smrg 1097, 1097, 1095, 1095, 1095, 1095, 1107, 1095, 1095, 1095, 963b8e80941Smrg 964b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 965b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 966b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 967b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 968b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1108, 1095, 969b8e80941Smrg 1107, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 970b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 971b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 972b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 973b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095, 974b8e80941Smrg 975b8e80941Smrg 1095, 1095, 1109, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 976b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 977b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 978b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 979b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 980b8e80941Smrg 1097, 1097, 1109, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 981b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 982b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 983b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 984b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 985b8e80941Smrg 986b8e80941Smrg 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 987b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 988b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 989b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 990b8e80941Smrg 1097, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1097, 991b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 992b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 993b8e80941Smrg 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1097, 994b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 995b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 996b8e80941Smrg 997b8e80941Smrg 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 998b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 999b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1000b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1095, 1095, 1001b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1097, 1097, 1097, 1002b8e80941Smrg 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1003b8e80941Smrg 1097, 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1004b8e80941Smrg 1097, 1097, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1097, 1005b8e80941Smrg 1095, 1095, 1095, 1097, 1095, 1095, 1095, 1095, 1095, 1095, 1006b8e80941Smrg 1095, 1095, 1095, 1095, 0, 1095, 1095, 1095, 1095, 1095, 1007b8e80941Smrg 1008b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095 1009b8e80941Smrg } ; 1010b8e80941Smrg 1011b8e80941Smrgstatic const flex_int16_t yy_nxt[1619] = 1012b8e80941Smrg { 0, 1013b8e80941Smrg 8, 9, 10, 9, 11, 8, 12, 13, 8, 8, 1014b8e80941Smrg 14, 15, 16, 17, 18, 19, 20, 20, 20, 20, 1015b8e80941Smrg 20, 20, 20, 8, 21, 22, 23, 24, 24, 24, 1016b8e80941Smrg 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 1017b8e80941Smrg 24, 24, 24, 25, 24, 26, 27, 28, 29, 30, 1018b8e80941Smrg 31, 32, 33, 34, 24, 24, 35, 36, 37, 38, 1019b8e80941Smrg 39, 40, 41, 42, 43, 44, 45, 24, 24, 24, 1020b8e80941Smrg 46, 47, 59, 856, 59, 48, 49, 50, 51, 50, 1021b8e80941Smrg 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 1022b8e80941Smrg 52, 53, 54, 54, 54, 54, 54, 54, 54, 55, 1023b8e80941Smrg 1024b8e80941Smrg 49, 49, 49, 56, 56, 56, 56, 56, 56, 56, 1025b8e80941Smrg 56, 56, 56, 56, 56, 56, 56, 56, 56, 49, 1026b8e80941Smrg 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1027b8e80941Smrg 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1028b8e80941Smrg 56, 56, 56, 56, 56, 56, 49, 62, 65, 89, 1029b8e80941Smrg 67, 69, 69, 69, 69, 69, 69, 69, 69, 83, 1030b8e80941Smrg 84, 857, 66, 68, 91, 63, 71, 90, 72, 72, 1031b8e80941Smrg 72, 72, 72, 72, 72, 73, 86, 87, 98, 92, 1032b8e80941Smrg 93, 94, 99, 95, 74, 116, 96, 97, 75, 100, 1033b8e80941Smrg 231, 858, 101, 117, 76, 77, 102, 107, 232, 108, 1034b8e80941Smrg 1035b8e80941Smrg 103, 126, 74, 128, 104, 118, 105, 129, 109, 75, 1036b8e80941Smrg 263, 264, 106, 157, 169, 127, 169, 78, 130, 119, 1037b8e80941Smrg 77, 71, 158, 79, 79, 79, 79, 79, 79, 79, 1038b8e80941Smrg 79, 159, 131, 110, 859, 136, 154, 265, 149, 74, 1039b8e80941Smrg 155, 111, 133, 80, 112, 137, 266, 113, 120, 81, 1040b8e80941Smrg 156, 121, 59, 114, 59, 122, 123, 74, 134, 138, 1041b8e80941Smrg 124, 135, 145, 125, 80, 146, 139, 140, 163, 164, 1042b8e80941Smrg 150, 141, 82, 1095, 147, 151, 160, 142, 143, 152, 1043b8e80941Smrg 144, 148, 153, 161, 71, 59, 860, 162, 171, 171, 1044b8e80941Smrg 171, 171, 171, 171, 171, 171, 861, 189, 1095, 182, 1045b8e80941Smrg 1046b8e80941Smrg 182, 190, 74, 183, 183, 183, 183, 183, 183, 183, 1047b8e80941Smrg 183, 210, 198, 267, 212, 239, 165, 199, 200, 236, 1048b8e80941Smrg 74, 268, 211, 166, 244, 862, 237, 167, 213, 240, 1049b8e80941Smrg 249, 241, 168, 69, 69, 69, 69, 69, 69, 69, 1050b8e80941Smrg 69, 245, 246, 253, 250, 169, 255, 169, 223, 173, 1051b8e80941Smrg 174, 224, 225, 175, 379, 226, 863, 227, 272, 254, 1052b8e80941Smrg 256, 273, 161, 380, 59, 864, 162, 173, 174, 163, 1053b8e80941Smrg 164, 163, 164, 865, 176, 177, 177, 177, 177, 177, 1054b8e80941Smrg 177, 177, 177, 171, 171, 171, 171, 171, 171, 171, 1055b8e80941Smrg 171, 178, 179, 281, 281, 180, 866, 282, 282, 282, 1056b8e80941Smrg 1057b8e80941Smrg 282, 282, 282, 282, 282, 291, 304, 867, 292, 178, 1058b8e80941Smrg 179, 310, 311, 336, 358, 868, 181, 165, 359, 165, 1059b8e80941Smrg 305, 284, 285, 291, 166, 286, 166, 614, 167, 293, 1060b8e80941Smrg 167, 615, 869, 168, 870, 168, 344, 345, 346, 284, 1061b8e80941Smrg 285, 337, 871, 288, 288, 872, 287, 289, 289, 289, 1062b8e80941Smrg 289, 289, 289, 289, 289, 183, 183, 183, 183, 183, 1063b8e80941Smrg 183, 183, 183, 294, 386, 387, 388, 655, 777, 295, 1064b8e80941Smrg 282, 282, 282, 282, 282, 282, 282, 282, 174, 656, 1065b8e80941Smrg 778, 175, 694, 695, 294, 406, 407, 408, 417, 418, 1066b8e80941Smrg 419, 873, 296, 421, 422, 423, 174, 800, 801, 397, 1067b8e80941Smrg 1068b8e80941Smrg 397, 874, 176, 398, 398, 398, 398, 398, 398, 398, 1069b8e80941Smrg 398, 289, 289, 289, 289, 289, 289, 289, 289, 179, 1070b8e80941Smrg 875, 876, 180, 429, 430, 431, 433, 434, 435, 446, 1071b8e80941Smrg 447, 448, 488, 489, 490, 285, 877, 179, 286, 528, 1072b8e80941Smrg 529, 530, 878, 181, 398, 398, 398, 398, 398, 398, 1073b8e80941Smrg 398, 398, 879, 285, 517, 518, 519, 880, 881, 287, 1074b8e80941Smrg 531, 532, 533, 534, 535, 536, 520, 521, 582, 583, 1075b8e80941Smrg 584, 585, 586, 587, 588, 589, 590, 592, 593, 594, 1076b8e80941Smrg 595, 596, 597, 624, 625, 626, 627, 628, 629, 572, 1077b8e80941Smrg 694, 695, 598, 599, 882, 883, 884, 887, 630, 631, 1078b8e80941Smrg 1079b8e80941Smrg 888, 889, 657, 640, 641, 641, 641, 641, 641, 641, 1080b8e80941Smrg 641, 658, 704, 659, 660, 675, 676, 677, 694, 695, 1081b8e80941Smrg 890, 705, 891, 706, 892, 893, 894, 678, 679, 895, 1082b8e80941Smrg 680, 697, 698, 698, 698, 698, 698, 698, 698, 698, 1083b8e80941Smrg 719, 720, 721, 800, 801, 896, 737, 742, 743, 744, 1084b8e80941Smrg 694, 695, 722, 723, 897, 738, 697, 739, 699, 745, 1085b8e80941Smrg 746, 694, 695, 898, 749, 750, 750, 750, 750, 750, 1086b8e80941Smrg 750, 750, 694, 695, 825, 696, 696, 696, 696, 696, 1087b8e80941Smrg 696, 696, 885, 826, 803, 827, 698, 698, 698, 698, 1088b8e80941Smrg 698, 698, 698, 698, 886, 779, 752, 899, 800, 801, 1089b8e80941Smrg 1090b8e80941Smrg 900, 901, 902, 848, 780, 753, 781, 782, 903, 803, 1091b8e80941Smrg 800, 801, 849, 904, 850, 905, 754, 906, 800, 801, 1092b8e80941Smrg 907, 908, 909, 755, 804, 804, 804, 804, 804, 804, 1093b8e80941Smrg 804, 804, 802, 802, 802, 802, 802, 802, 802, 800, 1094b8e80941Smrg 801, 910, 911, 912, 913, 914, 915, 916, 917, 918, 1095b8e80941Smrg 919, 920, 921, 804, 804, 804, 804, 804, 804, 804, 1096b8e80941Smrg 804, 922, 923, 924, 925, 926, 927, 928, 929, 930, 1097b8e80941Smrg 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 1098b8e80941Smrg 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 1099b8e80941Smrg 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 1100b8e80941Smrg 1101b8e80941Smrg 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 1102b8e80941Smrg 971, 972, 973, 974, 975, 976, 978, 979, 980, 981, 1103b8e80941Smrg 982, 983, 977, 984, 985, 986, 987, 988, 989, 990, 1104b8e80941Smrg 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1105b8e80941Smrg 1001, 1002, 975, 976, 1004, 1006, 1007, 1008, 1009, 1010, 1106b8e80941Smrg 977, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1107b8e80941Smrg 1020, 1021, 1004, 1022, 1024, 1025, 1027, 1028, 1029, 1030, 1108b8e80941Smrg 1031, 1023, 1026, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1109b8e80941Smrg 1039, 1040, 1041, 1045, 1043, 1025, 1047, 1048, 1049, 1050, 1110b8e80941Smrg 1042, 1044, 1026, 1051, 1003, 1052, 1053, 1054, 1055, 1041, 1111b8e80941Smrg 1112b8e80941Smrg 1057, 1043, 1005, 1045, 1059, 1061, 1056, 1042, 1044, 1062, 1113b8e80941Smrg 1063, 1064, 1060, 1065, 1055, 1057, 1066, 1068, 1069, 1071, 1114b8e80941Smrg 1005, 1072, 1056, 1073, 1067, 1074, 1070, 1075, 1076, 1078, 1115b8e80941Smrg 1069, 1080, 1081, 1084, 1082, 1076, 1077, 1079, 1070, 1078, 1116b8e80941Smrg 1085, 1046, 1083, 1077, 1082, 1086, 1087, 1079, 1087, 1089, 1117b8e80941Smrg 1089, 1091, 1083, 1088, 1092, 1088, 1093, 1093, 1058, 855, 1118b8e80941Smrg 854, 1046, 852, 851, 1094, 1094, 847, 846, 845, 844, 1119b8e80941Smrg 843, 842, 841, 1058, 840, 839, 838, 837, 836, 835, 1120b8e80941Smrg 834, 833, 832, 831, 830, 829, 828, 824, 823, 822, 1121b8e80941Smrg 821, 820, 819, 1090, 1090, 57, 57, 57, 57, 57, 1122b8e80941Smrg 1123b8e80941Smrg 57, 57, 57, 57, 57, 57, 57, 88, 88, 88, 1124b8e80941Smrg 88, 88, 88, 88, 88, 172, 172, 172, 172, 172, 1125b8e80941Smrg 172, 172, 172, 73, 73, 73, 818, 73, 184, 184, 1126b8e80941Smrg 184, 184, 184, 280, 280, 817, 280, 280, 280, 280, 1127b8e80941Smrg 280, 280, 280, 280, 280, 183, 183, 816, 815, 183, 1128b8e80941Smrg 814, 183, 282, 282, 813, 812, 282, 811, 282, 289, 1129b8e80941Smrg 289, 810, 809, 289, 808, 289, 398, 398, 807, 806, 1130b8e80941Smrg 398, 805, 398, 696, 696, 799, 696, 798, 797, 796, 1131b8e80941Smrg 795, 794, 793, 696, 751, 751, 751, 751, 751, 802, 1132b8e80941Smrg 802, 792, 802, 791, 790, 789, 788, 787, 786, 802, 1133b8e80941Smrg 1134b8e80941Smrg 853, 853, 853, 853, 853, 785, 784, 783, 776, 775, 1135b8e80941Smrg 774, 773, 772, 771, 770, 769, 768, 767, 766, 765, 1136b8e80941Smrg 764, 763, 762, 761, 760, 759, 758, 757, 756, 748, 1137b8e80941Smrg 747, 741, 740, 736, 735, 734, 733, 732, 731, 730, 1138b8e80941Smrg 729, 728, 727, 726, 725, 724, 718, 717, 716, 715, 1139b8e80941Smrg 714, 713, 712, 711, 710, 709, 708, 707, 703, 702, 1140b8e80941Smrg 701, 700, 699, 693, 692, 691, 690, 689, 688, 687, 1141b8e80941Smrg 686, 685, 684, 683, 682, 681, 674, 673, 672, 671, 1142b8e80941Smrg 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, 1143b8e80941Smrg 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, 1144b8e80941Smrg 1145b8e80941Smrg 644, 643, 642, 639, 638, 637, 636, 635, 634, 633, 1146b8e80941Smrg 632, 623, 622, 621, 620, 619, 618, 617, 616, 613, 1147b8e80941Smrg 612, 611, 610, 609, 608, 607, 606, 605, 604, 603, 1148b8e80941Smrg 602, 601, 600, 591, 581, 580, 579, 578, 577, 576, 1149b8e80941Smrg 575, 574, 573, 572, 571, 570, 569, 568, 567, 566, 1150b8e80941Smrg 565, 564, 563, 562, 561, 560, 559, 558, 557, 556, 1151b8e80941Smrg 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, 1152b8e80941Smrg 545, 544, 543, 542, 541, 540, 539, 538, 537, 527, 1153b8e80941Smrg 526, 525, 524, 523, 522, 516, 515, 514, 513, 512, 1154b8e80941Smrg 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, 1155b8e80941Smrg 1156b8e80941Smrg 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, 1157b8e80941Smrg 491, 487, 486, 485, 484, 483, 482, 481, 480, 479, 1158b8e80941Smrg 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, 1159b8e80941Smrg 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, 1160b8e80941Smrg 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 1161b8e80941Smrg 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, 1162b8e80941Smrg 432, 428, 427, 426, 425, 424, 420, 416, 415, 414, 1163b8e80941Smrg 413, 412, 411, 410, 409, 405, 404, 403, 402, 401, 1164b8e80941Smrg 294, 294, 400, 400, 399, 399, 396, 395, 394, 393, 1165b8e80941Smrg 392, 391, 390, 389, 385, 384, 383, 382, 381, 378, 1166b8e80941Smrg 1167b8e80941Smrg 377, 376, 375, 374, 373, 372, 371, 370, 369, 368, 1168b8e80941Smrg 367, 366, 365, 364, 363, 362, 361, 360, 357, 356, 1169b8e80941Smrg 355, 354, 353, 352, 351, 350, 349, 348, 347, 343, 1170b8e80941Smrg 342, 341, 340, 339, 338, 335, 334, 333, 332, 331, 1171b8e80941Smrg 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 1172b8e80941Smrg 320, 319, 318, 317, 316, 315, 314, 313, 312, 309, 1173b8e80941Smrg 308, 307, 306, 303, 302, 301, 300, 299, 298, 297, 1174b8e80941Smrg 290, 290, 283, 283, 279, 278, 277, 276, 275, 274, 1175b8e80941Smrg 271, 270, 269, 262, 261, 260, 259, 258, 257, 252, 1176b8e80941Smrg 251, 248, 247, 243, 242, 238, 235, 234, 233, 230, 1177b8e80941Smrg 1178b8e80941Smrg 229, 228, 222, 221, 220, 219, 218, 217, 216, 215, 1179b8e80941Smrg 214, 209, 208, 207, 206, 205, 204, 203, 202, 201, 1180b8e80941Smrg 197, 196, 195, 194, 193, 192, 191, 188, 187, 186, 1181b8e80941Smrg 185, 80, 80, 75, 75, 170, 132, 115, 85, 70, 1182b8e80941Smrg 64, 61, 60, 1095, 58, 58, 7, 1095, 1095, 1095, 1183b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1184b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1185b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1186b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1187b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1188b8e80941Smrg 1189b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1190b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095 1191b8e80941Smrg } ; 1192b8e80941Smrg 1193b8e80941Smrgstatic const flex_int16_t yy_chk[1619] = 1194b8e80941Smrg { 0, 1195b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1196b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1197b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1198b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1199b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1200b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1201b8e80941Smrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1202b8e80941Smrg 1, 2, 9, 807, 9, 2, 3, 3, 3, 3, 1203b8e80941Smrg 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1204b8e80941Smrg 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1205b8e80941Smrg 1206b8e80941Smrg 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1207b8e80941Smrg 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1208b8e80941Smrg 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1209b8e80941Smrg 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1210b8e80941Smrg 3, 3, 3, 3, 3, 3, 3, 13, 15, 25, 1211b8e80941Smrg 16, 17, 17, 17, 17, 17, 17, 17, 17, 21, 1212b8e80941Smrg 21, 808, 15, 16, 26, 13, 19, 25, 19, 19, 1213b8e80941Smrg 19, 19, 19, 19, 19, 19, 23, 23, 28, 26, 1214b8e80941Smrg 26, 27, 28, 27, 19, 33, 27, 27, 19, 28, 1215b8e80941Smrg 127, 810, 28, 33, 19, 19, 29, 30, 127, 30, 1216b8e80941Smrg 1217b8e80941Smrg 29, 35, 19, 36, 29, 33, 29, 36, 30, 19, 1218b8e80941Smrg 150, 150, 29, 45, 50, 35, 50, 19, 37, 34, 1219b8e80941Smrg 19, 20, 45, 20, 20, 20, 20, 20, 20, 20, 1220b8e80941Smrg 20, 46, 37, 31, 811, 40, 44, 151, 43, 20, 1221b8e80941Smrg 44, 31, 39, 20, 31, 40, 151, 31, 34, 20, 1222b8e80941Smrg 44, 34, 59, 31, 59, 34, 34, 20, 39, 41, 1223b8e80941Smrg 34, 39, 42, 34, 20, 42, 41, 41, 48, 48, 1224b8e80941Smrg 43, 41, 20, 72, 42, 43, 46, 41, 41, 43, 1225b8e80941Smrg 41, 42, 43, 47, 73, 47, 812, 47, 54, 54, 1226b8e80941Smrg 54, 54, 54, 54, 54, 54, 813, 93, 72, 74, 1227b8e80941Smrg 1228b8e80941Smrg 74, 93, 73, 74, 74, 74, 74, 74, 74, 74, 1229b8e80941Smrg 74, 111, 101, 152, 112, 133, 48, 101, 101, 131, 1230b8e80941Smrg 73, 152, 111, 48, 136, 814, 131, 48, 112, 133, 1231b8e80941Smrg 139, 133, 48, 69, 69, 69, 69, 69, 69, 69, 1232b8e80941Smrg 69, 136, 136, 142, 139, 169, 143, 169, 123, 69, 1233b8e80941Smrg 69, 123, 123, 69, 265, 123, 815, 123, 156, 142, 1234b8e80941Smrg 143, 156, 161, 265, 161, 816, 161, 69, 69, 162, 1235b8e80941Smrg 162, 163, 163, 817, 69, 71, 71, 71, 71, 71, 1236b8e80941Smrg 71, 71, 71, 171, 171, 171, 171, 171, 171, 171, 1237b8e80941Smrg 171, 71, 71, 173, 173, 71, 818, 173, 173, 173, 1238b8e80941Smrg 1239b8e80941Smrg 173, 173, 173, 173, 173, 183, 195, 819, 183, 71, 1240b8e80941Smrg 71, 200, 200, 226, 245, 821, 71, 162, 245, 163, 1241b8e80941Smrg 195, 177, 177, 183, 162, 177, 163, 544, 162, 183, 1242b8e80941Smrg 163, 544, 823, 162, 824, 163, 233, 233, 233, 177, 1243b8e80941Smrg 177, 226, 825, 178, 178, 826, 177, 178, 178, 178, 1244b8e80941Smrg 178, 178, 178, 178, 178, 182, 182, 182, 182, 182, 1245b8e80941Smrg 182, 182, 182, 184, 271, 271, 271, 600, 729, 184, 1246b8e80941Smrg 281, 281, 281, 281, 281, 281, 281, 281, 282, 600, 1247b8e80941Smrg 729, 282, 751, 751, 184, 303, 303, 303, 314, 314, 1248b8e80941Smrg 314, 827, 184, 316, 316, 316, 282, 800, 800, 284, 1249b8e80941Smrg 1250b8e80941Smrg 284, 828, 282, 284, 284, 284, 284, 284, 284, 284, 1251b8e80941Smrg 284, 288, 288, 288, 288, 288, 288, 288, 288, 289, 1252b8e80941Smrg 829, 830, 289, 325, 325, 325, 329, 329, 329, 340, 1253b8e80941Smrg 340, 340, 384, 384, 384, 398, 831, 289, 398, 450, 1254b8e80941Smrg 450, 450, 832, 289, 397, 397, 397, 397, 397, 397, 1255b8e80941Smrg 397, 397, 833, 398, 438, 438, 438, 834, 835, 398, 1256b8e80941Smrg 451, 451, 451, 452, 452, 452, 438, 438, 509, 509, 1257b8e80941Smrg 509, 510, 510, 510, 511, 511, 511, 515, 515, 515, 1258b8e80941Smrg 516, 516, 516, 562, 562, 562, 563, 563, 563, 572, 1259b8e80941Smrg 640, 640, 516, 516, 836, 837, 838, 840, 563, 563, 1260b8e80941Smrg 1261b8e80941Smrg 841, 842, 601, 572, 572, 572, 572, 572, 572, 572, 1262b8e80941Smrg 572, 601, 651, 601, 601, 620, 620, 620, 641, 641, 1263b8e80941Smrg 843, 651, 844, 651, 845, 846, 847, 620, 620, 848, 1264b8e80941Smrg 620, 640, 641, 641, 641, 641, 641, 641, 641, 641, 1265b8e80941Smrg 665, 665, 665, 749, 749, 849, 684, 690, 690, 690, 1266b8e80941Smrg 694, 694, 665, 665, 850, 684, 640, 684, 699, 690, 1267b8e80941Smrg 690, 696, 696, 851, 694, 694, 694, 694, 694, 694, 1268b8e80941Smrg 694, 694, 698, 698, 772, 696, 696, 696, 696, 696, 1269b8e80941Smrg 696, 696, 839, 772, 749, 772, 698, 698, 698, 698, 1270b8e80941Smrg 698, 698, 698, 698, 839, 730, 699, 852, 853, 853, 1271b8e80941Smrg 1272b8e80941Smrg 854, 855, 856, 795, 730, 699, 730, 730, 857, 749, 1273b8e80941Smrg 750, 750, 795, 858, 795, 859, 699, 860, 802, 802, 1274b8e80941Smrg 863, 864, 865, 699, 750, 750, 750, 750, 750, 750, 1275b8e80941Smrg 750, 750, 802, 802, 802, 802, 802, 802, 802, 804, 1276b8e80941Smrg 804, 866, 867, 868, 869, 870, 871, 872, 873, 874, 1277b8e80941Smrg 875, 876, 877, 804, 804, 804, 804, 804, 804, 804, 1278b8e80941Smrg 804, 878, 879, 880, 881, 882, 883, 884, 885, 886, 1279b8e80941Smrg 887, 888, 889, 890, 893, 894, 895, 896, 897, 898, 1280b8e80941Smrg 899, 900, 901, 902, 903, 906, 907, 908, 910, 911, 1281b8e80941Smrg 913, 914, 915, 916, 917, 918, 919, 921, 922, 923, 1282b8e80941Smrg 1283b8e80941Smrg 924, 925, 926, 929, 930, 931, 934, 935, 936, 937, 1284b8e80941Smrg 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 1285b8e80941Smrg 948, 949, 943, 952, 953, 954, 957, 958, 959, 960, 1286b8e80941Smrg 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 1287b8e80941Smrg 971, 974, 975, 976, 977, 978, 979, 982, 983, 986, 1288b8e80941Smrg 976, 987, 988, 990, 991, 992, 994, 995, 996, 1001, 1289b8e80941Smrg 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1290b8e80941Smrg 1012, 1005, 1007, 1013, 1015, 1016, 1017, 1018, 1019, 1020, 1291b8e80941Smrg 1021, 1022, 1023, 1026, 1024, 1025, 1027, 1028, 1031, 1032, 1292b8e80941Smrg 1023, 1024, 1025, 1033, 975, 1034, 1036, 1039, 1040, 1041, 1293b8e80941Smrg 1294b8e80941Smrg 1044, 1043, 977, 1045, 1046, 1049, 1040, 1041, 1043, 1050, 1295b8e80941Smrg 1051, 1052, 1046, 1054, 1055, 1057, 1058, 1059, 1060, 1061, 1296b8e80941Smrg 1004, 1062, 1055, 1064, 1058, 1065, 1060, 1066, 1067, 1068, 1297b8e80941Smrg 1069, 1073, 1074, 1080, 1075, 1076, 1067, 1068, 1069, 1078, 1298b8e80941Smrg 1081, 1026, 1075, 1076, 1082, 1085, 1086, 1078, 1087, 1088, 1299b8e80941Smrg 1089, 1090, 1082, 1086, 1091, 1087, 1092, 1093, 1044, 806, 1300b8e80941Smrg 805, 1045, 798, 797, 1092, 1093, 794, 793, 792, 791, 1301b8e80941Smrg 790, 789, 788, 1057, 786, 785, 784, 783, 782, 781, 1302b8e80941Smrg 780, 779, 778, 777, 776, 775, 774, 771, 770, 769, 1303b8e80941Smrg 768, 767, 766, 1088, 1089, 1096, 1096, 1096, 1096, 1096, 1304b8e80941Smrg 1305b8e80941Smrg 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097, 1097, 1097, 1306b8e80941Smrg 1097, 1097, 1097, 1097, 1097, 1098, 1098, 1098, 1098, 1098, 1307b8e80941Smrg 1098, 1098, 1098, 1099, 1099, 1099, 765, 1099, 1100, 1100, 1308b8e80941Smrg 1100, 1100, 1100, 1101, 1101, 764, 1101, 1101, 1101, 1101, 1309b8e80941Smrg 1101, 1101, 1101, 1101, 1101, 1102, 1102, 763, 762, 1102, 1310b8e80941Smrg 761, 1102, 1103, 1103, 760, 759, 1103, 758, 1103, 1104, 1311b8e80941Smrg 1104, 757, 756, 1104, 755, 1104, 1105, 1105, 754, 753, 1312b8e80941Smrg 1105, 752, 1105, 1106, 1106, 748, 1106, 746, 745, 744, 1313b8e80941Smrg 743, 742, 741, 1106, 1107, 1107, 1107, 1107, 1107, 1108, 1314b8e80941Smrg 1108, 740, 1108, 739, 738, 737, 736, 735, 734, 1108, 1315b8e80941Smrg 1316b8e80941Smrg 1109, 1109, 1109, 1109, 1109, 733, 732, 731, 725, 723, 1317b8e80941Smrg 722, 721, 720, 719, 716, 715, 714, 713, 712, 711, 1318b8e80941Smrg 710, 709, 708, 707, 706, 705, 704, 703, 701, 693, 1319b8e80941Smrg 692, 687, 686, 683, 681, 680, 679, 678, 677, 676, 1320b8e80941Smrg 675, 674, 670, 669, 668, 666, 664, 663, 662, 661, 1321b8e80941Smrg 660, 659, 658, 657, 656, 655, 654, 653, 650, 645, 1322b8e80941Smrg 644, 643, 642, 639, 638, 637, 635, 634, 632, 631, 1323b8e80941Smrg 630, 629, 628, 627, 622, 621, 619, 618, 617, 616, 1324b8e80941Smrg 615, 613, 612, 611, 610, 608, 607, 606, 604, 603, 1325b8e80941Smrg 599, 598, 597, 596, 595, 591, 579, 578, 577, 576, 1326b8e80941Smrg 1327b8e80941Smrg 575, 574, 573, 571, 570, 569, 568, 567, 566, 565, 1328b8e80941Smrg 564, 561, 560, 557, 551, 550, 548, 547, 546, 543, 1329b8e80941Smrg 540, 539, 538, 537, 526, 525, 524, 523, 521, 520, 1330b8e80941Smrg 519, 518, 517, 513, 508, 507, 506, 504, 503, 501, 1331b8e80941Smrg 500, 498, 497, 496, 495, 494, 492, 491, 486, 485, 1332b8e80941Smrg 483, 482, 481, 480, 479, 478, 477, 476, 475, 474, 1333b8e80941Smrg 473, 472, 471, 469, 468, 467, 466, 465, 464, 463, 1334b8e80941Smrg 462, 461, 459, 458, 457, 456, 455, 454, 453, 449, 1335b8e80941Smrg 445, 444, 443, 442, 439, 437, 436, 426, 424, 420, 1336b8e80941Smrg 419, 418, 417, 416, 415, 414, 412, 411, 409, 405, 1337b8e80941Smrg 1338b8e80941Smrg 403, 402, 401, 396, 395, 394, 393, 392, 391, 390, 1339b8e80941Smrg 385, 383, 382, 381, 380, 379, 378, 377, 376, 375, 1340b8e80941Smrg 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 1341b8e80941Smrg 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 1342b8e80941Smrg 352, 351, 350, 349, 348, 347, 346, 345, 344, 341, 1343b8e80941Smrg 339, 338, 337, 336, 335, 334, 333, 332, 331, 330, 1344b8e80941Smrg 328, 324, 322, 321, 320, 319, 315, 313, 312, 311, 1345b8e80941Smrg 310, 309, 308, 307, 306, 302, 301, 299, 298, 297, 1346b8e80941Smrg 296, 295, 293, 292, 287, 286, 279, 278, 277, 276, 1347b8e80941Smrg 275, 274, 273, 272, 270, 269, 268, 267, 266, 264, 1348b8e80941Smrg 1349b8e80941Smrg 263, 262, 261, 260, 259, 258, 257, 256, 255, 254, 1350b8e80941Smrg 253, 252, 251, 250, 249, 248, 247, 246, 244, 243, 1351b8e80941Smrg 242, 241, 240, 239, 238, 237, 236, 235, 234, 232, 1352b8e80941Smrg 231, 230, 229, 228, 227, 225, 224, 223, 222, 221, 1353b8e80941Smrg 220, 219, 218, 217, 216, 215, 213, 212, 211, 210, 1354b8e80941Smrg 209, 208, 207, 206, 205, 204, 203, 202, 201, 199, 1355b8e80941Smrg 198, 197, 196, 194, 193, 192, 191, 190, 189, 187, 1356b8e80941Smrg 181, 180, 176, 175, 168, 167, 166, 165, 158, 157, 1357b8e80941Smrg 155, 154, 153, 149, 148, 147, 146, 145, 144, 141, 1358b8e80941Smrg 140, 138, 137, 135, 134, 132, 130, 129, 128, 126, 1359b8e80941Smrg 1360b8e80941Smrg 125, 124, 122, 121, 119, 118, 117, 116, 115, 114, 1361b8e80941Smrg 113, 110, 109, 108, 107, 106, 105, 104, 103, 102, 1362b8e80941Smrg 100, 99, 98, 97, 96, 95, 94, 92, 91, 87, 1363b8e80941Smrg 83, 82, 81, 78, 76, 52, 38, 32, 22, 18, 1364b8e80941Smrg 14, 12, 11, 7, 6, 5, 1095, 1095, 1095, 1095, 1365b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1366b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1367b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1368b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1369b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1370b8e80941Smrg 1371b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1372b8e80941Smrg 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095 1373b8e80941Smrg } ; 1374b8e80941Smrg 1375b8e80941Smrg/* The intent behind this definition is that it'll catch 1376b8e80941Smrg * any uses of REJECT which flex missed. 1377b8e80941Smrg */ 1378b8e80941Smrg#define REJECT reject_used_but_not_detected 1379b8e80941Smrg#define yymore() yymore_used_but_not_detected 1380b8e80941Smrg#define YY_MORE_ADJ 0 1381b8e80941Smrg#define YY_RESTORE_YY_MORE_OFFSET 1382b8e80941Smrg#line 1 "../src/compiler/glsl/glsl_lexer.ll" 1383b8e80941Smrg#line 2 "../src/compiler/glsl/glsl_lexer.ll" 1384b8e80941Smrg/* 1385b8e80941Smrg * Copyright © 2008, 2009 Intel Corporation 1386b8e80941Smrg * 1387b8e80941Smrg * Permission is hereby granted, free of charge, to any person obtaining a 1388b8e80941Smrg * copy of this software and associated documentation files (the "Software"), 1389b8e80941Smrg * to deal in the Software without restriction, including without limitation 1390b8e80941Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 1391b8e80941Smrg * and/or sell copies of the Software, and to permit persons to whom the 1392b8e80941Smrg * Software is furnished to do so, subject to the following conditions: 1393b8e80941Smrg * 1394b8e80941Smrg * The above copyright notice and this permission notice (including the next 1395b8e80941Smrg * paragraph) shall be included in all copies or substantial portions of the 1396b8e80941Smrg * Software. 1397b8e80941Smrg * 1398b8e80941Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1399b8e80941Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1400b8e80941Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1401b8e80941Smrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1402b8e80941Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1403b8e80941Smrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 1404b8e80941Smrg * DEALINGS IN THE SOFTWARE. 1405b8e80941Smrg */ 1406b8e80941Smrg#include <ctype.h> 1407b8e80941Smrg#include <limits.h> 1408b8e80941Smrg#include "util/strtod.h" 1409b8e80941Smrg#include "ast.h" 1410b8e80941Smrg#include "glsl_parser_extras.h" 1411b8e80941Smrg#include "glsl_parser.h" 1412b8e80941Smrg#include "main/mtypes.h" 1413b8e80941Smrg 1414b8e80941Smrgstatic int classify_identifier(struct _mesa_glsl_parse_state *, const char *, 1415b8e80941Smrg unsigned name_len, YYSTYPE *output); 1416b8e80941Smrg 1417b8e80941Smrg#ifdef _MSC_VER 1418b8e80941Smrg#define YY_NO_UNISTD_H 1419b8e80941Smrg#endif 1420b8e80941Smrg 1421b8e80941Smrg#define YY_NO_INPUT 1422b8e80941Smrg#define YY_USER_ACTION \ 1423b8e80941Smrg do { \ 1424b8e80941Smrg yylloc->first_column = yycolumn + 1; \ 1425b8e80941Smrg yylloc->first_line = yylloc->last_line = yylineno + 1; \ 1426b8e80941Smrg yycolumn += yyleng; \ 1427b8e80941Smrg yylloc->last_column = yycolumn + 1; \ 1428b8e80941Smrg } while(0); 1429b8e80941Smrg 1430b8e80941Smrg#define YY_USER_INIT yylineno = 0; yycolumn = 0; yylloc->source = 0; 1431b8e80941Smrg 1432b8e80941Smrg/* A macro for handling reserved words and keywords across language versions. 1433b8e80941Smrg * 1434b8e80941Smrg * Certain words start out as identifiers, become reserved words in 1435b8e80941Smrg * later language revisions, and finally become language keywords. 1436b8e80941Smrg * This may happen at different times in desktop GLSL and GLSL ES. 1437b8e80941Smrg * 1438b8e80941Smrg * For example, consider the following lexer rule: 1439b8e80941Smrg * samplerBuffer KEYWORD(130, 0, 140, 0, SAMPLERBUFFER) 1440b8e80941Smrg * 1441b8e80941Smrg * This means that "samplerBuffer" will be treated as: 1442b8e80941Smrg * - a keyword (SAMPLERBUFFER token) ...in GLSL >= 1.40 1443b8e80941Smrg * - a reserved word - error ...in GLSL >= 1.30 1444b8e80941Smrg * - an identifier ...in GLSL < 1.30 or GLSL ES 1445b8e80941Smrg */ 1446b8e80941Smrg#define KEYWORD(reserved_glsl, reserved_glsl_es, \ 1447b8e80941Smrg allowed_glsl, allowed_glsl_es, token) \ 1448b8e80941Smrg KEYWORD_WITH_ALT(reserved_glsl, reserved_glsl_es, \ 1449b8e80941Smrg allowed_glsl, allowed_glsl_es, false, token) 1450b8e80941Smrg 1451b8e80941Smrg/** 1452b8e80941Smrg * Like the KEYWORD macro, but the word is also treated as a keyword 1453b8e80941Smrg * if the given boolean expression is true. 1454b8e80941Smrg */ 1455b8e80941Smrg#define KEYWORD_WITH_ALT(reserved_glsl, reserved_glsl_es, \ 1456b8e80941Smrg allowed_glsl, allowed_glsl_es, \ 1457b8e80941Smrg alt_expr, token) \ 1458b8e80941Smrg do { \ 1459b8e80941Smrg if (yyextra->is_version(allowed_glsl, allowed_glsl_es) \ 1460b8e80941Smrg || (alt_expr)) { \ 1461b8e80941Smrg return token; \ 1462b8e80941Smrg } else if (yyextra->is_version(reserved_glsl, \ 1463b8e80941Smrg reserved_glsl_es)) { \ 1464b8e80941Smrg _mesa_glsl_error(yylloc, yyextra, \ 1465b8e80941Smrg "illegal use of reserved word `%s'", yytext); \ 1466b8e80941Smrg return ERROR_TOK; \ 1467b8e80941Smrg } else { \ 1468b8e80941Smrg return classify_identifier(yyextra, yytext, yyleng, yylval); \ 1469b8e80941Smrg } \ 1470b8e80941Smrg } while (0) 1471b8e80941Smrg 1472b8e80941Smrg/** 1473b8e80941Smrg * Like KEYWORD_WITH_ALT, but used for built-in GLSL types 1474b8e80941Smrg */ 1475b8e80941Smrg#define TYPE_WITH_ALT(reserved_glsl, reserved_glsl_es, \ 1476b8e80941Smrg allowed_glsl, allowed_glsl_es, \ 1477b8e80941Smrg alt_expr, gtype) \ 1478b8e80941Smrg do { \ 1479b8e80941Smrg if (yyextra->is_version(allowed_glsl, allowed_glsl_es) \ 1480b8e80941Smrg || (alt_expr)) { \ 1481b8e80941Smrg yylval->type = gtype; \ 1482b8e80941Smrg return BASIC_TYPE_TOK; \ 1483b8e80941Smrg } else if (yyextra->is_version(reserved_glsl, \ 1484b8e80941Smrg reserved_glsl_es)) { \ 1485b8e80941Smrg _mesa_glsl_error(yylloc, yyextra, \ 1486b8e80941Smrg "illegal use of reserved word `%s'", yytext); \ 1487b8e80941Smrg return ERROR_TOK; \ 1488b8e80941Smrg } else { \ 1489b8e80941Smrg return classify_identifier(yyextra, yytext, yyleng, yylval); \ 1490b8e80941Smrg } \ 1491b8e80941Smrg } while (0) 1492b8e80941Smrg 1493b8e80941Smrg#define TYPE(reserved_glsl, reserved_glsl_es, \ 1494b8e80941Smrg allowed_glsl, allowed_glsl_es, \ 1495b8e80941Smrg gtype) \ 1496b8e80941Smrg TYPE_WITH_ALT(reserved_glsl, reserved_glsl_es, \ 1497b8e80941Smrg allowed_glsl, allowed_glsl_es, \ 1498b8e80941Smrg false, gtype) 1499b8e80941Smrg 1500b8e80941Smrg/** 1501b8e80941Smrg * A macro for handling keywords that have been present in GLSL since 1502b8e80941Smrg * its origin, but were changed into reserved words in GLSL 3.00 ES. 1503b8e80941Smrg */ 1504b8e80941Smrg#define DEPRECATED_ES_KEYWORD(token) \ 1505b8e80941Smrg do { \ 1506b8e80941Smrg if (yyextra->is_version(0, 300)) { \ 1507b8e80941Smrg _mesa_glsl_error(yylloc, yyextra, \ 1508b8e80941Smrg "illegal use of reserved word `%s'", yytext); \ 1509b8e80941Smrg return ERROR_TOK; \ 1510b8e80941Smrg } else { \ 1511b8e80941Smrg return token; \ 1512b8e80941Smrg } \ 1513b8e80941Smrg } while (0) 1514b8e80941Smrg 1515b8e80941Smrg/** 1516b8e80941Smrg * Like DEPRECATED_ES_KEYWORD, but for types 1517b8e80941Smrg */ 1518b8e80941Smrg#define DEPRECATED_ES_TYPE_WITH_ALT(alt_expr, gtype) \ 1519b8e80941Smrg do { \ 1520b8e80941Smrg if (yyextra->is_version(0, 300)) { \ 1521b8e80941Smrg _mesa_glsl_error(yylloc, yyextra, \ 1522b8e80941Smrg "illegal use of reserved word `%s'", yytext); \ 1523b8e80941Smrg return ERROR_TOK; \ 1524b8e80941Smrg } else if (alt_expr) { \ 1525b8e80941Smrg yylval->type = gtype; \ 1526b8e80941Smrg return BASIC_TYPE_TOK; \ 1527b8e80941Smrg } else { \ 1528b8e80941Smrg return classify_identifier(yyextra, yytext, yyleng, yylval); \ 1529b8e80941Smrg } \ 1530b8e80941Smrg } while (0) 1531b8e80941Smrg 1532b8e80941Smrg#define DEPRECATED_ES_TYPE(gtype) \ 1533b8e80941Smrg DEPRECATED_ES_TYPE_WITH_ALT(true, gtype) 1534b8e80941Smrg 1535b8e80941Smrgstatic int 1536b8e80941Smrgliteral_integer(char *text, int len, struct _mesa_glsl_parse_state *state, 1537b8e80941Smrg YYSTYPE *lval, YYLTYPE *lloc, int base) 1538b8e80941Smrg{ 1539b8e80941Smrg bool is_uint = (text[len - 1] == 'u' || 1540b8e80941Smrg text[len - 1] == 'U'); 1541b8e80941Smrg bool is_long = (text[len - 1] == 'l' || text[len - 1] == 'L'); 1542b8e80941Smrg const char *digits = text; 1543b8e80941Smrg 1544b8e80941Smrg if (is_long) 1545b8e80941Smrg is_uint = (text[len - 2] == 'u' && text[len - 1] == 'l') || 1546b8e80941Smrg (text[len - 2] == 'U' && text[len - 1] == 'L'); 1547b8e80941Smrg /* Skip "0x" */ 1548b8e80941Smrg if (base == 16) 1549b8e80941Smrg digits += 2; 1550b8e80941Smrg 1551b8e80941Smrg unsigned long long value = strtoull(digits, NULL, base); 1552b8e80941Smrg 1553b8e80941Smrg if (is_long) 1554b8e80941Smrg lval->n64 = (int64_t)value; 1555b8e80941Smrg else 1556b8e80941Smrg lval->n = (int)value; 1557b8e80941Smrg 1558b8e80941Smrg if (is_long && !is_uint && base == 10 && value > (uint64_t)LLONG_MAX + 1) { 1559b8e80941Smrg /* Tries to catch unintentionally providing a negative value. */ 1560b8e80941Smrg _mesa_glsl_warning(lloc, state, 1561b8e80941Smrg "signed literal value `%s' is interpreted as %lld", 1562b8e80941Smrg text, lval->n64); 1563b8e80941Smrg } else if (!is_long && value > UINT_MAX) { 1564b8e80941Smrg /* Note that signed 0xffffffff is valid, not out of range! */ 1565b8e80941Smrg if (state->is_version(130, 300)) { 1566b8e80941Smrg _mesa_glsl_error(lloc, state, 1567b8e80941Smrg "literal value `%s' out of range", text); 1568b8e80941Smrg } else { 1569b8e80941Smrg _mesa_glsl_warning(lloc, state, 1570b8e80941Smrg "literal value `%s' out of range", text); 1571b8e80941Smrg } 1572b8e80941Smrg } else if (base == 10 && !is_uint && (unsigned)value > (unsigned)INT_MAX + 1) { 1573b8e80941Smrg /* Tries to catch unintentionally providing a negative value. 1574b8e80941Smrg * Note that -2147483648 is parsed as -(2147483648), so we don't 1575b8e80941Smrg * want to warn for INT_MAX. 1576b8e80941Smrg */ 1577b8e80941Smrg _mesa_glsl_warning(lloc, state, 1578b8e80941Smrg "signed literal value `%s' is interpreted as %d", 1579b8e80941Smrg text, lval->n); 1580b8e80941Smrg } 1581b8e80941Smrg if (is_long) 1582b8e80941Smrg return is_uint ? UINT64CONSTANT : INT64CONSTANT; 1583b8e80941Smrg else 1584b8e80941Smrg return is_uint ? UINTCONSTANT : INTCONSTANT; 1585b8e80941Smrg} 1586b8e80941Smrg 1587b8e80941Smrg#define LITERAL_INTEGER(base) \ 1588b8e80941Smrg literal_integer(yytext, yyleng, yyextra, yylval, yylloc, base) 1589b8e80941Smrg 1590b8e80941Smrg#line 1590 "src/compiler/glsl/glsl_lexer.cpp" 1591b8e80941Smrg#line 218 "../src/compiler/glsl/glsl_lexer.ll" 1592b8e80941Smrg /* Note: When adding any start conditions to this list, you must also 1593b8e80941Smrg * update the "Internal compiler error" catch-all rule near the end of 1594b8e80941Smrg * this file. */ 1595b8e80941Smrg 1596b8e80941Smrg#line 1596 "src/compiler/glsl/glsl_lexer.cpp" 1597b8e80941Smrg 1598b8e80941Smrg#define INITIAL 0 1599b8e80941Smrg#define PP 1 1600b8e80941Smrg#define PRAGMA 2 1601b8e80941Smrg 1602b8e80941Smrg#ifndef YY_NO_UNISTD_H 1603b8e80941Smrg/* Special case for "unistd.h", since it is non-ANSI. We include it way 1604b8e80941Smrg * down here because we want the user's section 1 to have been scanned first. 1605b8e80941Smrg * The user has a chance to override it with an option. 1606b8e80941Smrg */ 1607b8e80941Smrg#include <unistd.h> 1608b8e80941Smrg#endif 1609b8e80941Smrg 1610b8e80941Smrg#define YY_EXTRA_TYPE struct _mesa_glsl_parse_state * 1611b8e80941Smrg 1612b8e80941Smrg/* Holds the entire state of the reentrant scanner. */ 1613b8e80941Smrgstruct yyguts_t 1614b8e80941Smrg { 1615b8e80941Smrg 1616b8e80941Smrg /* User-defined. Not touched by flex. */ 1617b8e80941Smrg YY_EXTRA_TYPE yyextra_r; 1618b8e80941Smrg 1619b8e80941Smrg /* The rest are the same as the globals declared in the non-reentrant scanner. */ 1620b8e80941Smrg FILE *yyin_r, *yyout_r; 1621b8e80941Smrg size_t yy_buffer_stack_top; /**< index of top of stack. */ 1622b8e80941Smrg size_t yy_buffer_stack_max; /**< capacity of stack. */ 1623b8e80941Smrg YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ 1624b8e80941Smrg char yy_hold_char; 1625b8e80941Smrg yy_size_t yy_n_chars; 1626b8e80941Smrg yy_size_t yyleng_r; 1627b8e80941Smrg char *yy_c_buf_p; 1628b8e80941Smrg int yy_init; 1629b8e80941Smrg int yy_start; 1630b8e80941Smrg int yy_did_buffer_switch_on_eof; 1631b8e80941Smrg int yy_start_stack_ptr; 1632b8e80941Smrg int yy_start_stack_depth; 1633b8e80941Smrg int *yy_start_stack; 1634b8e80941Smrg yy_state_type yy_last_accepting_state; 1635b8e80941Smrg char* yy_last_accepting_cpos; 1636b8e80941Smrg 1637b8e80941Smrg int yylineno_r; 1638b8e80941Smrg int yy_flex_debug_r; 1639b8e80941Smrg 1640b8e80941Smrg char *yytext_r; 1641b8e80941Smrg int yy_more_flag; 1642b8e80941Smrg int yy_more_len; 1643b8e80941Smrg 1644b8e80941Smrg YYSTYPE * yylval_r; 1645b8e80941Smrg 1646b8e80941Smrg YYLTYPE * yylloc_r; 1647b8e80941Smrg 1648b8e80941Smrg }; /* end struct yyguts_t */ 1649b8e80941Smrg 1650b8e80941Smrgstatic int yy_init_globals ( yyscan_t yyscanner ); 1651b8e80941Smrg 1652b8e80941Smrg /* This must go here because YYSTYPE and YYLTYPE are included 1653b8e80941Smrg * from bison output in section 1.*/ 1654b8e80941Smrg # define yylval yyg->yylval_r 1655b8e80941Smrg 1656b8e80941Smrg # define yylloc yyg->yylloc_r 1657b8e80941Smrg 1658b8e80941Smrgint yylex_init (yyscan_t* scanner); 1659b8e80941Smrg 1660b8e80941Smrgint yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); 1661b8e80941Smrg 1662b8e80941Smrg/* Accessor methods to globals. 1663b8e80941Smrg These are made visible to non-reentrant scanners for convenience. */ 1664b8e80941Smrg 1665b8e80941Smrgint yylex_destroy ( yyscan_t yyscanner ); 1666b8e80941Smrg 1667b8e80941Smrgint yyget_debug ( yyscan_t yyscanner ); 1668b8e80941Smrg 1669b8e80941Smrgvoid yyset_debug ( int debug_flag , yyscan_t yyscanner ); 1670b8e80941Smrg 1671b8e80941SmrgYY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); 1672b8e80941Smrg 1673b8e80941Smrgvoid yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); 1674b8e80941Smrg 1675b8e80941SmrgFILE *yyget_in ( yyscan_t yyscanner ); 1676b8e80941Smrg 1677b8e80941Smrgvoid yyset_in ( FILE * _in_str , yyscan_t yyscanner ); 1678b8e80941Smrg 1679b8e80941SmrgFILE *yyget_out ( yyscan_t yyscanner ); 1680b8e80941Smrg 1681b8e80941Smrgvoid yyset_out ( FILE * _out_str , yyscan_t yyscanner ); 1682b8e80941Smrg 1683b8e80941Smrg yy_size_t yyget_leng ( yyscan_t yyscanner ); 1684b8e80941Smrg 1685b8e80941Smrgchar *yyget_text ( yyscan_t yyscanner ); 1686b8e80941Smrg 1687b8e80941Smrgint yyget_lineno ( yyscan_t yyscanner ); 1688b8e80941Smrg 1689b8e80941Smrgvoid yyset_lineno ( int _line_number , yyscan_t yyscanner ); 1690b8e80941Smrg 1691b8e80941Smrgint yyget_column ( yyscan_t yyscanner ); 1692b8e80941Smrg 1693b8e80941Smrgvoid yyset_column ( int _column_no , yyscan_t yyscanner ); 1694b8e80941Smrg 1695b8e80941SmrgYYSTYPE * yyget_lval ( yyscan_t yyscanner ); 1696b8e80941Smrg 1697b8e80941Smrgvoid yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); 1698b8e80941Smrg 1699b8e80941Smrg YYLTYPE *yyget_lloc ( yyscan_t yyscanner ); 1700b8e80941Smrg 1701b8e80941Smrg void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner ); 1702b8e80941Smrg 1703b8e80941Smrg/* Macros after this point can all be overridden by user definitions in 1704b8e80941Smrg * section 1. 1705b8e80941Smrg */ 1706b8e80941Smrg 1707b8e80941Smrg#ifndef YY_SKIP_YYWRAP 1708b8e80941Smrg#ifdef __cplusplus 1709b8e80941Smrgextern "C" int yywrap ( yyscan_t yyscanner ); 1710b8e80941Smrg#else 1711b8e80941Smrgextern int yywrap ( yyscan_t yyscanner ); 1712b8e80941Smrg#endif 1713b8e80941Smrg#endif 1714b8e80941Smrg 1715b8e80941Smrg#ifndef YY_NO_UNPUT 1716b8e80941Smrg 1717b8e80941Smrg#endif 1718b8e80941Smrg 1719b8e80941Smrg#ifndef yytext_ptr 1720b8e80941Smrgstatic void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); 1721b8e80941Smrg#endif 1722b8e80941Smrg 1723b8e80941Smrg#ifdef YY_NEED_STRLEN 1724b8e80941Smrgstatic int yy_flex_strlen ( const char * , yyscan_t yyscanner); 1725b8e80941Smrg#endif 1726b8e80941Smrg 1727b8e80941Smrg#ifndef YY_NO_INPUT 1728b8e80941Smrg#ifdef __cplusplus 1729b8e80941Smrgstatic int yyinput ( yyscan_t yyscanner ); 1730b8e80941Smrg#else 1731b8e80941Smrgstatic int input ( yyscan_t yyscanner ); 1732b8e80941Smrg#endif 1733b8e80941Smrg 1734b8e80941Smrg#endif 1735b8e80941Smrg 1736b8e80941Smrg/* Amount of stuff to slurp up with each read. */ 1737b8e80941Smrg#ifndef YY_READ_BUF_SIZE 1738b8e80941Smrg#ifdef __ia64__ 1739b8e80941Smrg/* On IA-64, the buffer size is 16k, not 8k */ 1740b8e80941Smrg#define YY_READ_BUF_SIZE 16384 1741b8e80941Smrg#else 1742b8e80941Smrg#define YY_READ_BUF_SIZE 8192 1743b8e80941Smrg#endif /* __ia64__ */ 1744b8e80941Smrg#endif 1745b8e80941Smrg 1746b8e80941Smrg/* Copy whatever the last rule matched to the standard output. */ 1747b8e80941Smrg#ifndef ECHO 1748b8e80941Smrg/* This used to be an fputs(), but since the string might contain NUL's, 1749b8e80941Smrg * we now use fwrite(). 1750b8e80941Smrg */ 1751b8e80941Smrg#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) 1752b8e80941Smrg#endif 1753b8e80941Smrg 1754b8e80941Smrg/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 1755b8e80941Smrg * is returned in "result". 1756b8e80941Smrg */ 1757b8e80941Smrg#ifndef YY_INPUT 1758b8e80941Smrg#define YY_INPUT(buf,result,max_size) \ 1759b8e80941Smrg if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ 1760b8e80941Smrg { \ 1761b8e80941Smrg int c = '*'; \ 1762b8e80941Smrg yy_size_t n; \ 1763b8e80941Smrg for ( n = 0; n < max_size && \ 1764b8e80941Smrg (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ 1765b8e80941Smrg buf[n] = (char) c; \ 1766b8e80941Smrg if ( c == '\n' ) \ 1767b8e80941Smrg buf[n++] = (char) c; \ 1768b8e80941Smrg if ( c == EOF && ferror( yyin ) ) \ 1769b8e80941Smrg YY_FATAL_ERROR( "input in flex scanner failed" ); \ 1770b8e80941Smrg result = n; \ 1771b8e80941Smrg } \ 1772b8e80941Smrg else \ 1773b8e80941Smrg { \ 1774b8e80941Smrg errno=0; \ 1775b8e80941Smrg while ( (result = fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ 1776b8e80941Smrg { \ 1777b8e80941Smrg if( errno != EINTR) \ 1778b8e80941Smrg { \ 1779b8e80941Smrg YY_FATAL_ERROR( "input in flex scanner failed" ); \ 1780b8e80941Smrg break; \ 1781b8e80941Smrg } \ 1782b8e80941Smrg errno=0; \ 1783b8e80941Smrg clearerr(yyin); \ 1784b8e80941Smrg } \ 1785b8e80941Smrg }\ 1786b8e80941Smrg\ 1787b8e80941Smrg 1788b8e80941Smrg#endif 1789b8e80941Smrg 1790b8e80941Smrg/* No semi-colon after return; correct usage is to write "yyterminate();" - 1791b8e80941Smrg * we don't want an extra ';' after the "return" because that will cause 1792b8e80941Smrg * some compilers to complain about unreachable statements. 1793b8e80941Smrg */ 1794b8e80941Smrg#ifndef yyterminate 1795b8e80941Smrg#define yyterminate() return YY_NULL 1796b8e80941Smrg#endif 1797b8e80941Smrg 1798b8e80941Smrg/* Number of entries by which start-condition stack grows. */ 1799b8e80941Smrg#ifndef YY_START_STACK_INCR 1800b8e80941Smrg#define YY_START_STACK_INCR 25 1801b8e80941Smrg#endif 1802b8e80941Smrg 1803b8e80941Smrg/* Report a fatal error. */ 1804b8e80941Smrg#ifndef YY_FATAL_ERROR 1805b8e80941Smrg#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) 1806b8e80941Smrg#endif 1807b8e80941Smrg 1808b8e80941Smrg/* end tables serialization structures and prototypes */ 1809b8e80941Smrg 1810b8e80941Smrg/* Default declaration of generated scanner - a define so the user can 1811b8e80941Smrg * easily add parameters. 1812b8e80941Smrg */ 1813b8e80941Smrg#ifndef YY_DECL 1814b8e80941Smrg#define YY_DECL_IS_OURS 1 1815b8e80941Smrg 1816b8e80941Smrgextern int yylex \ 1817b8e80941Smrg (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner); 1818b8e80941Smrg 1819b8e80941Smrg#define YY_DECL int yylex \ 1820b8e80941Smrg (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) 1821b8e80941Smrg#endif /* !YY_DECL */ 1822b8e80941Smrg 1823b8e80941Smrg/* Code executed at the beginning of each rule, after yytext and yyleng 1824b8e80941Smrg * have been set up. 1825b8e80941Smrg */ 1826b8e80941Smrg#ifndef YY_USER_ACTION 1827b8e80941Smrg#define YY_USER_ACTION 1828b8e80941Smrg#endif 1829b8e80941Smrg 1830b8e80941Smrg/* Code executed at the end of each rule. */ 1831b8e80941Smrg#ifndef YY_BREAK 1832b8e80941Smrg#define YY_BREAK /*LINTED*/break; 1833b8e80941Smrg#endif 1834b8e80941Smrg 1835b8e80941Smrg#define YY_RULE_SETUP \ 1836b8e80941Smrg if ( yyleng > 0 ) \ 1837b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ 1838b8e80941Smrg (yytext[yyleng - 1] == '\n'); \ 1839b8e80941Smrg YY_USER_ACTION 1840b8e80941Smrg 1841b8e80941Smrg/** The main scanner function which does all the work. 1842b8e80941Smrg */ 1843b8e80941SmrgYY_DECL 1844b8e80941Smrg{ 1845b8e80941Smrg yy_state_type yy_current_state; 1846b8e80941Smrg char *yy_cp, *yy_bp; 1847b8e80941Smrg int yy_act; 1848b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 1849b8e80941Smrg 1850b8e80941Smrg yylval = yylval_param; 1851b8e80941Smrg 1852b8e80941Smrg yylloc = yylloc_param; 1853b8e80941Smrg 1854b8e80941Smrg if ( !yyg->yy_init ) 1855b8e80941Smrg { 1856b8e80941Smrg yyg->yy_init = 1; 1857b8e80941Smrg 1858b8e80941Smrg#ifdef YY_USER_INIT 1859b8e80941Smrg YY_USER_INIT; 1860b8e80941Smrg#endif 1861b8e80941Smrg 1862b8e80941Smrg if ( ! yyg->yy_start ) 1863b8e80941Smrg yyg->yy_start = 1; /* first start state */ 1864b8e80941Smrg 1865b8e80941Smrg if ( ! yyin ) 1866b8e80941Smrg yyin = stdin; 1867b8e80941Smrg 1868b8e80941Smrg if ( ! yyout ) 1869b8e80941Smrg yyout = stdout; 1870b8e80941Smrg 1871b8e80941Smrg if ( ! YY_CURRENT_BUFFER ) { 1872b8e80941Smrg yyensure_buffer_stack (yyscanner); 1873b8e80941Smrg YY_CURRENT_BUFFER_LVALUE = 1874b8e80941Smrg yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); 1875b8e80941Smrg } 1876b8e80941Smrg 1877b8e80941Smrg yy_load_buffer_state( yyscanner ); 1878b8e80941Smrg } 1879b8e80941Smrg 1880b8e80941Smrg { 1881b8e80941Smrg#line 230 "../src/compiler/glsl/glsl_lexer.ll" 1882b8e80941Smrg 1883b8e80941Smrg 1884b8e80941Smrg#line 1884 "src/compiler/glsl/glsl_lexer.cpp" 1885b8e80941Smrg 1886b8e80941Smrg while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ 1887b8e80941Smrg { 1888b8e80941Smrg yy_cp = yyg->yy_c_buf_p; 1889b8e80941Smrg 1890b8e80941Smrg /* Support of yytext. */ 1891b8e80941Smrg *yy_cp = yyg->yy_hold_char; 1892b8e80941Smrg 1893b8e80941Smrg /* yy_bp points to the position in yy_ch_buf of the start of 1894b8e80941Smrg * the current run. 1895b8e80941Smrg */ 1896b8e80941Smrg yy_bp = yy_cp; 1897b8e80941Smrg 1898b8e80941Smrg yy_current_state = yyg->yy_start; 1899b8e80941Smrg yy_current_state += YY_AT_BOL(); 1900b8e80941Smrgyy_match: 1901b8e80941Smrg do 1902b8e80941Smrg { 1903b8e80941Smrg YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; 1904b8e80941Smrg if ( yy_accept[yy_current_state] ) 1905b8e80941Smrg { 1906b8e80941Smrg yyg->yy_last_accepting_state = yy_current_state; 1907b8e80941Smrg yyg->yy_last_accepting_cpos = yy_cp; 1908b8e80941Smrg } 1909b8e80941Smrg while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 1910b8e80941Smrg { 1911b8e80941Smrg yy_current_state = (int) yy_def[yy_current_state]; 1912b8e80941Smrg if ( yy_current_state >= 1096 ) 1913b8e80941Smrg yy_c = yy_meta[yy_c]; 1914b8e80941Smrg } 1915b8e80941Smrg yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; 1916b8e80941Smrg ++yy_cp; 1917b8e80941Smrg } 1918b8e80941Smrg while ( yy_current_state != 1095 ); 1919b8e80941Smrg yy_cp = yyg->yy_last_accepting_cpos; 1920b8e80941Smrg yy_current_state = yyg->yy_last_accepting_state; 1921b8e80941Smrg 1922b8e80941Smrgyy_find_action: 1923b8e80941Smrg yy_act = yy_accept[yy_current_state]; 1924b8e80941Smrg 1925b8e80941Smrg YY_DO_BEFORE_ACTION; 1926b8e80941Smrg 1927b8e80941Smrgdo_action: /* This label is used only to access EOF actions. */ 1928b8e80941Smrg 1929b8e80941Smrg switch ( yy_act ) 1930b8e80941Smrg { /* beginning of action switch */ 1931b8e80941Smrg case 0: /* must back up */ 1932b8e80941Smrg /* undo the effects of YY_DO_BEFORE_ACTION */ 1933b8e80941Smrg *yy_cp = yyg->yy_hold_char; 1934b8e80941Smrg yy_cp = yyg->yy_last_accepting_cpos; 1935b8e80941Smrg yy_current_state = yyg->yy_last_accepting_state; 1936b8e80941Smrg goto yy_find_action; 1937b8e80941Smrg 1938b8e80941Smrgcase 1: 1939b8e80941SmrgYY_RULE_SETUP 1940b8e80941Smrg#line 232 "../src/compiler/glsl/glsl_lexer.ll" 1941b8e80941Smrg; 1942b8e80941Smrg YY_BREAK 1943b8e80941Smrg/* Preprocessor tokens. */ 1944b8e80941Smrgcase 2: 1945b8e80941Smrg*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ 1946b8e80941Smrgyyg->yy_c_buf_p = yy_cp -= 1; 1947b8e80941SmrgYY_DO_BEFORE_ACTION; /* set up yytext again */ 1948b8e80941SmrgYY_RULE_SETUP 1949b8e80941Smrg#line 235 "../src/compiler/glsl/glsl_lexer.ll" 1950b8e80941Smrg; 1951b8e80941Smrg YY_BREAK 1952b8e80941Smrgcase 3: 1953b8e80941SmrgYY_RULE_SETUP 1954b8e80941Smrg#line 236 "../src/compiler/glsl/glsl_lexer.ll" 1955b8e80941Smrg{ BEGIN PP; return VERSION_TOK; } 1956b8e80941Smrg YY_BREAK 1957b8e80941Smrgcase 4: 1958b8e80941SmrgYY_RULE_SETUP 1959b8e80941Smrg#line 237 "../src/compiler/glsl/glsl_lexer.ll" 1960b8e80941Smrg{ BEGIN PP; return EXTENSION; } 1961b8e80941Smrg YY_BREAK 1962b8e80941Smrgcase 5: 1963b8e80941Smrg*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ 1964b8e80941Smrgyyg->yy_c_buf_p = yy_cp -= 1; 1965b8e80941SmrgYY_DO_BEFORE_ACTION; /* set up yytext again */ 1966b8e80941SmrgYY_RULE_SETUP 1967b8e80941Smrg#line 238 "../src/compiler/glsl/glsl_lexer.ll" 1968b8e80941Smrg{ 1969b8e80941Smrg /* Eat characters until the first digit is 1970b8e80941Smrg * encountered 1971b8e80941Smrg */ 1972b8e80941Smrg char *ptr = yytext; 1973b8e80941Smrg while (!isdigit(*ptr)) 1974b8e80941Smrg ptr++; 1975b8e80941Smrg 1976b8e80941Smrg /* Subtract one from the line number because 1977b8e80941Smrg * yylineno is zero-based instead of 1978b8e80941Smrg * one-based. 1979b8e80941Smrg */ 1980b8e80941Smrg yylineno = strtol(ptr, &ptr, 0) - 1; 1981b8e80941Smrg 1982b8e80941Smrg /* From GLSL 3.30 and GLSL ES on, after processing the 1983b8e80941Smrg * line directive (including its new-line), the implementation 1984b8e80941Smrg * will behave as if it is compiling at the line number passed 1985b8e80941Smrg * as argument. It was line number + 1 in older specifications. 1986b8e80941Smrg */ 1987b8e80941Smrg if (yyextra->is_version(330, 100)) 1988b8e80941Smrg yylineno--; 1989b8e80941Smrg 1990b8e80941Smrg yylloc->source = strtol(ptr, NULL, 0); 1991b8e80941Smrg } 1992b8e80941Smrg YY_BREAK 1993b8e80941Smrgcase 6: 1994b8e80941Smrg*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ 1995b8e80941Smrgyyg->yy_c_buf_p = yy_cp -= 1; 1996b8e80941SmrgYY_DO_BEFORE_ACTION; /* set up yytext again */ 1997b8e80941SmrgYY_RULE_SETUP 1998b8e80941Smrg#line 262 "../src/compiler/glsl/glsl_lexer.ll" 1999b8e80941Smrg{ 2000b8e80941Smrg /* Eat characters until the first digit is 2001b8e80941Smrg * encountered 2002b8e80941Smrg */ 2003b8e80941Smrg char *ptr = yytext; 2004b8e80941Smrg while (!isdigit(*ptr)) 2005b8e80941Smrg ptr++; 2006b8e80941Smrg 2007b8e80941Smrg /* Subtract one from the line number because 2008b8e80941Smrg * yylineno is zero-based instead of 2009b8e80941Smrg * one-based. 2010b8e80941Smrg */ 2011b8e80941Smrg yylineno = strtol(ptr, &ptr, 0) - 1; 2012b8e80941Smrg 2013b8e80941Smrg /* From GLSL 3.30 and GLSL ES on, after processing the 2014b8e80941Smrg * line directive (including its new-line), the implementation 2015b8e80941Smrg * will behave as if it is compiling at the line number passed 2016b8e80941Smrg * as argument. It was line number + 1 in older specifications. 2017b8e80941Smrg */ 2018b8e80941Smrg if (yyextra->is_version(330, 100)) 2019b8e80941Smrg yylineno--; 2020b8e80941Smrg } 2021b8e80941Smrg YY_BREAK 2022b8e80941Smrgcase 7: 2023b8e80941SmrgYY_RULE_SETUP 2024b8e80941Smrg#line 284 "../src/compiler/glsl/glsl_lexer.ll" 2025b8e80941Smrg{ 2026b8e80941Smrg BEGIN PP; 2027b8e80941Smrg return PRAGMA_DEBUG_ON; 2028b8e80941Smrg } 2029b8e80941Smrg YY_BREAK 2030b8e80941Smrgcase 8: 2031b8e80941SmrgYY_RULE_SETUP 2032b8e80941Smrg#line 288 "../src/compiler/glsl/glsl_lexer.ll" 2033b8e80941Smrg{ 2034b8e80941Smrg BEGIN PP; 2035b8e80941Smrg return PRAGMA_DEBUG_OFF; 2036b8e80941Smrg } 2037b8e80941Smrg YY_BREAK 2038b8e80941Smrgcase 9: 2039b8e80941SmrgYY_RULE_SETUP 2040b8e80941Smrg#line 292 "../src/compiler/glsl/glsl_lexer.ll" 2041b8e80941Smrg{ 2042b8e80941Smrg BEGIN PP; 2043b8e80941Smrg return PRAGMA_OPTIMIZE_ON; 2044b8e80941Smrg } 2045b8e80941Smrg YY_BREAK 2046b8e80941Smrgcase 10: 2047b8e80941SmrgYY_RULE_SETUP 2048b8e80941Smrg#line 296 "../src/compiler/glsl/glsl_lexer.ll" 2049b8e80941Smrg{ 2050b8e80941Smrg BEGIN PP; 2051b8e80941Smrg return PRAGMA_OPTIMIZE_OFF; 2052b8e80941Smrg } 2053b8e80941Smrg YY_BREAK 2054b8e80941Smrgcase 11: 2055b8e80941SmrgYY_RULE_SETUP 2056b8e80941Smrg#line 300 "../src/compiler/glsl/glsl_lexer.ll" 2057b8e80941Smrg{ 2058b8e80941Smrg BEGIN PP; 2059b8e80941Smrg return PRAGMA_WARNING_ON; 2060b8e80941Smrg } 2061b8e80941Smrg YY_BREAK 2062b8e80941Smrgcase 12: 2063b8e80941SmrgYY_RULE_SETUP 2064b8e80941Smrg#line 304 "../src/compiler/glsl/glsl_lexer.ll" 2065b8e80941Smrg{ 2066b8e80941Smrg BEGIN PP; 2067b8e80941Smrg return PRAGMA_WARNING_OFF; 2068b8e80941Smrg } 2069b8e80941Smrg YY_BREAK 2070b8e80941Smrgcase 13: 2071b8e80941SmrgYY_RULE_SETUP 2072b8e80941Smrg#line 308 "../src/compiler/glsl/glsl_lexer.ll" 2073b8e80941Smrg{ 2074b8e80941Smrg BEGIN PP; 2075b8e80941Smrg return PRAGMA_INVARIANT_ALL; 2076b8e80941Smrg } 2077b8e80941Smrg YY_BREAK 2078b8e80941Smrgcase 14: 2079b8e80941SmrgYY_RULE_SETUP 2080b8e80941Smrg#line 312 "../src/compiler/glsl/glsl_lexer.ll" 2081b8e80941Smrg{ BEGIN PRAGMA; } 2082b8e80941Smrg YY_BREAK 2083b8e80941Smrgcase 15: 2084b8e80941Smrg/* rule 15 can match eol */ 2085b8e80941SmrgYY_RULE_SETUP 2086b8e80941Smrg#line 314 "../src/compiler/glsl/glsl_lexer.ll" 2087b8e80941Smrg{ BEGIN 0; yylineno++; yycolumn = 0; } 2088b8e80941Smrg YY_BREAK 2089b8e80941Smrgcase 16: 2090b8e80941SmrgYY_RULE_SETUP 2091b8e80941Smrg#line 315 "../src/compiler/glsl/glsl_lexer.ll" 2092b8e80941Smrg{ } 2093b8e80941Smrg YY_BREAK 2094b8e80941Smrgcase 17: 2095b8e80941SmrgYY_RULE_SETUP 2096b8e80941Smrg#line 317 "../src/compiler/glsl/glsl_lexer.ll" 2097b8e80941Smrg{ } 2098b8e80941Smrg YY_BREAK 2099b8e80941Smrgcase 18: 2100b8e80941SmrgYY_RULE_SETUP 2101b8e80941Smrg#line 318 "../src/compiler/glsl/glsl_lexer.ll" 2102b8e80941Smrg{ } 2103b8e80941Smrg YY_BREAK 2104b8e80941Smrgcase 19: 2105b8e80941SmrgYY_RULE_SETUP 2106b8e80941Smrg#line 319 "../src/compiler/glsl/glsl_lexer.ll" 2107b8e80941Smrgreturn COLON; 2108b8e80941Smrg YY_BREAK 2109b8e80941Smrgcase 20: 2110b8e80941SmrgYY_RULE_SETUP 2111b8e80941Smrg#line 320 "../src/compiler/glsl/glsl_lexer.ll" 2112b8e80941Smrg{ 2113b8e80941Smrg /* We're not doing linear_strdup here, to avoid an implicit call 2114b8e80941Smrg * on strlen() for the length of the string, as this is already 2115b8e80941Smrg * found by flex and stored in yyleng 2116b8e80941Smrg */ 2117b8e80941Smrg void *mem_ctx = yyextra->linalloc; 2118b8e80941Smrg char *id = (char *) linear_alloc_child(mem_ctx, yyleng + 1); 2119b8e80941Smrg memcpy(id, yytext, yyleng + 1); 2120b8e80941Smrg yylval->identifier = id; 2121b8e80941Smrg return IDENTIFIER; 2122b8e80941Smrg } 2123b8e80941Smrg YY_BREAK 2124b8e80941Smrgcase 21: 2125b8e80941SmrgYY_RULE_SETUP 2126b8e80941Smrg#line 331 "../src/compiler/glsl/glsl_lexer.ll" 2127b8e80941Smrg{ 2128b8e80941Smrg yylval->n = strtol(yytext, NULL, 10); 2129b8e80941Smrg return INTCONSTANT; 2130b8e80941Smrg } 2131b8e80941Smrg YY_BREAK 2132b8e80941Smrgcase 22: 2133b8e80941SmrgYY_RULE_SETUP 2134b8e80941Smrg#line 335 "../src/compiler/glsl/glsl_lexer.ll" 2135b8e80941Smrg{ 2136b8e80941Smrg yylval->n = 0; 2137b8e80941Smrg return INTCONSTANT; 2138b8e80941Smrg } 2139b8e80941Smrg YY_BREAK 2140b8e80941Smrgcase 23: 2141b8e80941Smrg/* rule 23 can match eol */ 2142b8e80941SmrgYY_RULE_SETUP 2143b8e80941Smrg#line 339 "../src/compiler/glsl/glsl_lexer.ll" 2144b8e80941Smrg{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; } 2145b8e80941Smrg YY_BREAK 2146b8e80941Smrgcase 24: 2147b8e80941SmrgYY_RULE_SETUP 2148b8e80941Smrg#line 340 "../src/compiler/glsl/glsl_lexer.ll" 2149b8e80941Smrg{ return yytext[0]; } 2150b8e80941Smrg YY_BREAK 2151b8e80941Smrgcase 25: 2152b8e80941Smrg/* rule 25 can match eol */ 2153b8e80941SmrgYY_RULE_SETUP 2154b8e80941Smrg#line 342 "../src/compiler/glsl/glsl_lexer.ll" 2155b8e80941Smrg{ yylineno++; yycolumn = 0; } 2156b8e80941Smrg YY_BREAK 2157b8e80941Smrgcase 26: 2158b8e80941SmrgYY_RULE_SETUP 2159b8e80941Smrg#line 344 "../src/compiler/glsl/glsl_lexer.ll" 2160b8e80941SmrgDEPRECATED_ES_KEYWORD(ATTRIBUTE); 2161b8e80941Smrg YY_BREAK 2162b8e80941Smrgcase 27: 2163b8e80941SmrgYY_RULE_SETUP 2164b8e80941Smrg#line 345 "../src/compiler/glsl/glsl_lexer.ll" 2165b8e80941Smrgreturn CONST_TOK; 2166b8e80941Smrg YY_BREAK 2167b8e80941Smrgcase 28: 2168b8e80941SmrgYY_RULE_SETUP 2169b8e80941Smrg#line 346 "../src/compiler/glsl/glsl_lexer.ll" 2170b8e80941Smrg{ yylval->type = glsl_type::bool_type; return BASIC_TYPE_TOK; } 2171b8e80941Smrg YY_BREAK 2172b8e80941Smrgcase 29: 2173b8e80941SmrgYY_RULE_SETUP 2174b8e80941Smrg#line 347 "../src/compiler/glsl/glsl_lexer.ll" 2175b8e80941Smrg{ yylval->type = glsl_type::float_type; return BASIC_TYPE_TOK; } 2176b8e80941Smrg YY_BREAK 2177b8e80941Smrgcase 30: 2178b8e80941SmrgYY_RULE_SETUP 2179b8e80941Smrg#line 348 "../src/compiler/glsl/glsl_lexer.ll" 2180b8e80941Smrg{ yylval->type = glsl_type::int_type; return BASIC_TYPE_TOK; } 2181b8e80941Smrg YY_BREAK 2182b8e80941Smrgcase 31: 2183b8e80941SmrgYY_RULE_SETUP 2184b8e80941Smrg#line 349 "../src/compiler/glsl/glsl_lexer.ll" 2185b8e80941SmrgTYPE(130, 300, 130, 300, glsl_type::uint_type); 2186b8e80941Smrg YY_BREAK 2187b8e80941Smrgcase 32: 2188b8e80941SmrgYY_RULE_SETUP 2189b8e80941Smrg#line 351 "../src/compiler/glsl/glsl_lexer.ll" 2190b8e80941Smrgreturn BREAK; 2191b8e80941Smrg YY_BREAK 2192b8e80941Smrgcase 33: 2193b8e80941SmrgYY_RULE_SETUP 2194b8e80941Smrg#line 352 "../src/compiler/glsl/glsl_lexer.ll" 2195b8e80941Smrgreturn CONTINUE; 2196b8e80941Smrg YY_BREAK 2197b8e80941Smrgcase 34: 2198b8e80941SmrgYY_RULE_SETUP 2199b8e80941Smrg#line 353 "../src/compiler/glsl/glsl_lexer.ll" 2200b8e80941Smrgreturn DO; 2201b8e80941Smrg YY_BREAK 2202b8e80941Smrgcase 35: 2203b8e80941SmrgYY_RULE_SETUP 2204b8e80941Smrg#line 354 "../src/compiler/glsl/glsl_lexer.ll" 2205b8e80941Smrgreturn WHILE; 2206b8e80941Smrg YY_BREAK 2207b8e80941Smrgcase 36: 2208b8e80941SmrgYY_RULE_SETUP 2209b8e80941Smrg#line 355 "../src/compiler/glsl/glsl_lexer.ll" 2210b8e80941Smrgreturn ELSE; 2211b8e80941Smrg YY_BREAK 2212b8e80941Smrgcase 37: 2213b8e80941SmrgYY_RULE_SETUP 2214b8e80941Smrg#line 356 "../src/compiler/glsl/glsl_lexer.ll" 2215b8e80941Smrgreturn FOR; 2216b8e80941Smrg YY_BREAK 2217b8e80941Smrgcase 38: 2218b8e80941SmrgYY_RULE_SETUP 2219b8e80941Smrg#line 357 "../src/compiler/glsl/glsl_lexer.ll" 2220b8e80941Smrgreturn IF; 2221b8e80941Smrg YY_BREAK 2222b8e80941Smrgcase 39: 2223b8e80941SmrgYY_RULE_SETUP 2224b8e80941Smrg#line 358 "../src/compiler/glsl/glsl_lexer.ll" 2225b8e80941Smrgreturn DISCARD; 2226b8e80941Smrg YY_BREAK 2227b8e80941Smrgcase 40: 2228b8e80941SmrgYY_RULE_SETUP 2229b8e80941Smrg#line 359 "../src/compiler/glsl/glsl_lexer.ll" 2230b8e80941Smrgreturn RETURN; 2231b8e80941Smrg YY_BREAK 2232b8e80941Smrgcase 41: 2233b8e80941SmrgYY_RULE_SETUP 2234b8e80941Smrg#line 361 "../src/compiler/glsl/glsl_lexer.ll" 2235b8e80941Smrg{ yylval->type = glsl_type::bvec2_type; return BASIC_TYPE_TOK; } 2236b8e80941Smrg YY_BREAK 2237b8e80941Smrgcase 42: 2238b8e80941SmrgYY_RULE_SETUP 2239b8e80941Smrg#line 362 "../src/compiler/glsl/glsl_lexer.ll" 2240b8e80941Smrg{ yylval->type = glsl_type::bvec3_type; return BASIC_TYPE_TOK; } 2241b8e80941Smrg YY_BREAK 2242b8e80941Smrgcase 43: 2243b8e80941SmrgYY_RULE_SETUP 2244b8e80941Smrg#line 363 "../src/compiler/glsl/glsl_lexer.ll" 2245b8e80941Smrg{ yylval->type = glsl_type::bvec4_type; return BASIC_TYPE_TOK; } 2246b8e80941Smrg YY_BREAK 2247b8e80941Smrgcase 44: 2248b8e80941SmrgYY_RULE_SETUP 2249b8e80941Smrg#line 364 "../src/compiler/glsl/glsl_lexer.ll" 2250b8e80941Smrg{ yylval->type = glsl_type::ivec2_type; return BASIC_TYPE_TOK; } 2251b8e80941Smrg YY_BREAK 2252b8e80941Smrgcase 45: 2253b8e80941SmrgYY_RULE_SETUP 2254b8e80941Smrg#line 365 "../src/compiler/glsl/glsl_lexer.ll" 2255b8e80941Smrg{ yylval->type = glsl_type::ivec3_type; return BASIC_TYPE_TOK; } 2256b8e80941Smrg YY_BREAK 2257b8e80941Smrgcase 46: 2258b8e80941SmrgYY_RULE_SETUP 2259b8e80941Smrg#line 366 "../src/compiler/glsl/glsl_lexer.ll" 2260b8e80941Smrg{ yylval->type = glsl_type::ivec4_type; return BASIC_TYPE_TOK; } 2261b8e80941Smrg YY_BREAK 2262b8e80941Smrgcase 47: 2263b8e80941SmrgYY_RULE_SETUP 2264b8e80941Smrg#line 367 "../src/compiler/glsl/glsl_lexer.ll" 2265b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec2_type); 2266b8e80941Smrg YY_BREAK 2267b8e80941Smrgcase 48: 2268b8e80941SmrgYY_RULE_SETUP 2269b8e80941Smrg#line 368 "../src/compiler/glsl/glsl_lexer.ll" 2270b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec3_type); 2271b8e80941Smrg YY_BREAK 2272b8e80941Smrgcase 49: 2273b8e80941SmrgYY_RULE_SETUP 2274b8e80941Smrg#line 369 "../src/compiler/glsl/glsl_lexer.ll" 2275b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec4_type); 2276b8e80941Smrg YY_BREAK 2277b8e80941Smrgcase 50: 2278b8e80941SmrgYY_RULE_SETUP 2279b8e80941Smrg#line 370 "../src/compiler/glsl/glsl_lexer.ll" 2280b8e80941Smrg{ yylval->type = glsl_type::vec2_type; return BASIC_TYPE_TOK; } 2281b8e80941Smrg YY_BREAK 2282b8e80941Smrgcase 51: 2283b8e80941SmrgYY_RULE_SETUP 2284b8e80941Smrg#line 371 "../src/compiler/glsl/glsl_lexer.ll" 2285b8e80941Smrg{ yylval->type = glsl_type::vec3_type; return BASIC_TYPE_TOK; } 2286b8e80941Smrg YY_BREAK 2287b8e80941Smrgcase 52: 2288b8e80941SmrgYY_RULE_SETUP 2289b8e80941Smrg#line 372 "../src/compiler/glsl/glsl_lexer.ll" 2290b8e80941Smrg{ yylval->type = glsl_type::vec4_type; return BASIC_TYPE_TOK; } 2291b8e80941Smrg YY_BREAK 2292b8e80941Smrgcase 53: 2293b8e80941SmrgYY_RULE_SETUP 2294b8e80941Smrg#line 373 "../src/compiler/glsl/glsl_lexer.ll" 2295b8e80941Smrg{ yylval->type = glsl_type::mat2_type; return BASIC_TYPE_TOK; } 2296b8e80941Smrg YY_BREAK 2297b8e80941Smrgcase 54: 2298b8e80941SmrgYY_RULE_SETUP 2299b8e80941Smrg#line 374 "../src/compiler/glsl/glsl_lexer.ll" 2300b8e80941Smrg{ yylval->type = glsl_type::mat3_type; return BASIC_TYPE_TOK; } 2301b8e80941Smrg YY_BREAK 2302b8e80941Smrgcase 55: 2303b8e80941SmrgYY_RULE_SETUP 2304b8e80941Smrg#line 375 "../src/compiler/glsl/glsl_lexer.ll" 2305b8e80941Smrg{ yylval->type = glsl_type::mat4_type; return BASIC_TYPE_TOK; } 2306b8e80941Smrg YY_BREAK 2307b8e80941Smrgcase 56: 2308b8e80941SmrgYY_RULE_SETUP 2309b8e80941Smrg#line 376 "../src/compiler/glsl/glsl_lexer.ll" 2310b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat2_type); 2311b8e80941Smrg YY_BREAK 2312b8e80941Smrgcase 57: 2313b8e80941SmrgYY_RULE_SETUP 2314b8e80941Smrg#line 377 "../src/compiler/glsl/glsl_lexer.ll" 2315b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat2x3_type); 2316b8e80941Smrg YY_BREAK 2317b8e80941Smrgcase 58: 2318b8e80941SmrgYY_RULE_SETUP 2319b8e80941Smrg#line 378 "../src/compiler/glsl/glsl_lexer.ll" 2320b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat2x4_type); 2321b8e80941Smrg YY_BREAK 2322b8e80941Smrgcase 59: 2323b8e80941SmrgYY_RULE_SETUP 2324b8e80941Smrg#line 379 "../src/compiler/glsl/glsl_lexer.ll" 2325b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat3x2_type); 2326b8e80941Smrg YY_BREAK 2327b8e80941Smrgcase 60: 2328b8e80941SmrgYY_RULE_SETUP 2329b8e80941Smrg#line 380 "../src/compiler/glsl/glsl_lexer.ll" 2330b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat3_type); 2331b8e80941Smrg YY_BREAK 2332b8e80941Smrgcase 61: 2333b8e80941SmrgYY_RULE_SETUP 2334b8e80941Smrg#line 381 "../src/compiler/glsl/glsl_lexer.ll" 2335b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat3x4_type); 2336b8e80941Smrg YY_BREAK 2337b8e80941Smrgcase 62: 2338b8e80941SmrgYY_RULE_SETUP 2339b8e80941Smrg#line 382 "../src/compiler/glsl/glsl_lexer.ll" 2340b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat4x2_type); 2341b8e80941Smrg YY_BREAK 2342b8e80941Smrgcase 63: 2343b8e80941SmrgYY_RULE_SETUP 2344b8e80941Smrg#line 383 "../src/compiler/glsl/glsl_lexer.ll" 2345b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat4x3_type); 2346b8e80941Smrg YY_BREAK 2347b8e80941Smrgcase 64: 2348b8e80941SmrgYY_RULE_SETUP 2349b8e80941Smrg#line 384 "../src/compiler/glsl/glsl_lexer.ll" 2350b8e80941SmrgTYPE(120, 300, 120, 300, glsl_type::mat4_type); 2351b8e80941Smrg YY_BREAK 2352b8e80941Smrgcase 65: 2353b8e80941SmrgYY_RULE_SETUP 2354b8e80941Smrg#line 386 "../src/compiler/glsl/glsl_lexer.ll" 2355b8e80941Smrgreturn IN_TOK; 2356b8e80941Smrg YY_BREAK 2357b8e80941Smrgcase 66: 2358b8e80941SmrgYY_RULE_SETUP 2359b8e80941Smrg#line 387 "../src/compiler/glsl/glsl_lexer.ll" 2360b8e80941Smrgreturn OUT_TOK; 2361b8e80941Smrg YY_BREAK 2362b8e80941Smrgcase 67: 2363b8e80941SmrgYY_RULE_SETUP 2364b8e80941Smrg#line 388 "../src/compiler/glsl/glsl_lexer.ll" 2365b8e80941Smrgreturn INOUT_TOK; 2366b8e80941Smrg YY_BREAK 2367b8e80941Smrgcase 68: 2368b8e80941SmrgYY_RULE_SETUP 2369b8e80941Smrg#line 389 "../src/compiler/glsl/glsl_lexer.ll" 2370b8e80941Smrgreturn UNIFORM; 2371b8e80941Smrg YY_BREAK 2372b8e80941Smrgcase 69: 2373b8e80941SmrgYY_RULE_SETUP 2374b8e80941Smrg#line 390 "../src/compiler/glsl/glsl_lexer.ll" 2375b8e80941SmrgKEYWORD_WITH_ALT(0, 0, 430, 310, yyextra->ARB_shader_storage_buffer_object_enable, BUFFER); 2376b8e80941Smrg YY_BREAK 2377b8e80941Smrgcase 70: 2378b8e80941SmrgYY_RULE_SETUP 2379b8e80941Smrg#line 391 "../src/compiler/glsl/glsl_lexer.ll" 2380b8e80941SmrgDEPRECATED_ES_KEYWORD(VARYING); 2381b8e80941Smrg YY_BREAK 2382b8e80941Smrgcase 71: 2383b8e80941SmrgYY_RULE_SETUP 2384b8e80941Smrg#line 392 "../src/compiler/glsl/glsl_lexer.ll" 2385b8e80941SmrgKEYWORD_WITH_ALT(120, 300, 120, 300, yyextra->EXT_gpu_shader4_enable, CENTROID); 2386b8e80941Smrg YY_BREAK 2387b8e80941Smrgcase 72: 2388b8e80941SmrgYY_RULE_SETUP 2389b8e80941Smrg#line 393 "../src/compiler/glsl/glsl_lexer.ll" 2390b8e80941SmrgKEYWORD(120, 100, 120, 100, INVARIANT); 2391b8e80941Smrg YY_BREAK 2392b8e80941Smrgcase 73: 2393b8e80941SmrgYY_RULE_SETUP 2394b8e80941Smrg#line 394 "../src/compiler/glsl/glsl_lexer.ll" 2395b8e80941SmrgKEYWORD_WITH_ALT(130, 100, 130, 300, yyextra->EXT_gpu_shader4_enable, FLAT); 2396b8e80941Smrg YY_BREAK 2397b8e80941Smrgcase 74: 2398b8e80941SmrgYY_RULE_SETUP 2399b8e80941Smrg#line 395 "../src/compiler/glsl/glsl_lexer.ll" 2400b8e80941SmrgKEYWORD(130, 300, 130, 300, SMOOTH); 2401b8e80941Smrg YY_BREAK 2402b8e80941Smrgcase 75: 2403b8e80941SmrgYY_RULE_SETUP 2404b8e80941Smrg#line 396 "../src/compiler/glsl/glsl_lexer.ll" 2405b8e80941SmrgKEYWORD_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable, NOPERSPECTIVE); 2406b8e80941Smrg YY_BREAK 2407b8e80941Smrgcase 76: 2408b8e80941SmrgYY_RULE_SETUP 2409b8e80941Smrg#line 397 "../src/compiler/glsl/glsl_lexer.ll" 2410b8e80941SmrgKEYWORD_WITH_ALT(0, 300, 400, 320, yyextra->has_tessellation_shader(), PATCH); 2411b8e80941Smrg YY_BREAK 2412b8e80941Smrgcase 77: 2413b8e80941SmrgYY_RULE_SETUP 2414b8e80941Smrg#line 399 "../src/compiler/glsl/glsl_lexer.ll" 2415b8e80941SmrgDEPRECATED_ES_TYPE(glsl_type::sampler1D_type); 2416b8e80941Smrg YY_BREAK 2417b8e80941Smrgcase 78: 2418b8e80941SmrgYY_RULE_SETUP 2419b8e80941Smrg#line 400 "../src/compiler/glsl/glsl_lexer.ll" 2420b8e80941Smrg{ yylval->type = glsl_type::sampler2D_type; return BASIC_TYPE_TOK; } 2421b8e80941Smrg YY_BREAK 2422b8e80941Smrgcase 79: 2423b8e80941SmrgYY_RULE_SETUP 2424b8e80941Smrg#line 401 "../src/compiler/glsl/glsl_lexer.ll" 2425b8e80941Smrg{ yylval->type = glsl_type::sampler3D_type; return BASIC_TYPE_TOK; } 2426b8e80941Smrg YY_BREAK 2427b8e80941Smrgcase 80: 2428b8e80941SmrgYY_RULE_SETUP 2429b8e80941Smrg#line 402 "../src/compiler/glsl/glsl_lexer.ll" 2430b8e80941Smrg{ yylval->type = glsl_type::samplerCube_type; return BASIC_TYPE_TOK; } 2431b8e80941Smrg YY_BREAK 2432b8e80941Smrgcase 81: 2433b8e80941SmrgYY_RULE_SETUP 2434b8e80941Smrg#line 403 "../src/compiler/glsl/glsl_lexer.ll" 2435b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler1DArray_type); 2436b8e80941Smrg YY_BREAK 2437b8e80941Smrgcase 82: 2438b8e80941SmrgYY_RULE_SETUP 2439b8e80941Smrg#line 404 "../src/compiler/glsl/glsl_lexer.ll" 2440b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler2DArray_type); 2441b8e80941Smrg YY_BREAK 2442b8e80941Smrgcase 83: 2443b8e80941SmrgYY_RULE_SETUP 2444b8e80941Smrg#line 405 "../src/compiler/glsl/glsl_lexer.ll" 2445b8e80941SmrgDEPRECATED_ES_TYPE(glsl_type::sampler1DShadow_type); 2446b8e80941Smrg YY_BREAK 2447b8e80941Smrgcase 84: 2448b8e80941SmrgYY_RULE_SETUP 2449b8e80941Smrg#line 406 "../src/compiler/glsl/glsl_lexer.ll" 2450b8e80941Smrg{ yylval->type = glsl_type::sampler2DShadow_type; return BASIC_TYPE_TOK; } 2451b8e80941Smrg YY_BREAK 2452b8e80941Smrgcase 85: 2453b8e80941SmrgYY_RULE_SETUP 2454b8e80941Smrg#line 407 "../src/compiler/glsl/glsl_lexer.ll" 2455b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::samplerCubeShadow_type); 2456b8e80941Smrg YY_BREAK 2457b8e80941Smrgcase 86: 2458b8e80941SmrgYY_RULE_SETUP 2459b8e80941Smrg#line 408 "../src/compiler/glsl/glsl_lexer.ll" 2460b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler1DArrayShadow_type); 2461b8e80941Smrg YY_BREAK 2462b8e80941Smrgcase 87: 2463b8e80941SmrgYY_RULE_SETUP 2464b8e80941Smrg#line 409 "../src/compiler/glsl/glsl_lexer.ll" 2465b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::sampler2DArrayShadow_type); 2466b8e80941Smrg YY_BREAK 2467b8e80941Smrgcase 88: 2468b8e80941SmrgYY_RULE_SETUP 2469b8e80941Smrg#line 410 "../src/compiler/glsl/glsl_lexer.ll" 2470b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler1D_type); 2471b8e80941Smrg YY_BREAK 2472b8e80941Smrgcase 89: 2473b8e80941SmrgYY_RULE_SETUP 2474b8e80941Smrg#line 411 "../src/compiler/glsl/glsl_lexer.ll" 2475b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler2D_type); 2476b8e80941Smrg YY_BREAK 2477b8e80941Smrgcase 90: 2478b8e80941SmrgYY_RULE_SETUP 2479b8e80941Smrg#line 412 "../src/compiler/glsl/glsl_lexer.ll" 2480b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler3D_type); 2481b8e80941Smrg YY_BREAK 2482b8e80941Smrgcase 91: 2483b8e80941SmrgYY_RULE_SETUP 2484b8e80941Smrg#line 413 "../src/compiler/glsl/glsl_lexer.ll" 2485b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isamplerCube_type); 2486b8e80941Smrg YY_BREAK 2487b8e80941Smrgcase 92: 2488b8e80941SmrgYY_RULE_SETUP 2489b8e80941Smrg#line 414 "../src/compiler/glsl/glsl_lexer.ll" 2490b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::isampler1DArray_type); 2491b8e80941Smrg YY_BREAK 2492b8e80941Smrgcase 93: 2493b8e80941SmrgYY_RULE_SETUP 2494b8e80941Smrg#line 415 "../src/compiler/glsl/glsl_lexer.ll" 2495b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::isampler2DArray_type); 2496b8e80941Smrg YY_BREAK 2497b8e80941Smrgcase 94: 2498b8e80941SmrgYY_RULE_SETUP 2499b8e80941Smrg#line 416 "../src/compiler/glsl/glsl_lexer.ll" 2500b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler1D_type); 2501b8e80941Smrg YY_BREAK 2502b8e80941Smrgcase 95: 2503b8e80941SmrgYY_RULE_SETUP 2504b8e80941Smrg#line 417 "../src/compiler/glsl/glsl_lexer.ll" 2505b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler2D_type); 2506b8e80941Smrg YY_BREAK 2507b8e80941Smrgcase 96: 2508b8e80941SmrgYY_RULE_SETUP 2509b8e80941Smrg#line 418 "../src/compiler/glsl/glsl_lexer.ll" 2510b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler3D_type); 2511b8e80941Smrg YY_BREAK 2512b8e80941Smrgcase 97: 2513b8e80941SmrgYY_RULE_SETUP 2514b8e80941Smrg#line 419 "../src/compiler/glsl/glsl_lexer.ll" 2515b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usamplerCube_type); 2516b8e80941Smrg YY_BREAK 2517b8e80941Smrgcase 98: 2518b8e80941SmrgYY_RULE_SETUP 2519b8e80941Smrg#line 420 "../src/compiler/glsl/glsl_lexer.ll" 2520b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::usampler1DArray_type); 2521b8e80941Smrg YY_BREAK 2522b8e80941Smrgcase 99: 2523b8e80941SmrgYY_RULE_SETUP 2524b8e80941Smrg#line 421 "../src/compiler/glsl/glsl_lexer.ll" 2525b8e80941SmrgTYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_integer && yyextra->ctx->Extensions.EXT_texture_array, glsl_type::usampler2DArray_type); 2526b8e80941Smrg YY_BREAK 2527b8e80941Smrg/* additional keywords in ARB_texture_multisample, included in GLSL 1.50 */ 2528b8e80941Smrg/* these are reserved but not defined in GLSL 3.00 */ 2529b8e80941Smrg/* [iu]sampler2DMS are defined in GLSL ES 3.10 */ 2530b8e80941Smrgcase 100: 2531b8e80941SmrgYY_RULE_SETUP 2532b8e80941Smrg#line 426 "../src/compiler/glsl/glsl_lexer.ll" 2533b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::sampler2DMS_type); 2534b8e80941Smrg YY_BREAK 2535b8e80941Smrgcase 101: 2536b8e80941SmrgYY_RULE_SETUP 2537b8e80941Smrg#line 427 "../src/compiler/glsl/glsl_lexer.ll" 2538b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::isampler2DMS_type); 2539b8e80941Smrg YY_BREAK 2540b8e80941Smrgcase 102: 2541b8e80941SmrgYY_RULE_SETUP 2542b8e80941Smrg#line 428 "../src/compiler/glsl/glsl_lexer.ll" 2543b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::usampler2DMS_type); 2544b8e80941Smrg YY_BREAK 2545b8e80941Smrgcase 103: 2546b8e80941SmrgYY_RULE_SETUP 2547b8e80941Smrg#line 429 "../src/compiler/glsl/glsl_lexer.ll" 2548b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::sampler2DMSArray_type); 2549b8e80941Smrg YY_BREAK 2550b8e80941Smrgcase 104: 2551b8e80941SmrgYY_RULE_SETUP 2552b8e80941Smrg#line 430 "../src/compiler/glsl/glsl_lexer.ll" 2553b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::isampler2DMSArray_type); 2554b8e80941Smrg YY_BREAK 2555b8e80941Smrgcase 105: 2556b8e80941SmrgYY_RULE_SETUP 2557b8e80941Smrg#line 431 "../src/compiler/glsl/glsl_lexer.ll" 2558b8e80941SmrgTYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::usampler2DMSArray_type); 2559b8e80941Smrg YY_BREAK 2560b8e80941Smrg/* keywords available with ARB_texture_cube_map_array_enable extension on desktop GLSL */ 2561b8e80941Smrgcase 106: 2562b8e80941SmrgYY_RULE_SETUP 2563b8e80941Smrg#line 434 "../src/compiler/glsl/glsl_lexer.ll" 2564b8e80941SmrgTYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::samplerCubeArray_type); 2565b8e80941Smrg YY_BREAK 2566b8e80941Smrgcase 107: 2567b8e80941SmrgYY_RULE_SETUP 2568b8e80941Smrg#line 435 "../src/compiler/glsl/glsl_lexer.ll" 2569b8e80941SmrgTYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::isamplerCubeArray_type); 2570b8e80941Smrg YY_BREAK 2571b8e80941Smrgcase 108: 2572b8e80941SmrgYY_RULE_SETUP 2573b8e80941Smrg#line 436 "../src/compiler/glsl/glsl_lexer.ll" 2574b8e80941SmrgTYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::usamplerCubeArray_type); 2575b8e80941Smrg YY_BREAK 2576b8e80941Smrgcase 109: 2577b8e80941SmrgYY_RULE_SETUP 2578b8e80941Smrg#line 437 "../src/compiler/glsl/glsl_lexer.ll" 2579b8e80941SmrgTYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::samplerCubeArrayShadow_type); 2580b8e80941Smrg YY_BREAK 2581b8e80941Smrgcase 110: 2582b8e80941SmrgYY_RULE_SETUP 2583b8e80941Smrg#line 439 "../src/compiler/glsl/glsl_lexer.ll" 2584b8e80941Smrg{ 2585b8e80941Smrg if (yyextra->OES_EGL_image_external_enable || yyextra->OES_EGL_image_external_essl3_enable) { 2586b8e80941Smrg yylval->type = glsl_type::samplerExternalOES_type; 2587b8e80941Smrg return BASIC_TYPE_TOK; 2588b8e80941Smrg } else 2589b8e80941Smrg return IDENTIFIER; 2590b8e80941Smrg } 2591b8e80941Smrg YY_BREAK 2592b8e80941Smrg/* keywords available with ARB_gpu_shader5 */ 2593b8e80941Smrgcase 111: 2594b8e80941SmrgYY_RULE_SETUP 2595b8e80941Smrg#line 448 "../src/compiler/glsl/glsl_lexer.ll" 2596b8e80941SmrgKEYWORD_WITH_ALT(400, 310, 400, 320, yyextra->ARB_gpu_shader5_enable || yyextra->EXT_gpu_shader5_enable || yyextra->OES_gpu_shader5_enable, PRECISE); 2597b8e80941Smrg YY_BREAK 2598b8e80941Smrg/* keywords available with ARB_shader_image_load_store */ 2599b8e80941Smrgcase 112: 2600b8e80941SmrgYY_RULE_SETUP 2601b8e80941Smrg#line 451 "../src/compiler/glsl/glsl_lexer.ll" 2602b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image1D_type); 2603b8e80941Smrg YY_BREAK 2604b8e80941Smrgcase 113: 2605b8e80941SmrgYY_RULE_SETUP 2606b8e80941Smrg#line 452 "../src/compiler/glsl/glsl_lexer.ll" 2607b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2D_type); 2608b8e80941Smrg YY_BREAK 2609b8e80941Smrgcase 114: 2610b8e80941SmrgYY_RULE_SETUP 2611b8e80941Smrg#line 453 "../src/compiler/glsl/glsl_lexer.ll" 2612b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image3D_type); 2613b8e80941Smrg YY_BREAK 2614b8e80941Smrgcase 115: 2615b8e80941SmrgYY_RULE_SETUP 2616b8e80941Smrg#line 454 "../src/compiler/glsl/glsl_lexer.ll" 2617b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DRect_type); 2618b8e80941Smrg YY_BREAK 2619b8e80941Smrgcase 116: 2620b8e80941SmrgYY_RULE_SETUP 2621b8e80941Smrg#line 455 "../src/compiler/glsl/glsl_lexer.ll" 2622b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::imageCube_type); 2623b8e80941Smrg YY_BREAK 2624b8e80941Smrgcase 117: 2625b8e80941SmrgYY_RULE_SETUP 2626b8e80941Smrg#line 456 "../src/compiler/glsl/glsl_lexer.ll" 2627b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::imageBuffer_type); 2628b8e80941Smrg YY_BREAK 2629b8e80941Smrgcase 118: 2630b8e80941SmrgYY_RULE_SETUP 2631b8e80941Smrg#line 457 "../src/compiler/glsl/glsl_lexer.ll" 2632b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image1DArray_type); 2633b8e80941Smrg YY_BREAK 2634b8e80941Smrgcase 119: 2635b8e80941SmrgYY_RULE_SETUP 2636b8e80941Smrg#line 458 "../src/compiler/glsl/glsl_lexer.ll" 2637b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DArray_type); 2638b8e80941Smrg YY_BREAK 2639b8e80941Smrgcase 120: 2640b8e80941SmrgYY_RULE_SETUP 2641b8e80941Smrg#line 459 "../src/compiler/glsl/glsl_lexer.ll" 2642b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::imageCubeArray_type); 2643b8e80941Smrg YY_BREAK 2644b8e80941Smrgcase 121: 2645b8e80941SmrgYY_RULE_SETUP 2646b8e80941Smrg#line 460 "../src/compiler/glsl/glsl_lexer.ll" 2647b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DMS_type); 2648b8e80941Smrg YY_BREAK 2649b8e80941Smrgcase 122: 2650b8e80941SmrgYY_RULE_SETUP 2651b8e80941Smrg#line 461 "../src/compiler/glsl/glsl_lexer.ll" 2652b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::image2DMSArray_type); 2653b8e80941Smrg YY_BREAK 2654b8e80941Smrgcase 123: 2655b8e80941SmrgYY_RULE_SETUP 2656b8e80941Smrg#line 462 "../src/compiler/glsl/glsl_lexer.ll" 2657b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage1D_type); 2658b8e80941Smrg YY_BREAK 2659b8e80941Smrgcase 124: 2660b8e80941SmrgYY_RULE_SETUP 2661b8e80941Smrg#line 463 "../src/compiler/glsl/glsl_lexer.ll" 2662b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2D_type); 2663b8e80941Smrg YY_BREAK 2664b8e80941Smrgcase 125: 2665b8e80941SmrgYY_RULE_SETUP 2666b8e80941Smrg#line 464 "../src/compiler/glsl/glsl_lexer.ll" 2667b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage3D_type); 2668b8e80941Smrg YY_BREAK 2669b8e80941Smrgcase 126: 2670b8e80941SmrgYY_RULE_SETUP 2671b8e80941Smrg#line 465 "../src/compiler/glsl/glsl_lexer.ll" 2672b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DRect_type); 2673b8e80941Smrg YY_BREAK 2674b8e80941Smrgcase 127: 2675b8e80941SmrgYY_RULE_SETUP 2676b8e80941Smrg#line 466 "../src/compiler/glsl/glsl_lexer.ll" 2677b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimageCube_type); 2678b8e80941Smrg YY_BREAK 2679b8e80941Smrgcase 128: 2680b8e80941SmrgYY_RULE_SETUP 2681b8e80941Smrg#line 467 "../src/compiler/glsl/glsl_lexer.ll" 2682b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::iimageBuffer_type); 2683b8e80941Smrg YY_BREAK 2684b8e80941Smrgcase 129: 2685b8e80941SmrgYY_RULE_SETUP 2686b8e80941Smrg#line 468 "../src/compiler/glsl/glsl_lexer.ll" 2687b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage1DArray_type); 2688b8e80941Smrg YY_BREAK 2689b8e80941Smrgcase 130: 2690b8e80941SmrgYY_RULE_SETUP 2691b8e80941Smrg#line 469 "../src/compiler/glsl/glsl_lexer.ll" 2692b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DArray_type); 2693b8e80941Smrg YY_BREAK 2694b8e80941Smrgcase 131: 2695b8e80941SmrgYY_RULE_SETUP 2696b8e80941Smrg#line 470 "../src/compiler/glsl/glsl_lexer.ll" 2697b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::iimageCubeArray_type); 2698b8e80941Smrg YY_BREAK 2699b8e80941Smrgcase 132: 2700b8e80941SmrgYY_RULE_SETUP 2701b8e80941Smrg#line 471 "../src/compiler/glsl/glsl_lexer.ll" 2702b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DMS_type); 2703b8e80941Smrg YY_BREAK 2704b8e80941Smrgcase 133: 2705b8e80941SmrgYY_RULE_SETUP 2706b8e80941Smrg#line 472 "../src/compiler/glsl/glsl_lexer.ll" 2707b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::iimage2DMSArray_type); 2708b8e80941Smrg YY_BREAK 2709b8e80941Smrgcase 134: 2710b8e80941SmrgYY_RULE_SETUP 2711b8e80941Smrg#line 473 "../src/compiler/glsl/glsl_lexer.ll" 2712b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage1D_type); 2713b8e80941Smrg YY_BREAK 2714b8e80941Smrgcase 135: 2715b8e80941SmrgYY_RULE_SETUP 2716b8e80941Smrg#line 474 "../src/compiler/glsl/glsl_lexer.ll" 2717b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2D_type); 2718b8e80941Smrg YY_BREAK 2719b8e80941Smrgcase 136: 2720b8e80941SmrgYY_RULE_SETUP 2721b8e80941Smrg#line 475 "../src/compiler/glsl/glsl_lexer.ll" 2722b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage3D_type); 2723b8e80941Smrg YY_BREAK 2724b8e80941Smrgcase 137: 2725b8e80941SmrgYY_RULE_SETUP 2726b8e80941Smrg#line 476 "../src/compiler/glsl/glsl_lexer.ll" 2727b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DRect_type); 2728b8e80941Smrg YY_BREAK 2729b8e80941Smrgcase 138: 2730b8e80941SmrgYY_RULE_SETUP 2731b8e80941Smrg#line 477 "../src/compiler/glsl/glsl_lexer.ll" 2732b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimageCube_type); 2733b8e80941Smrg YY_BREAK 2734b8e80941Smrgcase 139: 2735b8e80941SmrgYY_RULE_SETUP 2736b8e80941Smrg#line 478 "../src/compiler/glsl/glsl_lexer.ll" 2737b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::uimageBuffer_type); 2738b8e80941Smrg YY_BREAK 2739b8e80941Smrgcase 140: 2740b8e80941SmrgYY_RULE_SETUP 2741b8e80941Smrg#line 479 "../src/compiler/glsl/glsl_lexer.ll" 2742b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage1DArray_type); 2743b8e80941Smrg YY_BREAK 2744b8e80941Smrgcase 141: 2745b8e80941SmrgYY_RULE_SETUP 2746b8e80941Smrg#line 480 "../src/compiler/glsl/glsl_lexer.ll" 2747b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DArray_type); 2748b8e80941Smrg YY_BREAK 2749b8e80941Smrgcase 142: 2750b8e80941SmrgYY_RULE_SETUP 2751b8e80941Smrg#line 481 "../src/compiler/glsl/glsl_lexer.ll" 2752b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::uimageCubeArray_type); 2753b8e80941Smrg YY_BREAK 2754b8e80941Smrgcase 143: 2755b8e80941SmrgYY_RULE_SETUP 2756b8e80941Smrg#line 482 "../src/compiler/glsl/glsl_lexer.ll" 2757b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DMS_type); 2758b8e80941Smrg YY_BREAK 2759b8e80941Smrgcase 144: 2760b8e80941SmrgYY_RULE_SETUP 2761b8e80941Smrg#line 483 "../src/compiler/glsl/glsl_lexer.ll" 2762b8e80941SmrgTYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, glsl_type::uimage2DMSArray_type); 2763b8e80941Smrg YY_BREAK 2764b8e80941Smrgcase 145: 2765b8e80941SmrgYY_RULE_SETUP 2766b8e80941Smrg#line 484 "../src/compiler/glsl/glsl_lexer.ll" 2767b8e80941SmrgKEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); 2768b8e80941Smrg YY_BREAK 2769b8e80941Smrgcase 146: 2770b8e80941SmrgYY_RULE_SETUP 2771b8e80941Smrg#line 485 "../src/compiler/glsl/glsl_lexer.ll" 2772b8e80941SmrgKEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); 2773b8e80941Smrg YY_BREAK 2774b8e80941Smrgcase 147: 2775b8e80941SmrgYY_RULE_SETUP 2776b8e80941Smrg#line 486 "../src/compiler/glsl/glsl_lexer.ll" 2777b8e80941SmrgKEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); 2778b8e80941Smrg YY_BREAK 2779b8e80941Smrgcase 148: 2780b8e80941SmrgYY_RULE_SETUP 2781b8e80941Smrg#line 487 "../src/compiler/glsl/glsl_lexer.ll" 2782b8e80941SmrgKEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); 2783b8e80941Smrg YY_BREAK 2784b8e80941Smrgcase 149: 2785b8e80941SmrgYY_RULE_SETUP 2786b8e80941Smrg#line 489 "../src/compiler/glsl/glsl_lexer.ll" 2787b8e80941SmrgKEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, COHERENT); 2788b8e80941Smrg YY_BREAK 2789b8e80941Smrgcase 150: 2790b8e80941SmrgYY_RULE_SETUP 2791b8e80941Smrg#line 490 "../src/compiler/glsl/glsl_lexer.ll" 2792b8e80941SmrgKEYWORD_WITH_ALT(110, 100, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, VOLATILE); 2793b8e80941Smrg YY_BREAK 2794b8e80941Smrgcase 151: 2795b8e80941SmrgYY_RULE_SETUP 2796b8e80941Smrg#line 491 "../src/compiler/glsl/glsl_lexer.ll" 2797b8e80941SmrgKEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, RESTRICT); 2798b8e80941Smrg YY_BREAK 2799b8e80941Smrgcase 152: 2800b8e80941SmrgYY_RULE_SETUP 2801b8e80941Smrg#line 492 "../src/compiler/glsl/glsl_lexer.ll" 2802b8e80941SmrgKEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, READONLY); 2803b8e80941Smrg YY_BREAK 2804b8e80941Smrgcase 153: 2805b8e80941SmrgYY_RULE_SETUP 2806b8e80941Smrg#line 493 "../src/compiler/glsl/glsl_lexer.ll" 2807b8e80941SmrgKEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, WRITEONLY); 2808b8e80941Smrg YY_BREAK 2809b8e80941Smrgcase 154: 2810b8e80941SmrgYY_RULE_SETUP 2811b8e80941Smrg#line 495 "../src/compiler/glsl/glsl_lexer.ll" 2812b8e80941SmrgTYPE_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_atomic_counters_enable, glsl_type::atomic_uint_type); 2813b8e80941Smrg YY_BREAK 2814b8e80941Smrgcase 155: 2815b8e80941SmrgYY_RULE_SETUP 2816b8e80941Smrg#line 497 "../src/compiler/glsl/glsl_lexer.ll" 2817b8e80941SmrgKEYWORD_WITH_ALT(430, 310, 430, 310, yyextra->ARB_compute_shader_enable, SHARED); 2818b8e80941Smrg YY_BREAK 2819b8e80941Smrgcase 156: 2820b8e80941SmrgYY_RULE_SETUP 2821b8e80941Smrg#line 499 "../src/compiler/glsl/glsl_lexer.ll" 2822b8e80941Smrgreturn STRUCT; 2823b8e80941Smrg YY_BREAK 2824b8e80941Smrgcase 157: 2825b8e80941SmrgYY_RULE_SETUP 2826b8e80941Smrg#line 500 "../src/compiler/glsl/glsl_lexer.ll" 2827b8e80941Smrgreturn VOID_TOK; 2828b8e80941Smrg YY_BREAK 2829b8e80941Smrgcase 158: 2830b8e80941SmrgYY_RULE_SETUP 2831b8e80941Smrg#line 502 "../src/compiler/glsl/glsl_lexer.ll" 2832b8e80941Smrg{ 2833b8e80941Smrg if ((yyextra->is_version(140, 300)) 2834b8e80941Smrg || yyextra->ARB_bindless_texture_enable 2835b8e80941Smrg || yyextra->KHR_blend_equation_advanced_enable 2836b8e80941Smrg || yyextra->AMD_conservative_depth_enable 2837b8e80941Smrg || yyextra->ARB_conservative_depth_enable 2838b8e80941Smrg || yyextra->ARB_explicit_attrib_location_enable 2839b8e80941Smrg || yyextra->ARB_explicit_uniform_location_enable 2840b8e80941Smrg || yyextra->ARB_post_depth_coverage_enable 2841b8e80941Smrg || yyextra->has_separate_shader_objects() 2842b8e80941Smrg || yyextra->ARB_uniform_buffer_object_enable 2843b8e80941Smrg || yyextra->ARB_fragment_coord_conventions_enable 2844b8e80941Smrg || yyextra->ARB_shading_language_420pack_enable 2845b8e80941Smrg || yyextra->ARB_compute_shader_enable 2846b8e80941Smrg || yyextra->ARB_tessellation_shader_enable 2847b8e80941Smrg || yyextra->EXT_shader_framebuffer_fetch_non_coherent_enable) { 2848b8e80941Smrg return LAYOUT_TOK; 2849b8e80941Smrg } else { 2850b8e80941Smrg return classify_identifier(yyextra, yytext, yyleng, yylval); 2851b8e80941Smrg } 2852b8e80941Smrg } 2853b8e80941Smrg YY_BREAK 2854b8e80941Smrgcase 159: 2855b8e80941SmrgYY_RULE_SETUP 2856b8e80941Smrg#line 524 "../src/compiler/glsl/glsl_lexer.ll" 2857b8e80941Smrgreturn INC_OP; 2858b8e80941Smrg YY_BREAK 2859b8e80941Smrgcase 160: 2860b8e80941SmrgYY_RULE_SETUP 2861b8e80941Smrg#line 525 "../src/compiler/glsl/glsl_lexer.ll" 2862b8e80941Smrgreturn DEC_OP; 2863b8e80941Smrg YY_BREAK 2864b8e80941Smrgcase 161: 2865b8e80941SmrgYY_RULE_SETUP 2866b8e80941Smrg#line 526 "../src/compiler/glsl/glsl_lexer.ll" 2867b8e80941Smrgreturn LE_OP; 2868b8e80941Smrg YY_BREAK 2869b8e80941Smrgcase 162: 2870b8e80941SmrgYY_RULE_SETUP 2871b8e80941Smrg#line 527 "../src/compiler/glsl/glsl_lexer.ll" 2872b8e80941Smrgreturn GE_OP; 2873b8e80941Smrg YY_BREAK 2874b8e80941Smrgcase 163: 2875b8e80941SmrgYY_RULE_SETUP 2876b8e80941Smrg#line 528 "../src/compiler/glsl/glsl_lexer.ll" 2877b8e80941Smrgreturn EQ_OP; 2878b8e80941Smrg YY_BREAK 2879b8e80941Smrgcase 164: 2880b8e80941SmrgYY_RULE_SETUP 2881b8e80941Smrg#line 529 "../src/compiler/glsl/glsl_lexer.ll" 2882b8e80941Smrgreturn NE_OP; 2883b8e80941Smrg YY_BREAK 2884b8e80941Smrgcase 165: 2885b8e80941SmrgYY_RULE_SETUP 2886b8e80941Smrg#line 530 "../src/compiler/glsl/glsl_lexer.ll" 2887b8e80941Smrgreturn AND_OP; 2888b8e80941Smrg YY_BREAK 2889b8e80941Smrgcase 166: 2890b8e80941SmrgYY_RULE_SETUP 2891b8e80941Smrg#line 531 "../src/compiler/glsl/glsl_lexer.ll" 2892b8e80941Smrgreturn OR_OP; 2893b8e80941Smrg YY_BREAK 2894b8e80941Smrgcase 167: 2895b8e80941SmrgYY_RULE_SETUP 2896b8e80941Smrg#line 532 "../src/compiler/glsl/glsl_lexer.ll" 2897b8e80941Smrgreturn XOR_OP; 2898b8e80941Smrg YY_BREAK 2899b8e80941Smrgcase 168: 2900b8e80941SmrgYY_RULE_SETUP 2901b8e80941Smrg#line 533 "../src/compiler/glsl/glsl_lexer.ll" 2902b8e80941Smrgreturn LEFT_OP; 2903b8e80941Smrg YY_BREAK 2904b8e80941Smrgcase 169: 2905b8e80941SmrgYY_RULE_SETUP 2906b8e80941Smrg#line 534 "../src/compiler/glsl/glsl_lexer.ll" 2907b8e80941Smrgreturn RIGHT_OP; 2908b8e80941Smrg YY_BREAK 2909b8e80941Smrgcase 170: 2910b8e80941SmrgYY_RULE_SETUP 2911b8e80941Smrg#line 536 "../src/compiler/glsl/glsl_lexer.ll" 2912b8e80941Smrgreturn MUL_ASSIGN; 2913b8e80941Smrg YY_BREAK 2914b8e80941Smrgcase 171: 2915b8e80941SmrgYY_RULE_SETUP 2916b8e80941Smrg#line 537 "../src/compiler/glsl/glsl_lexer.ll" 2917b8e80941Smrgreturn DIV_ASSIGN; 2918b8e80941Smrg YY_BREAK 2919b8e80941Smrgcase 172: 2920b8e80941SmrgYY_RULE_SETUP 2921b8e80941Smrg#line 538 "../src/compiler/glsl/glsl_lexer.ll" 2922b8e80941Smrgreturn ADD_ASSIGN; 2923b8e80941Smrg YY_BREAK 2924b8e80941Smrgcase 173: 2925b8e80941SmrgYY_RULE_SETUP 2926b8e80941Smrg#line 539 "../src/compiler/glsl/glsl_lexer.ll" 2927b8e80941Smrgreturn MOD_ASSIGN; 2928b8e80941Smrg YY_BREAK 2929b8e80941Smrgcase 174: 2930b8e80941SmrgYY_RULE_SETUP 2931b8e80941Smrg#line 540 "../src/compiler/glsl/glsl_lexer.ll" 2932b8e80941Smrgreturn LEFT_ASSIGN; 2933b8e80941Smrg YY_BREAK 2934b8e80941Smrgcase 175: 2935b8e80941SmrgYY_RULE_SETUP 2936b8e80941Smrg#line 541 "../src/compiler/glsl/glsl_lexer.ll" 2937b8e80941Smrgreturn RIGHT_ASSIGN; 2938b8e80941Smrg YY_BREAK 2939b8e80941Smrgcase 176: 2940b8e80941SmrgYY_RULE_SETUP 2941b8e80941Smrg#line 542 "../src/compiler/glsl/glsl_lexer.ll" 2942b8e80941Smrgreturn AND_ASSIGN; 2943b8e80941Smrg YY_BREAK 2944b8e80941Smrgcase 177: 2945b8e80941SmrgYY_RULE_SETUP 2946b8e80941Smrg#line 543 "../src/compiler/glsl/glsl_lexer.ll" 2947b8e80941Smrgreturn XOR_ASSIGN; 2948b8e80941Smrg YY_BREAK 2949b8e80941Smrgcase 178: 2950b8e80941SmrgYY_RULE_SETUP 2951b8e80941Smrg#line 544 "../src/compiler/glsl/glsl_lexer.ll" 2952b8e80941Smrgreturn OR_ASSIGN; 2953b8e80941Smrg YY_BREAK 2954b8e80941Smrgcase 179: 2955b8e80941SmrgYY_RULE_SETUP 2956b8e80941Smrg#line 545 "../src/compiler/glsl/glsl_lexer.ll" 2957b8e80941Smrgreturn SUB_ASSIGN; 2958b8e80941Smrg YY_BREAK 2959b8e80941Smrgcase 180: 2960b8e80941SmrgYY_RULE_SETUP 2961b8e80941Smrg#line 547 "../src/compiler/glsl/glsl_lexer.ll" 2962b8e80941Smrg{ 2963b8e80941Smrg return LITERAL_INTEGER(10); 2964b8e80941Smrg } 2965b8e80941Smrg YY_BREAK 2966b8e80941Smrgcase 181: 2967b8e80941SmrgYY_RULE_SETUP 2968b8e80941Smrg#line 550 "../src/compiler/glsl/glsl_lexer.ll" 2969b8e80941Smrg{ 2970b8e80941Smrg return LITERAL_INTEGER(16); 2971b8e80941Smrg } 2972b8e80941Smrg YY_BREAK 2973b8e80941Smrgcase 182: 2974b8e80941SmrgYY_RULE_SETUP 2975b8e80941Smrg#line 553 "../src/compiler/glsl/glsl_lexer.ll" 2976b8e80941Smrg{ 2977b8e80941Smrg return LITERAL_INTEGER(8); 2978b8e80941Smrg } 2979b8e80941Smrg YY_BREAK 2980b8e80941Smrgcase 183: 2981b8e80941Smrg#line 558 "../src/compiler/glsl/glsl_lexer.ll" 2982b8e80941Smrgcase 184: 2983b8e80941Smrg#line 559 "../src/compiler/glsl/glsl_lexer.ll" 2984b8e80941Smrgcase 185: 2985b8e80941Smrg#line 560 "../src/compiler/glsl/glsl_lexer.ll" 2986b8e80941Smrgcase 186: 2987b8e80941SmrgYY_RULE_SETUP 2988b8e80941Smrg#line 560 "../src/compiler/glsl/glsl_lexer.ll" 2989b8e80941Smrg{ 2990b8e80941Smrg struct _mesa_glsl_parse_state *state = yyextra; 2991b8e80941Smrg char suffix = yytext[strlen(yytext) - 1]; 2992b8e80941Smrg if (!state->is_version(120, 300) && 2993b8e80941Smrg (suffix == 'f' || suffix == 'F')) { 2994b8e80941Smrg _mesa_glsl_warning(yylloc, state, 2995b8e80941Smrg "Float suffixes are invalid in GLSL 1.10"); 2996b8e80941Smrg } 2997b8e80941Smrg yylval->real = _mesa_strtof(yytext, NULL); 2998b8e80941Smrg return FLOATCONSTANT; 2999b8e80941Smrg } 3000b8e80941Smrg YY_BREAK 3001b8e80941Smrgcase 187: 3002b8e80941Smrg#line 573 "../src/compiler/glsl/glsl_lexer.ll" 3003b8e80941Smrgcase 188: 3004b8e80941Smrg#line 574 "../src/compiler/glsl/glsl_lexer.ll" 3005b8e80941Smrgcase 189: 3006b8e80941Smrg#line 575 "../src/compiler/glsl/glsl_lexer.ll" 3007b8e80941Smrgcase 190: 3008b8e80941SmrgYY_RULE_SETUP 3009b8e80941Smrg#line 575 "../src/compiler/glsl/glsl_lexer.ll" 3010b8e80941Smrg{ 3011b8e80941Smrg if (!yyextra->is_version(400, 0) && 3012b8e80941Smrg !yyextra->ARB_gpu_shader_fp64_enable) 3013b8e80941Smrg return ERROR_TOK; 3014b8e80941Smrg yylval->dreal = _mesa_strtod(yytext, NULL); 3015b8e80941Smrg return DOUBLECONSTANT; 3016b8e80941Smrg } 3017b8e80941Smrg YY_BREAK 3018b8e80941Smrgcase 191: 3019b8e80941SmrgYY_RULE_SETUP 3020b8e80941Smrg#line 583 "../src/compiler/glsl/glsl_lexer.ll" 3021b8e80941Smrg{ 3022b8e80941Smrg yylval->n = 1; 3023b8e80941Smrg return BOOLCONSTANT; 3024b8e80941Smrg } 3025b8e80941Smrg YY_BREAK 3026b8e80941Smrgcase 192: 3027b8e80941SmrgYY_RULE_SETUP 3028b8e80941Smrg#line 587 "../src/compiler/glsl/glsl_lexer.ll" 3029b8e80941Smrg{ 3030b8e80941Smrg yylval->n = 0; 3031b8e80941Smrg return BOOLCONSTANT; 3032b8e80941Smrg } 3033b8e80941Smrg YY_BREAK 3034b8e80941Smrg/* Reserved words in GLSL 1.10. */ 3035b8e80941Smrgcase 193: 3036b8e80941SmrgYY_RULE_SETUP 3037b8e80941Smrg#line 594 "../src/compiler/glsl/glsl_lexer.ll" 3038b8e80941SmrgKEYWORD(110, 100, 0, 0, ASM); 3039b8e80941Smrg YY_BREAK 3040b8e80941Smrgcase 194: 3041b8e80941SmrgYY_RULE_SETUP 3042b8e80941Smrg#line 595 "../src/compiler/glsl/glsl_lexer.ll" 3043b8e80941SmrgKEYWORD(110, 100, 0, 0, CLASS); 3044b8e80941Smrg YY_BREAK 3045b8e80941Smrgcase 195: 3046b8e80941SmrgYY_RULE_SETUP 3047b8e80941Smrg#line 596 "../src/compiler/glsl/glsl_lexer.ll" 3048b8e80941SmrgKEYWORD(110, 100, 0, 0, UNION); 3049b8e80941Smrg YY_BREAK 3050b8e80941Smrgcase 196: 3051b8e80941SmrgYY_RULE_SETUP 3052b8e80941Smrg#line 597 "../src/compiler/glsl/glsl_lexer.ll" 3053b8e80941SmrgKEYWORD(110, 100, 0, 0, ENUM); 3054b8e80941Smrg YY_BREAK 3055b8e80941Smrgcase 197: 3056b8e80941SmrgYY_RULE_SETUP 3057b8e80941Smrg#line 598 "../src/compiler/glsl/glsl_lexer.ll" 3058b8e80941SmrgKEYWORD(110, 100, 0, 0, TYPEDEF); 3059b8e80941Smrg YY_BREAK 3060b8e80941Smrgcase 198: 3061b8e80941SmrgYY_RULE_SETUP 3062b8e80941Smrg#line 599 "../src/compiler/glsl/glsl_lexer.ll" 3063b8e80941SmrgKEYWORD(110, 100, 0, 0, TEMPLATE); 3064b8e80941Smrg YY_BREAK 3065b8e80941Smrgcase 199: 3066b8e80941SmrgYY_RULE_SETUP 3067b8e80941Smrg#line 600 "../src/compiler/glsl/glsl_lexer.ll" 3068b8e80941SmrgKEYWORD(110, 100, 0, 0, THIS); 3069b8e80941Smrg YY_BREAK 3070b8e80941Smrgcase 200: 3071b8e80941SmrgYY_RULE_SETUP 3072b8e80941Smrg#line 601 "../src/compiler/glsl/glsl_lexer.ll" 3073b8e80941SmrgKEYWORD_WITH_ALT(110, 100, 140, 300, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK); 3074b8e80941Smrg YY_BREAK 3075b8e80941Smrgcase 201: 3076b8e80941SmrgYY_RULE_SETUP 3077b8e80941Smrg#line 602 "../src/compiler/glsl/glsl_lexer.ll" 3078b8e80941SmrgKEYWORD(110, 100, 0, 0, GOTO); 3079b8e80941Smrg YY_BREAK 3080b8e80941Smrgcase 202: 3081b8e80941SmrgYY_RULE_SETUP 3082b8e80941Smrg#line 603 "../src/compiler/glsl/glsl_lexer.ll" 3083b8e80941SmrgKEYWORD(110, 100, 130, 300, SWITCH); 3084b8e80941Smrg YY_BREAK 3085b8e80941Smrgcase 203: 3086b8e80941SmrgYY_RULE_SETUP 3087b8e80941Smrg#line 604 "../src/compiler/glsl/glsl_lexer.ll" 3088b8e80941SmrgKEYWORD(110, 100, 130, 300, DEFAULT); 3089b8e80941Smrg YY_BREAK 3090b8e80941Smrgcase 204: 3091b8e80941SmrgYY_RULE_SETUP 3092b8e80941Smrg#line 605 "../src/compiler/glsl/glsl_lexer.ll" 3093b8e80941SmrgKEYWORD(110, 100, 0, 0, INLINE_TOK); 3094b8e80941Smrg YY_BREAK 3095b8e80941Smrgcase 205: 3096b8e80941SmrgYY_RULE_SETUP 3097b8e80941Smrg#line 606 "../src/compiler/glsl/glsl_lexer.ll" 3098b8e80941SmrgKEYWORD(110, 100, 0, 0, NOINLINE); 3099b8e80941Smrg YY_BREAK 3100b8e80941Smrgcase 206: 3101b8e80941SmrgYY_RULE_SETUP 3102b8e80941Smrg#line 607 "../src/compiler/glsl/glsl_lexer.ll" 3103b8e80941SmrgKEYWORD(110, 100, 0, 0, PUBLIC_TOK); 3104b8e80941Smrg YY_BREAK 3105b8e80941Smrgcase 207: 3106b8e80941SmrgYY_RULE_SETUP 3107b8e80941Smrg#line 608 "../src/compiler/glsl/glsl_lexer.ll" 3108b8e80941SmrgKEYWORD(110, 100, 0, 0, STATIC); 3109b8e80941Smrg YY_BREAK 3110b8e80941Smrgcase 208: 3111b8e80941SmrgYY_RULE_SETUP 3112b8e80941Smrg#line 609 "../src/compiler/glsl/glsl_lexer.ll" 3113b8e80941SmrgKEYWORD(110, 100, 0, 0, EXTERN); 3114b8e80941Smrg YY_BREAK 3115b8e80941Smrgcase 209: 3116b8e80941SmrgYY_RULE_SETUP 3117b8e80941Smrg#line 610 "../src/compiler/glsl/glsl_lexer.ll" 3118b8e80941SmrgKEYWORD(110, 100, 0, 0, EXTERNAL); 3119b8e80941Smrg YY_BREAK 3120b8e80941Smrgcase 210: 3121b8e80941SmrgYY_RULE_SETUP 3122b8e80941Smrg#line 611 "../src/compiler/glsl/glsl_lexer.ll" 3123b8e80941SmrgKEYWORD(110, 100, 0, 0, INTERFACE); 3124b8e80941Smrg YY_BREAK 3125b8e80941Smrgcase 211: 3126b8e80941SmrgYY_RULE_SETUP 3127b8e80941Smrg#line 612 "../src/compiler/glsl/glsl_lexer.ll" 3128b8e80941SmrgKEYWORD(110, 100, 0, 0, LONG_TOK); 3129b8e80941Smrg YY_BREAK 3130b8e80941Smrgcase 212: 3131b8e80941SmrgYY_RULE_SETUP 3132b8e80941Smrg#line 613 "../src/compiler/glsl/glsl_lexer.ll" 3133b8e80941SmrgKEYWORD(110, 100, 0, 0, SHORT_TOK); 3134b8e80941Smrg YY_BREAK 3135b8e80941Smrgcase 213: 3136b8e80941SmrgYY_RULE_SETUP 3137b8e80941Smrg#line 614 "../src/compiler/glsl/glsl_lexer.ll" 3138b8e80941SmrgTYPE_WITH_ALT(130, 100, 130, 300, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::double_type); 3139b8e80941Smrg YY_BREAK 3140b8e80941Smrgcase 214: 3141b8e80941SmrgYY_RULE_SETUP 3142b8e80941Smrg#line 615 "../src/compiler/glsl/glsl_lexer.ll" 3143b8e80941SmrgKEYWORD(110, 100, 0, 0, HALF); 3144b8e80941Smrg YY_BREAK 3145b8e80941Smrgcase 215: 3146b8e80941SmrgYY_RULE_SETUP 3147b8e80941Smrg#line 616 "../src/compiler/glsl/glsl_lexer.ll" 3148b8e80941SmrgKEYWORD(110, 100, 0, 0, FIXED_TOK); 3149b8e80941Smrg YY_BREAK 3150b8e80941Smrgcase 216: 3151b8e80941SmrgYY_RULE_SETUP 3152b8e80941Smrg#line 617 "../src/compiler/glsl/glsl_lexer.ll" 3153b8e80941SmrgKEYWORD_WITH_ALT(110, 100, 0, 0, yyextra->EXT_gpu_shader4_enable, UNSIGNED); 3154b8e80941Smrg YY_BREAK 3155b8e80941Smrgcase 217: 3156b8e80941SmrgYY_RULE_SETUP 3157b8e80941Smrg#line 618 "../src/compiler/glsl/glsl_lexer.ll" 3158b8e80941SmrgKEYWORD(110, 100, 0, 0, INPUT_TOK); 3159b8e80941Smrg YY_BREAK 3160b8e80941Smrgcase 218: 3161b8e80941SmrgYY_RULE_SETUP 3162b8e80941Smrg#line 619 "../src/compiler/glsl/glsl_lexer.ll" 3163b8e80941SmrgKEYWORD(110, 100, 0, 0, OUTPUT); 3164b8e80941Smrg YY_BREAK 3165b8e80941Smrgcase 219: 3166b8e80941SmrgYY_RULE_SETUP 3167b8e80941Smrg#line 620 "../src/compiler/glsl/glsl_lexer.ll" 3168b8e80941SmrgKEYWORD(110, 100, 0, 0, HVEC2); 3169b8e80941Smrg YY_BREAK 3170b8e80941Smrgcase 220: 3171b8e80941SmrgYY_RULE_SETUP 3172b8e80941Smrg#line 621 "../src/compiler/glsl/glsl_lexer.ll" 3173b8e80941SmrgKEYWORD(110, 100, 0, 0, HVEC3); 3174b8e80941Smrg YY_BREAK 3175b8e80941Smrgcase 221: 3176b8e80941SmrgYY_RULE_SETUP 3177b8e80941Smrg#line 622 "../src/compiler/glsl/glsl_lexer.ll" 3178b8e80941SmrgKEYWORD(110, 100, 0, 0, HVEC4); 3179b8e80941Smrg YY_BREAK 3180b8e80941Smrgcase 222: 3181b8e80941SmrgYY_RULE_SETUP 3182b8e80941Smrg#line 623 "../src/compiler/glsl/glsl_lexer.ll" 3183b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec2_type); 3184b8e80941Smrg YY_BREAK 3185b8e80941Smrgcase 223: 3186b8e80941SmrgYY_RULE_SETUP 3187b8e80941Smrg#line 624 "../src/compiler/glsl/glsl_lexer.ll" 3188b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec3_type); 3189b8e80941Smrg YY_BREAK 3190b8e80941Smrgcase 224: 3191b8e80941SmrgYY_RULE_SETUP 3192b8e80941Smrg#line 625 "../src/compiler/glsl/glsl_lexer.ll" 3193b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec4_type); 3194b8e80941Smrg YY_BREAK 3195b8e80941Smrgcase 225: 3196b8e80941SmrgYY_RULE_SETUP 3197b8e80941Smrg#line 626 "../src/compiler/glsl/glsl_lexer.ll" 3198b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2_type); 3199b8e80941Smrg YY_BREAK 3200b8e80941Smrgcase 226: 3201b8e80941SmrgYY_RULE_SETUP 3202b8e80941Smrg#line 627 "../src/compiler/glsl/glsl_lexer.ll" 3203b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3_type); 3204b8e80941Smrg YY_BREAK 3205b8e80941Smrgcase 227: 3206b8e80941SmrgYY_RULE_SETUP 3207b8e80941Smrg#line 628 "../src/compiler/glsl/glsl_lexer.ll" 3208b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4_type); 3209b8e80941Smrg YY_BREAK 3210b8e80941Smrgcase 228: 3211b8e80941SmrgYY_RULE_SETUP 3212b8e80941Smrg#line 629 "../src/compiler/glsl/glsl_lexer.ll" 3213b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2_type); 3214b8e80941Smrg YY_BREAK 3215b8e80941Smrgcase 229: 3216b8e80941SmrgYY_RULE_SETUP 3217b8e80941Smrg#line 630 "../src/compiler/glsl/glsl_lexer.ll" 3218b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2x3_type); 3219b8e80941Smrg YY_BREAK 3220b8e80941Smrgcase 230: 3221b8e80941SmrgYY_RULE_SETUP 3222b8e80941Smrg#line 631 "../src/compiler/glsl/glsl_lexer.ll" 3223b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2x4_type); 3224b8e80941Smrg YY_BREAK 3225b8e80941Smrgcase 231: 3226b8e80941SmrgYY_RULE_SETUP 3227b8e80941Smrg#line 632 "../src/compiler/glsl/glsl_lexer.ll" 3228b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3x2_type); 3229b8e80941Smrg YY_BREAK 3230b8e80941Smrgcase 232: 3231b8e80941SmrgYY_RULE_SETUP 3232b8e80941Smrg#line 633 "../src/compiler/glsl/glsl_lexer.ll" 3233b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3_type); 3234b8e80941Smrg YY_BREAK 3235b8e80941Smrgcase 233: 3236b8e80941SmrgYY_RULE_SETUP 3237b8e80941Smrg#line 634 "../src/compiler/glsl/glsl_lexer.ll" 3238b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3x4_type); 3239b8e80941Smrg YY_BREAK 3240b8e80941Smrgcase 234: 3241b8e80941SmrgYY_RULE_SETUP 3242b8e80941Smrg#line 635 "../src/compiler/glsl/glsl_lexer.ll" 3243b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4x2_type); 3244b8e80941Smrg YY_BREAK 3245b8e80941Smrgcase 235: 3246b8e80941SmrgYY_RULE_SETUP 3247b8e80941Smrg#line 636 "../src/compiler/glsl/glsl_lexer.ll" 3248b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4x3_type); 3249b8e80941Smrg YY_BREAK 3250b8e80941Smrgcase 236: 3251b8e80941SmrgYY_RULE_SETUP 3252b8e80941Smrg#line 637 "../src/compiler/glsl/glsl_lexer.ll" 3253b8e80941SmrgTYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4_type); 3254b8e80941Smrg YY_BREAK 3255b8e80941Smrgcase 237: 3256b8e80941SmrgYY_RULE_SETUP 3257b8e80941Smrg#line 638 "../src/compiler/glsl/glsl_lexer.ll" 3258b8e80941SmrgKEYWORD(110, 100, 0, 0, FVEC2); 3259b8e80941Smrg YY_BREAK 3260b8e80941Smrgcase 238: 3261b8e80941SmrgYY_RULE_SETUP 3262b8e80941Smrg#line 639 "../src/compiler/glsl/glsl_lexer.ll" 3263b8e80941SmrgKEYWORD(110, 100, 0, 0, FVEC3); 3264b8e80941Smrg YY_BREAK 3265b8e80941Smrgcase 239: 3266b8e80941SmrgYY_RULE_SETUP 3267b8e80941Smrg#line 640 "../src/compiler/glsl/glsl_lexer.ll" 3268b8e80941SmrgKEYWORD(110, 100, 0, 0, FVEC4); 3269b8e80941Smrg YY_BREAK 3270b8e80941Smrgcase 240: 3271b8e80941SmrgYY_RULE_SETUP 3272b8e80941Smrg#line 641 "../src/compiler/glsl/glsl_lexer.ll" 3273b8e80941SmrgTYPE_WITH_ALT(110, 100, 0, 0, yyextra->ARB_texture_rectangle_enable, glsl_type::sampler2DRect_type); 3274b8e80941Smrg YY_BREAK 3275b8e80941Smrgcase 241: 3276b8e80941SmrgYY_RULE_SETUP 3277b8e80941Smrg#line 642 "../src/compiler/glsl/glsl_lexer.ll" 3278b8e80941SmrgKEYWORD(110, 100, 0, 0, SAMPLER3DRECT); 3279b8e80941Smrg YY_BREAK 3280b8e80941Smrgcase 242: 3281b8e80941SmrgYY_RULE_SETUP 3282b8e80941Smrg#line 643 "../src/compiler/glsl/glsl_lexer.ll" 3283b8e80941SmrgTYPE_WITH_ALT(110, 100, 0, 0, yyextra->ARB_texture_rectangle_enable, glsl_type::sampler2DRectShadow_type); 3284b8e80941Smrg YY_BREAK 3285b8e80941Smrgcase 243: 3286b8e80941SmrgYY_RULE_SETUP 3287b8e80941Smrg#line 644 "../src/compiler/glsl/glsl_lexer.ll" 3288b8e80941SmrgKEYWORD(110, 100, 0, 0, SIZEOF); 3289b8e80941Smrg YY_BREAK 3290b8e80941Smrgcase 244: 3291b8e80941SmrgYY_RULE_SETUP 3292b8e80941Smrg#line 645 "../src/compiler/glsl/glsl_lexer.ll" 3293b8e80941SmrgKEYWORD(110, 100, 0, 0, CAST); 3294b8e80941Smrg YY_BREAK 3295b8e80941Smrgcase 245: 3296b8e80941SmrgYY_RULE_SETUP 3297b8e80941Smrg#line 646 "../src/compiler/glsl/glsl_lexer.ll" 3298b8e80941SmrgKEYWORD(110, 100, 0, 0, NAMESPACE); 3299b8e80941Smrg YY_BREAK 3300b8e80941Smrgcase 246: 3301b8e80941SmrgYY_RULE_SETUP 3302b8e80941Smrg#line 647 "../src/compiler/glsl/glsl_lexer.ll" 3303b8e80941SmrgKEYWORD(110, 100, 0, 0, USING); 3304b8e80941Smrg YY_BREAK 3305b8e80941Smrg/* Additional reserved words in GLSL 1.20. */ 3306b8e80941Smrgcase 247: 3307b8e80941SmrgYY_RULE_SETUP 3308b8e80941Smrg#line 650 "../src/compiler/glsl/glsl_lexer.ll" 3309b8e80941SmrgKEYWORD(120, 100, 130, 100, LOWP); 3310b8e80941Smrg YY_BREAK 3311b8e80941Smrgcase 248: 3312b8e80941SmrgYY_RULE_SETUP 3313b8e80941Smrg#line 651 "../src/compiler/glsl/glsl_lexer.ll" 3314b8e80941SmrgKEYWORD(120, 100, 130, 100, MEDIUMP); 3315b8e80941Smrg YY_BREAK 3316b8e80941Smrgcase 249: 3317b8e80941SmrgYY_RULE_SETUP 3318b8e80941Smrg#line 652 "../src/compiler/glsl/glsl_lexer.ll" 3319b8e80941SmrgKEYWORD(120, 100, 130, 100, HIGHP); 3320b8e80941Smrg YY_BREAK 3321b8e80941Smrgcase 250: 3322b8e80941SmrgYY_RULE_SETUP 3323b8e80941Smrg#line 653 "../src/compiler/glsl/glsl_lexer.ll" 3324b8e80941SmrgKEYWORD(120, 100, 130, 100, PRECISION); 3325b8e80941Smrg YY_BREAK 3326b8e80941Smrg/* Additional reserved words in GLSL 1.30. */ 3327b8e80941Smrgcase 251: 3328b8e80941SmrgYY_RULE_SETUP 3329b8e80941Smrg#line 656 "../src/compiler/glsl/glsl_lexer.ll" 3330b8e80941SmrgKEYWORD(130, 300, 130, 300, CASE); 3331b8e80941Smrg YY_BREAK 3332b8e80941Smrgcase 252: 3333b8e80941SmrgYY_RULE_SETUP 3334b8e80941Smrg#line 657 "../src/compiler/glsl/glsl_lexer.ll" 3335b8e80941SmrgKEYWORD(130, 300, 0, 0, COMMON); 3336b8e80941Smrg YY_BREAK 3337b8e80941Smrgcase 253: 3338b8e80941SmrgYY_RULE_SETUP 3339b8e80941Smrg#line 658 "../src/compiler/glsl/glsl_lexer.ll" 3340b8e80941SmrgKEYWORD(130, 300, 0, 0, PARTITION); 3341b8e80941Smrg YY_BREAK 3342b8e80941Smrgcase 254: 3343b8e80941SmrgYY_RULE_SETUP 3344b8e80941Smrg#line 659 "../src/compiler/glsl/glsl_lexer.ll" 3345b8e80941SmrgKEYWORD(130, 300, 0, 0, ACTIVE); 3346b8e80941Smrg YY_BREAK 3347b8e80941Smrgcase 255: 3348b8e80941SmrgYY_RULE_SETUP 3349b8e80941Smrg#line 660 "../src/compiler/glsl/glsl_lexer.ll" 3350b8e80941SmrgKEYWORD(130, 100, 0, 0, SUPERP); 3351b8e80941Smrg YY_BREAK 3352b8e80941Smrgcase 256: 3353b8e80941SmrgYY_RULE_SETUP 3354b8e80941Smrg#line 661 "../src/compiler/glsl/glsl_lexer.ll" 3355b8e80941SmrgTYPE_WITH_ALT(130, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object), glsl_type::samplerBuffer_type); 3356b8e80941Smrg YY_BREAK 3357b8e80941Smrgcase 257: 3358b8e80941SmrgYY_RULE_SETUP 3359b8e80941Smrg#line 662 "../src/compiler/glsl/glsl_lexer.ll" 3360b8e80941SmrgKEYWORD(130, 300, 0, 0, FILTER); 3361b8e80941Smrg YY_BREAK 3362b8e80941Smrgcase 258: 3363b8e80941SmrgYY_RULE_SETUP 3364b8e80941Smrg#line 663 "../src/compiler/glsl/glsl_lexer.ll" 3365b8e80941SmrgKEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR); 3366b8e80941Smrg YY_BREAK 3367b8e80941Smrg/* Additional reserved words in GLSL 1.40 */ 3368b8e80941Smrgcase 259: 3369b8e80941SmrgYY_RULE_SETUP 3370b8e80941Smrg#line 666 "../src/compiler/glsl/glsl_lexer.ll" 3371b8e80941SmrgTYPE_WITH_ALT(140, 300, 140, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.NV_texture_rectangle && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::isampler2DRect_type); 3372b8e80941Smrg YY_BREAK 3373b8e80941Smrgcase 260: 3374b8e80941SmrgYY_RULE_SETUP 3375b8e80941Smrg#line 667 "../src/compiler/glsl/glsl_lexer.ll" 3376b8e80941SmrgTYPE_WITH_ALT(140, 300, 140, 0, yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.NV_texture_rectangle && yyextra->ctx->Extensions.EXT_texture_integer, glsl_type::usampler2DRect_type); 3377b8e80941Smrg YY_BREAK 3378b8e80941Smrgcase 261: 3379b8e80941SmrgYY_RULE_SETUP 3380b8e80941Smrg#line 668 "../src/compiler/glsl/glsl_lexer.ll" 3381b8e80941SmrgTYPE_WITH_ALT(140, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object && yyextra->ctx->Extensions.EXT_texture_integer), glsl_type::isamplerBuffer_type); 3382b8e80941Smrg YY_BREAK 3383b8e80941Smrgcase 262: 3384b8e80941SmrgYY_RULE_SETUP 3385b8e80941Smrg#line 669 "../src/compiler/glsl/glsl_lexer.ll" 3386b8e80941SmrgTYPE_WITH_ALT(140, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->ctx->Extensions.EXT_texture_buffer_object && yyextra->ctx->Extensions.EXT_texture_integer), glsl_type::usamplerBuffer_type); 3387b8e80941Smrg YY_BREAK 3388b8e80941Smrg/* Additional reserved words in GLSL ES 3.00 */ 3389b8e80941Smrgcase 263: 3390b8e80941SmrgYY_RULE_SETUP 3391b8e80941Smrg#line 672 "../src/compiler/glsl/glsl_lexer.ll" 3392b8e80941SmrgKEYWORD(420, 300, 0, 0, RESOURCE); 3393b8e80941Smrg YY_BREAK 3394b8e80941Smrgcase 264: 3395b8e80941SmrgYY_RULE_SETUP 3396b8e80941Smrg#line 673 "../src/compiler/glsl/glsl_lexer.ll" 3397b8e80941SmrgKEYWORD_WITH_ALT(400, 300, 400, 320, yyextra->ARB_gpu_shader5_enable || yyextra->OES_shader_multisample_interpolation_enable, SAMPLE); 3398b8e80941Smrg YY_BREAK 3399b8e80941Smrgcase 265: 3400b8e80941SmrgYY_RULE_SETUP 3401b8e80941Smrg#line 674 "../src/compiler/glsl/glsl_lexer.ll" 3402b8e80941SmrgKEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_shader_subroutine_enable, SUBROUTINE); 3403b8e80941Smrg YY_BREAK 3404b8e80941Smrg/* Additional words for ARB_gpu_shader_int64 */ 3405b8e80941Smrgcase 266: 3406b8e80941SmrgYY_RULE_SETUP 3407b8e80941Smrg#line 677 "../src/compiler/glsl/glsl_lexer.ll" 3408b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::int64_t_type); 3409b8e80941Smrg YY_BREAK 3410b8e80941Smrgcase 267: 3411b8e80941SmrgYY_RULE_SETUP 3412b8e80941Smrg#line 678 "../src/compiler/glsl/glsl_lexer.ll" 3413b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec2_type); 3414b8e80941Smrg YY_BREAK 3415b8e80941Smrgcase 268: 3416b8e80941SmrgYY_RULE_SETUP 3417b8e80941Smrg#line 679 "../src/compiler/glsl/glsl_lexer.ll" 3418b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec3_type); 3419b8e80941Smrg YY_BREAK 3420b8e80941Smrgcase 269: 3421b8e80941SmrgYY_RULE_SETUP 3422b8e80941Smrg#line 680 "../src/compiler/glsl/glsl_lexer.ll" 3423b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec4_type); 3424b8e80941Smrg YY_BREAK 3425b8e80941Smrgcase 270: 3426b8e80941SmrgYY_RULE_SETUP 3427b8e80941Smrg#line 682 "../src/compiler/glsl/glsl_lexer.ll" 3428b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::uint64_t_type); 3429b8e80941Smrg YY_BREAK 3430b8e80941Smrgcase 271: 3431b8e80941SmrgYY_RULE_SETUP 3432b8e80941Smrg#line 683 "../src/compiler/glsl/glsl_lexer.ll" 3433b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec2_type); 3434b8e80941Smrg YY_BREAK 3435b8e80941Smrgcase 272: 3436b8e80941SmrgYY_RULE_SETUP 3437b8e80941Smrg#line 684 "../src/compiler/glsl/glsl_lexer.ll" 3438b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec3_type); 3439b8e80941Smrg YY_BREAK 3440b8e80941Smrgcase 273: 3441b8e80941SmrgYY_RULE_SETUP 3442b8e80941Smrg#line 685 "../src/compiler/glsl/glsl_lexer.ll" 3443b8e80941SmrgTYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec4_type); 3444b8e80941Smrg YY_BREAK 3445b8e80941Smrgcase 274: 3446b8e80941SmrgYY_RULE_SETUP 3447b8e80941Smrg#line 687 "../src/compiler/glsl/glsl_lexer.ll" 3448b8e80941Smrg{ 3449b8e80941Smrg struct _mesa_glsl_parse_state *state = yyextra; 3450b8e80941Smrg if (state->es_shader && yyleng > 1024) { 3451b8e80941Smrg _mesa_glsl_error(yylloc, state, 3452b8e80941Smrg "Identifier `%s' exceeds 1024 characters", 3453b8e80941Smrg yytext); 3454b8e80941Smrg } 3455b8e80941Smrg return classify_identifier(state, yytext, yyleng, yylval); 3456b8e80941Smrg } 3457b8e80941Smrg YY_BREAK 3458b8e80941Smrgcase 275: 3459b8e80941SmrgYY_RULE_SETUP 3460b8e80941Smrg#line 697 "../src/compiler/glsl/glsl_lexer.ll" 3461b8e80941Smrg{ struct _mesa_glsl_parse_state *state = yyextra; 3462b8e80941Smrg state->is_field = true; 3463b8e80941Smrg return DOT_TOK; } 3464b8e80941Smrg YY_BREAK 3465b8e80941Smrgcase 276: 3466b8e80941SmrgYY_RULE_SETUP 3467b8e80941Smrg#line 701 "../src/compiler/glsl/glsl_lexer.ll" 3468b8e80941Smrg{ return yytext[0]; } 3469b8e80941Smrg YY_BREAK 3470b8e80941Smrgcase 277: 3471b8e80941SmrgYY_RULE_SETUP 3472b8e80941Smrg#line 703 "../src/compiler/glsl/glsl_lexer.ll" 3473b8e80941SmrgYY_FATAL_ERROR( "flex scanner jammed" ); 3474b8e80941Smrg YY_BREAK 3475b8e80941Smrg#line 3475 "src/compiler/glsl/glsl_lexer.cpp" 3476b8e80941Smrgcase YY_STATE_EOF(INITIAL): 3477b8e80941Smrgcase YY_STATE_EOF(PP): 3478b8e80941Smrgcase YY_STATE_EOF(PRAGMA): 3479b8e80941Smrg yyterminate(); 3480b8e80941Smrg 3481b8e80941Smrg case YY_END_OF_BUFFER: 3482b8e80941Smrg { 3483b8e80941Smrg /* Amount of text matched not including the EOB char. */ 3484b8e80941Smrg int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; 3485b8e80941Smrg 3486b8e80941Smrg /* Undo the effects of YY_DO_BEFORE_ACTION. */ 3487b8e80941Smrg *yy_cp = yyg->yy_hold_char; 3488b8e80941Smrg YY_RESTORE_YY_MORE_OFFSET 3489b8e80941Smrg 3490b8e80941Smrg if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 3491b8e80941Smrg { 3492b8e80941Smrg /* We're scanning a new file or input source. It's 3493b8e80941Smrg * possible that this happened because the user 3494b8e80941Smrg * just pointed yyin at a new source and called 3495b8e80941Smrg * yylex(). If so, then we have to assure 3496b8e80941Smrg * consistency between YY_CURRENT_BUFFER and our 3497b8e80941Smrg * globals. Here is the right place to do so, because 3498b8e80941Smrg * this is the first action (other than possibly a 3499b8e80941Smrg * back-up) that will match for the new input source. 3500b8e80941Smrg */ 3501b8e80941Smrg yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 3502b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; 3503b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 3504b8e80941Smrg } 3505b8e80941Smrg 3506b8e80941Smrg /* Note that here we test for yy_c_buf_p "<=" to the position 3507b8e80941Smrg * of the first EOB in the buffer, since yy_c_buf_p will 3508b8e80941Smrg * already have been incremented past the NUL character 3509b8e80941Smrg * (since all states make transitions on EOB to the 3510b8e80941Smrg * end-of-buffer state). Contrast this with the test 3511b8e80941Smrg * in input(). 3512b8e80941Smrg */ 3513b8e80941Smrg if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) 3514b8e80941Smrg { /* This was really a NUL. */ 3515b8e80941Smrg yy_state_type yy_next_state; 3516b8e80941Smrg 3517b8e80941Smrg yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; 3518b8e80941Smrg 3519b8e80941Smrg yy_current_state = yy_get_previous_state( yyscanner ); 3520b8e80941Smrg 3521b8e80941Smrg /* Okay, we're now positioned to make the NUL 3522b8e80941Smrg * transition. We couldn't have 3523b8e80941Smrg * yy_get_previous_state() go ahead and do it 3524b8e80941Smrg * for us because it doesn't know how to deal 3525b8e80941Smrg * with the possibility of jamming (and we don't 3526b8e80941Smrg * want to build jamming into it because then it 3527b8e80941Smrg * will run more slowly). 3528b8e80941Smrg */ 3529b8e80941Smrg 3530b8e80941Smrg yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); 3531b8e80941Smrg 3532b8e80941Smrg yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; 3533b8e80941Smrg 3534b8e80941Smrg if ( yy_next_state ) 3535b8e80941Smrg { 3536b8e80941Smrg /* Consume the NUL. */ 3537b8e80941Smrg yy_cp = ++yyg->yy_c_buf_p; 3538b8e80941Smrg yy_current_state = yy_next_state; 3539b8e80941Smrg goto yy_match; 3540b8e80941Smrg } 3541b8e80941Smrg 3542b8e80941Smrg else 3543b8e80941Smrg { 3544b8e80941Smrg yy_cp = yyg->yy_last_accepting_cpos; 3545b8e80941Smrg yy_current_state = yyg->yy_last_accepting_state; 3546b8e80941Smrg goto yy_find_action; 3547b8e80941Smrg } 3548b8e80941Smrg } 3549b8e80941Smrg 3550b8e80941Smrg else switch ( yy_get_next_buffer( yyscanner ) ) 3551b8e80941Smrg { 3552b8e80941Smrg case EOB_ACT_END_OF_FILE: 3553b8e80941Smrg { 3554b8e80941Smrg yyg->yy_did_buffer_switch_on_eof = 0; 3555b8e80941Smrg 3556b8e80941Smrg if ( yywrap( yyscanner ) ) 3557b8e80941Smrg { 3558b8e80941Smrg /* Note: because we've taken care in 3559b8e80941Smrg * yy_get_next_buffer() to have set up 3560b8e80941Smrg * yytext, we can now set up 3561b8e80941Smrg * yy_c_buf_p so that if some total 3562b8e80941Smrg * hoser (like flex itself) wants to 3563b8e80941Smrg * call the scanner after we return the 3564b8e80941Smrg * YY_NULL, it'll still work - another 3565b8e80941Smrg * YY_NULL will get returned. 3566b8e80941Smrg */ 3567b8e80941Smrg yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; 3568b8e80941Smrg 3569b8e80941Smrg yy_act = YY_STATE_EOF(YY_START); 3570b8e80941Smrg goto do_action; 3571b8e80941Smrg } 3572b8e80941Smrg 3573b8e80941Smrg else 3574b8e80941Smrg { 3575b8e80941Smrg if ( ! yyg->yy_did_buffer_switch_on_eof ) 3576b8e80941Smrg YY_NEW_FILE; 3577b8e80941Smrg } 3578b8e80941Smrg break; 3579b8e80941Smrg } 3580b8e80941Smrg 3581b8e80941Smrg case EOB_ACT_CONTINUE_SCAN: 3582b8e80941Smrg yyg->yy_c_buf_p = 3583b8e80941Smrg yyg->yytext_ptr + yy_amount_of_matched_text; 3584b8e80941Smrg 3585b8e80941Smrg yy_current_state = yy_get_previous_state( yyscanner ); 3586b8e80941Smrg 3587b8e80941Smrg yy_cp = yyg->yy_c_buf_p; 3588b8e80941Smrg yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; 3589b8e80941Smrg goto yy_match; 3590b8e80941Smrg 3591b8e80941Smrg case EOB_ACT_LAST_MATCH: 3592b8e80941Smrg yyg->yy_c_buf_p = 3593b8e80941Smrg &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; 3594b8e80941Smrg 3595b8e80941Smrg yy_current_state = yy_get_previous_state( yyscanner ); 3596b8e80941Smrg 3597b8e80941Smrg yy_cp = yyg->yy_c_buf_p; 3598b8e80941Smrg yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; 3599b8e80941Smrg goto yy_find_action; 3600b8e80941Smrg } 3601b8e80941Smrg break; 3602b8e80941Smrg } 3603b8e80941Smrg 3604b8e80941Smrg default: 3605b8e80941Smrg YY_FATAL_ERROR( 3606b8e80941Smrg "fatal flex scanner internal error--no action found" ); 3607b8e80941Smrg } /* end of action switch */ 3608b8e80941Smrg } /* end of scanning one token */ 3609b8e80941Smrg } /* end of user's declarations */ 3610b8e80941Smrg} /* end of yylex */ 3611b8e80941Smrg 3612b8e80941Smrg/* yy_get_next_buffer - try to read in a new buffer 3613b8e80941Smrg * 3614b8e80941Smrg * Returns a code representing an action: 3615b8e80941Smrg * EOB_ACT_LAST_MATCH - 3616b8e80941Smrg * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 3617b8e80941Smrg * EOB_ACT_END_OF_FILE - end of file 3618b8e80941Smrg */ 3619b8e80941Smrgstatic int yy_get_next_buffer (yyscan_t yyscanner) 3620b8e80941Smrg{ 3621b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3622b8e80941Smrg char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 3623b8e80941Smrg char *source = yyg->yytext_ptr; 3624b8e80941Smrg yy_size_t number_to_move, i; 3625b8e80941Smrg int ret_val; 3626b8e80941Smrg 3627b8e80941Smrg if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) 3628b8e80941Smrg YY_FATAL_ERROR( 3629b8e80941Smrg "fatal flex scanner internal error--end of buffer missed" ); 3630b8e80941Smrg 3631b8e80941Smrg if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 3632b8e80941Smrg { /* Don't try to fill the buffer, so this is an EOF. */ 3633b8e80941Smrg if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) 3634b8e80941Smrg { 3635b8e80941Smrg /* We matched a single character, the EOB, so 3636b8e80941Smrg * treat this as a final EOF. 3637b8e80941Smrg */ 3638b8e80941Smrg return EOB_ACT_END_OF_FILE; 3639b8e80941Smrg } 3640b8e80941Smrg 3641b8e80941Smrg else 3642b8e80941Smrg { 3643b8e80941Smrg /* We matched some text prior to the EOB, first 3644b8e80941Smrg * process it. 3645b8e80941Smrg */ 3646b8e80941Smrg return EOB_ACT_LAST_MATCH; 3647b8e80941Smrg } 3648b8e80941Smrg } 3649b8e80941Smrg 3650b8e80941Smrg /* Try to read more data. */ 3651b8e80941Smrg 3652b8e80941Smrg /* First move last chars to start of buffer. */ 3653b8e80941Smrg number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); 3654b8e80941Smrg 3655b8e80941Smrg for ( i = 0; i < number_to_move; ++i ) 3656b8e80941Smrg *(dest++) = *(source++); 3657b8e80941Smrg 3658b8e80941Smrg if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 3659b8e80941Smrg /* don't do the read, it's not guaranteed to return an EOF, 3660b8e80941Smrg * just force an EOF 3661b8e80941Smrg */ 3662b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; 3663b8e80941Smrg 3664b8e80941Smrg else 3665b8e80941Smrg { 3666b8e80941Smrg yy_size_t num_to_read = 3667b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 3668b8e80941Smrg 3669b8e80941Smrg while ( num_to_read <= 0 ) 3670b8e80941Smrg { /* Not enough room in the buffer - grow it. */ 3671b8e80941Smrg 3672b8e80941Smrg /* just a shorter name for the current buffer */ 3673b8e80941Smrg YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; 3674b8e80941Smrg 3675b8e80941Smrg int yy_c_buf_p_offset = 3676b8e80941Smrg (int) (yyg->yy_c_buf_p - b->yy_ch_buf); 3677b8e80941Smrg 3678b8e80941Smrg if ( b->yy_is_our_buffer ) 3679b8e80941Smrg { 3680b8e80941Smrg yy_size_t new_size = b->yy_buf_size * 2; 3681b8e80941Smrg 3682b8e80941Smrg if ( new_size <= 0 ) 3683b8e80941Smrg b->yy_buf_size += b->yy_buf_size / 8; 3684b8e80941Smrg else 3685b8e80941Smrg b->yy_buf_size *= 2; 3686b8e80941Smrg 3687b8e80941Smrg b->yy_ch_buf = (char *) 3688b8e80941Smrg /* Include room in for 2 EOB chars. */ 3689b8e80941Smrg yyrealloc( (void *) b->yy_ch_buf, 3690b8e80941Smrg (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); 3691b8e80941Smrg } 3692b8e80941Smrg else 3693b8e80941Smrg /* Can't grow it, we don't own it. */ 3694b8e80941Smrg b->yy_ch_buf = NULL; 3695b8e80941Smrg 3696b8e80941Smrg if ( ! b->yy_ch_buf ) 3697b8e80941Smrg YY_FATAL_ERROR( 3698b8e80941Smrg "fatal error - scanner input buffer overflow" ); 3699b8e80941Smrg 3700b8e80941Smrg yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; 3701b8e80941Smrg 3702b8e80941Smrg num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 3703b8e80941Smrg number_to_move - 1; 3704b8e80941Smrg 3705b8e80941Smrg } 3706b8e80941Smrg 3707b8e80941Smrg if ( num_to_read > YY_READ_BUF_SIZE ) 3708b8e80941Smrg num_to_read = YY_READ_BUF_SIZE; 3709b8e80941Smrg 3710b8e80941Smrg /* Read in more data. */ 3711b8e80941Smrg YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 3712b8e80941Smrg yyg->yy_n_chars, num_to_read ); 3713b8e80941Smrg 3714b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; 3715b8e80941Smrg } 3716b8e80941Smrg 3717b8e80941Smrg if ( yyg->yy_n_chars == 0 ) 3718b8e80941Smrg { 3719b8e80941Smrg if ( number_to_move == YY_MORE_ADJ ) 3720b8e80941Smrg { 3721b8e80941Smrg ret_val = EOB_ACT_END_OF_FILE; 3722b8e80941Smrg yyrestart( yyin , yyscanner); 3723b8e80941Smrg } 3724b8e80941Smrg 3725b8e80941Smrg else 3726b8e80941Smrg { 3727b8e80941Smrg ret_val = EOB_ACT_LAST_MATCH; 3728b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 3729b8e80941Smrg YY_BUFFER_EOF_PENDING; 3730b8e80941Smrg } 3731b8e80941Smrg } 3732b8e80941Smrg 3733b8e80941Smrg else 3734b8e80941Smrg ret_val = EOB_ACT_CONTINUE_SCAN; 3735b8e80941Smrg 3736b8e80941Smrg if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { 3737b8e80941Smrg /* Extend the array by 50%, plus the number we really need. */ 3738b8e80941Smrg yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); 3739b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( 3740b8e80941Smrg (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); 3741b8e80941Smrg if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 3742b8e80941Smrg YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); 3743b8e80941Smrg /* "- 2" to take care of EOB's */ 3744b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (yy_size_t) (new_size - 2); 3745b8e80941Smrg } 3746b8e80941Smrg 3747b8e80941Smrg yyg->yy_n_chars += number_to_move; 3748b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; 3749b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; 3750b8e80941Smrg 3751b8e80941Smrg yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 3752b8e80941Smrg 3753b8e80941Smrg return ret_val; 3754b8e80941Smrg} 3755b8e80941Smrg 3756b8e80941Smrg/* yy_get_previous_state - get the state just before the EOB char was reached */ 3757b8e80941Smrg 3758b8e80941Smrg static yy_state_type yy_get_previous_state (yyscan_t yyscanner) 3759b8e80941Smrg{ 3760b8e80941Smrg yy_state_type yy_current_state; 3761b8e80941Smrg char *yy_cp; 3762b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3763b8e80941Smrg 3764b8e80941Smrg yy_current_state = yyg->yy_start; 3765b8e80941Smrg yy_current_state += YY_AT_BOL(); 3766b8e80941Smrg 3767b8e80941Smrg for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) 3768b8e80941Smrg { 3769b8e80941Smrg YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 3770b8e80941Smrg if ( yy_accept[yy_current_state] ) 3771b8e80941Smrg { 3772b8e80941Smrg yyg->yy_last_accepting_state = yy_current_state; 3773b8e80941Smrg yyg->yy_last_accepting_cpos = yy_cp; 3774b8e80941Smrg } 3775b8e80941Smrg while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 3776b8e80941Smrg { 3777b8e80941Smrg yy_current_state = (int) yy_def[yy_current_state]; 3778b8e80941Smrg if ( yy_current_state >= 1096 ) 3779b8e80941Smrg yy_c = yy_meta[yy_c]; 3780b8e80941Smrg } 3781b8e80941Smrg yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; 3782b8e80941Smrg } 3783b8e80941Smrg 3784b8e80941Smrg return yy_current_state; 3785b8e80941Smrg} 3786b8e80941Smrg 3787b8e80941Smrg/* yy_try_NUL_trans - try to make a transition on the NUL character 3788b8e80941Smrg * 3789b8e80941Smrg * synopsis 3790b8e80941Smrg * next_state = yy_try_NUL_trans( current_state ); 3791b8e80941Smrg */ 3792b8e80941Smrg static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) 3793b8e80941Smrg{ 3794b8e80941Smrg int yy_is_jam; 3795b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ 3796b8e80941Smrg char *yy_cp = yyg->yy_c_buf_p; 3797b8e80941Smrg 3798b8e80941Smrg YY_CHAR yy_c = 1; 3799b8e80941Smrg if ( yy_accept[yy_current_state] ) 3800b8e80941Smrg { 3801b8e80941Smrg yyg->yy_last_accepting_state = yy_current_state; 3802b8e80941Smrg yyg->yy_last_accepting_cpos = yy_cp; 3803b8e80941Smrg } 3804b8e80941Smrg while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 3805b8e80941Smrg { 3806b8e80941Smrg yy_current_state = (int) yy_def[yy_current_state]; 3807b8e80941Smrg if ( yy_current_state >= 1096 ) 3808b8e80941Smrg yy_c = yy_meta[yy_c]; 3809b8e80941Smrg } 3810b8e80941Smrg yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; 3811b8e80941Smrg yy_is_jam = (yy_current_state == 1095); 3812b8e80941Smrg 3813b8e80941Smrg (void)yyg; 3814b8e80941Smrg return yy_is_jam ? 0 : yy_current_state; 3815b8e80941Smrg} 3816b8e80941Smrg 3817b8e80941Smrg#ifndef YY_NO_UNPUT 3818b8e80941Smrg 3819b8e80941Smrg#endif 3820b8e80941Smrg 3821b8e80941Smrg#ifndef YY_NO_INPUT 3822b8e80941Smrg#ifdef __cplusplus 3823b8e80941Smrg static int yyinput (yyscan_t yyscanner) 3824b8e80941Smrg#else 3825b8e80941Smrg static int input (yyscan_t yyscanner) 3826b8e80941Smrg#endif 3827b8e80941Smrg 3828b8e80941Smrg{ 3829b8e80941Smrg int c; 3830b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3831b8e80941Smrg 3832b8e80941Smrg *yyg->yy_c_buf_p = yyg->yy_hold_char; 3833b8e80941Smrg 3834b8e80941Smrg if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) 3835b8e80941Smrg { 3836b8e80941Smrg /* yy_c_buf_p now points to the character we want to return. 3837b8e80941Smrg * If this occurs *before* the EOB characters, then it's a 3838b8e80941Smrg * valid NUL; if not, then we've hit the end of the buffer. 3839b8e80941Smrg */ 3840b8e80941Smrg if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) 3841b8e80941Smrg /* This was really a NUL. */ 3842b8e80941Smrg *yyg->yy_c_buf_p = '\0'; 3843b8e80941Smrg 3844b8e80941Smrg else 3845b8e80941Smrg { /* need more input */ 3846b8e80941Smrg yy_size_t offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); 3847b8e80941Smrg ++yyg->yy_c_buf_p; 3848b8e80941Smrg 3849b8e80941Smrg switch ( yy_get_next_buffer( yyscanner ) ) 3850b8e80941Smrg { 3851b8e80941Smrg case EOB_ACT_LAST_MATCH: 3852b8e80941Smrg /* This happens because yy_g_n_b() 3853b8e80941Smrg * sees that we've accumulated a 3854b8e80941Smrg * token and flags that we need to 3855b8e80941Smrg * try matching the token before 3856b8e80941Smrg * proceeding. But for input(), 3857b8e80941Smrg * there's no matching to consider. 3858b8e80941Smrg * So convert the EOB_ACT_LAST_MATCH 3859b8e80941Smrg * to EOB_ACT_END_OF_FILE. 3860b8e80941Smrg */ 3861b8e80941Smrg 3862b8e80941Smrg /* Reset buffer status. */ 3863b8e80941Smrg yyrestart( yyin , yyscanner); 3864b8e80941Smrg 3865b8e80941Smrg /*FALLTHROUGH*/ 3866b8e80941Smrg 3867b8e80941Smrg case EOB_ACT_END_OF_FILE: 3868b8e80941Smrg { 3869b8e80941Smrg if ( yywrap( yyscanner ) ) 3870b8e80941Smrg return 0; 3871b8e80941Smrg 3872b8e80941Smrg if ( ! yyg->yy_did_buffer_switch_on_eof ) 3873b8e80941Smrg YY_NEW_FILE; 3874b8e80941Smrg#ifdef __cplusplus 3875b8e80941Smrg return yyinput(yyscanner); 3876b8e80941Smrg#else 3877b8e80941Smrg return input(yyscanner); 3878b8e80941Smrg#endif 3879b8e80941Smrg } 3880b8e80941Smrg 3881b8e80941Smrg case EOB_ACT_CONTINUE_SCAN: 3882b8e80941Smrg yyg->yy_c_buf_p = yyg->yytext_ptr + offset; 3883b8e80941Smrg break; 3884b8e80941Smrg } 3885b8e80941Smrg } 3886b8e80941Smrg } 3887b8e80941Smrg 3888b8e80941Smrg c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ 3889b8e80941Smrg *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ 3890b8e80941Smrg yyg->yy_hold_char = *++yyg->yy_c_buf_p; 3891b8e80941Smrg 3892b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); 3893b8e80941Smrg 3894b8e80941Smrg return c; 3895b8e80941Smrg} 3896b8e80941Smrg#endif /* ifndef YY_NO_INPUT */ 3897b8e80941Smrg 3898b8e80941Smrg/** Immediately switch to a different input stream. 3899b8e80941Smrg * @param input_file A readable stream. 3900b8e80941Smrg * @param yyscanner The scanner object. 3901b8e80941Smrg * @note This function does not reset the start condition to @c INITIAL . 3902b8e80941Smrg */ 3903b8e80941Smrg void yyrestart (FILE * input_file , yyscan_t yyscanner) 3904b8e80941Smrg{ 3905b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3906b8e80941Smrg 3907b8e80941Smrg if ( ! YY_CURRENT_BUFFER ){ 3908b8e80941Smrg yyensure_buffer_stack (yyscanner); 3909b8e80941Smrg YY_CURRENT_BUFFER_LVALUE = 3910b8e80941Smrg yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); 3911b8e80941Smrg } 3912b8e80941Smrg 3913b8e80941Smrg yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); 3914b8e80941Smrg yy_load_buffer_state( yyscanner ); 3915b8e80941Smrg} 3916b8e80941Smrg 3917b8e80941Smrg/** Switch to a different input buffer. 3918b8e80941Smrg * @param new_buffer The new input buffer. 3919b8e80941Smrg * @param yyscanner The scanner object. 3920b8e80941Smrg */ 3921b8e80941Smrg void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) 3922b8e80941Smrg{ 3923b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3924b8e80941Smrg 3925b8e80941Smrg /* TODO. We should be able to replace this entire function body 3926b8e80941Smrg * with 3927b8e80941Smrg * yypop_buffer_state(); 3928b8e80941Smrg * yypush_buffer_state(new_buffer); 3929b8e80941Smrg */ 3930b8e80941Smrg yyensure_buffer_stack (yyscanner); 3931b8e80941Smrg if ( YY_CURRENT_BUFFER == new_buffer ) 3932b8e80941Smrg return; 3933b8e80941Smrg 3934b8e80941Smrg if ( YY_CURRENT_BUFFER ) 3935b8e80941Smrg { 3936b8e80941Smrg /* Flush out information for old buffer. */ 3937b8e80941Smrg *yyg->yy_c_buf_p = yyg->yy_hold_char; 3938b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; 3939b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; 3940b8e80941Smrg } 3941b8e80941Smrg 3942b8e80941Smrg YY_CURRENT_BUFFER_LVALUE = new_buffer; 3943b8e80941Smrg yy_load_buffer_state( yyscanner ); 3944b8e80941Smrg 3945b8e80941Smrg /* We don't actually know whether we did this switch during 3946b8e80941Smrg * EOF (yywrap()) processing, but the only time this flag 3947b8e80941Smrg * is looked at is after yywrap() is called, so it's safe 3948b8e80941Smrg * to go ahead and always set it. 3949b8e80941Smrg */ 3950b8e80941Smrg yyg->yy_did_buffer_switch_on_eof = 1; 3951b8e80941Smrg} 3952b8e80941Smrg 3953b8e80941Smrgstatic void yy_load_buffer_state (yyscan_t yyscanner) 3954b8e80941Smrg{ 3955b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3956b8e80941Smrg yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 3957b8e80941Smrg yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 3958b8e80941Smrg yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 3959b8e80941Smrg yyg->yy_hold_char = *yyg->yy_c_buf_p; 3960b8e80941Smrg} 3961b8e80941Smrg 3962b8e80941Smrg/** Allocate and initialize an input buffer state. 3963b8e80941Smrg * @param file A readable stream. 3964b8e80941Smrg * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. 3965b8e80941Smrg * @param yyscanner The scanner object. 3966b8e80941Smrg * @return the allocated buffer state. 3967b8e80941Smrg */ 3968b8e80941Smrg YY_BUFFER_STATE yy_create_buffer (FILE * file, yy_size_t size , yyscan_t yyscanner) 3969b8e80941Smrg{ 3970b8e80941Smrg YY_BUFFER_STATE b; 3971b8e80941Smrg 3972b8e80941Smrg b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); 3973b8e80941Smrg if ( ! b ) 3974b8e80941Smrg YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 3975b8e80941Smrg 3976b8e80941Smrg b->yy_buf_size = size; 3977b8e80941Smrg 3978b8e80941Smrg /* yy_ch_buf has to be 2 characters longer than the size given because 3979b8e80941Smrg * we need to put in 2 end-of-buffer characters. 3980b8e80941Smrg */ 3981b8e80941Smrg b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); 3982b8e80941Smrg if ( ! b->yy_ch_buf ) 3983b8e80941Smrg YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 3984b8e80941Smrg 3985b8e80941Smrg b->yy_is_our_buffer = 1; 3986b8e80941Smrg 3987b8e80941Smrg yy_init_buffer( b, file , yyscanner); 3988b8e80941Smrg 3989b8e80941Smrg return b; 3990b8e80941Smrg} 3991b8e80941Smrg 3992b8e80941Smrg/** Destroy the buffer. 3993b8e80941Smrg * @param b a buffer created with yy_create_buffer() 3994b8e80941Smrg * @param yyscanner The scanner object. 3995b8e80941Smrg */ 3996b8e80941Smrg void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) 3997b8e80941Smrg{ 3998b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 3999b8e80941Smrg 4000b8e80941Smrg if ( ! b ) 4001b8e80941Smrg return; 4002b8e80941Smrg 4003b8e80941Smrg if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 4004b8e80941Smrg YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 4005b8e80941Smrg 4006b8e80941Smrg if ( b->yy_is_our_buffer ) 4007b8e80941Smrg yyfree( (void *) b->yy_ch_buf , yyscanner ); 4008b8e80941Smrg 4009b8e80941Smrg yyfree( (void *) b , yyscanner ); 4010b8e80941Smrg} 4011b8e80941Smrg 4012b8e80941Smrg/* Initializes or reinitializes a buffer. 4013b8e80941Smrg * This function is sometimes called more than once on the same buffer, 4014b8e80941Smrg * such as during a yyrestart() or at EOF. 4015b8e80941Smrg */ 4016b8e80941Smrg static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) 4017b8e80941Smrg 4018b8e80941Smrg{ 4019b8e80941Smrg int oerrno = errno; 4020b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4021b8e80941Smrg 4022b8e80941Smrg yy_flush_buffer( b , yyscanner); 4023b8e80941Smrg 4024b8e80941Smrg b->yy_input_file = file; 4025b8e80941Smrg b->yy_fill_buffer = 1; 4026b8e80941Smrg 4027b8e80941Smrg /* If b is the current buffer, then yy_init_buffer was _probably_ 4028b8e80941Smrg * called from yyrestart() or through yy_get_next_buffer. 4029b8e80941Smrg * In that case, we don't want to reset the lineno or column. 4030b8e80941Smrg */ 4031b8e80941Smrg if (b != YY_CURRENT_BUFFER){ 4032b8e80941Smrg b->yy_bs_lineno = 1; 4033b8e80941Smrg b->yy_bs_column = 0; 4034b8e80941Smrg } 4035b8e80941Smrg 4036b8e80941Smrg b->yy_is_interactive = 0; 4037b8e80941Smrg 4038b8e80941Smrg errno = oerrno; 4039b8e80941Smrg} 4040b8e80941Smrg 4041b8e80941Smrg/** Discard all buffered characters. On the next scan, YY_INPUT will be called. 4042b8e80941Smrg * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. 4043b8e80941Smrg * @param yyscanner The scanner object. 4044b8e80941Smrg */ 4045b8e80941Smrg void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) 4046b8e80941Smrg{ 4047b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4048b8e80941Smrg if ( ! b ) 4049b8e80941Smrg return; 4050b8e80941Smrg 4051b8e80941Smrg b->yy_n_chars = 0; 4052b8e80941Smrg 4053b8e80941Smrg /* We always need two end-of-buffer characters. The first causes 4054b8e80941Smrg * a transition to the end-of-buffer state. The second causes 4055b8e80941Smrg * a jam in that state. 4056b8e80941Smrg */ 4057b8e80941Smrg b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 4058b8e80941Smrg b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 4059b8e80941Smrg 4060b8e80941Smrg b->yy_buf_pos = &b->yy_ch_buf[0]; 4061b8e80941Smrg 4062b8e80941Smrg b->yy_at_bol = 1; 4063b8e80941Smrg b->yy_buffer_status = YY_BUFFER_NEW; 4064b8e80941Smrg 4065b8e80941Smrg if ( b == YY_CURRENT_BUFFER ) 4066b8e80941Smrg yy_load_buffer_state( yyscanner ); 4067b8e80941Smrg} 4068b8e80941Smrg 4069b8e80941Smrg/** Pushes the new state onto the stack. The new state becomes 4070b8e80941Smrg * the current state. This function will allocate the stack 4071b8e80941Smrg * if necessary. 4072b8e80941Smrg * @param new_buffer The new state. 4073b8e80941Smrg * @param yyscanner The scanner object. 4074b8e80941Smrg */ 4075b8e80941Smrgvoid yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) 4076b8e80941Smrg{ 4077b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4078b8e80941Smrg if (new_buffer == NULL) 4079b8e80941Smrg return; 4080b8e80941Smrg 4081b8e80941Smrg yyensure_buffer_stack(yyscanner); 4082b8e80941Smrg 4083b8e80941Smrg /* This block is copied from yy_switch_to_buffer. */ 4084b8e80941Smrg if ( YY_CURRENT_BUFFER ) 4085b8e80941Smrg { 4086b8e80941Smrg /* Flush out information for old buffer. */ 4087b8e80941Smrg *yyg->yy_c_buf_p = yyg->yy_hold_char; 4088b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; 4089b8e80941Smrg YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; 4090b8e80941Smrg } 4091b8e80941Smrg 4092b8e80941Smrg /* Only push if top exists. Otherwise, replace top. */ 4093b8e80941Smrg if (YY_CURRENT_BUFFER) 4094b8e80941Smrg yyg->yy_buffer_stack_top++; 4095b8e80941Smrg YY_CURRENT_BUFFER_LVALUE = new_buffer; 4096b8e80941Smrg 4097b8e80941Smrg /* copied from yy_switch_to_buffer. */ 4098b8e80941Smrg yy_load_buffer_state( yyscanner ); 4099b8e80941Smrg yyg->yy_did_buffer_switch_on_eof = 1; 4100b8e80941Smrg} 4101b8e80941Smrg 4102b8e80941Smrg/** Removes and deletes the top of the stack, if present. 4103b8e80941Smrg * The next element becomes the new top. 4104b8e80941Smrg * @param yyscanner The scanner object. 4105b8e80941Smrg */ 4106b8e80941Smrgvoid yypop_buffer_state (yyscan_t yyscanner) 4107b8e80941Smrg{ 4108b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4109b8e80941Smrg if (!YY_CURRENT_BUFFER) 4110b8e80941Smrg return; 4111b8e80941Smrg 4112b8e80941Smrg yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); 4113b8e80941Smrg YY_CURRENT_BUFFER_LVALUE = NULL; 4114b8e80941Smrg if (yyg->yy_buffer_stack_top > 0) 4115b8e80941Smrg --yyg->yy_buffer_stack_top; 4116b8e80941Smrg 4117b8e80941Smrg if (YY_CURRENT_BUFFER) { 4118b8e80941Smrg yy_load_buffer_state( yyscanner ); 4119b8e80941Smrg yyg->yy_did_buffer_switch_on_eof = 1; 4120b8e80941Smrg } 4121b8e80941Smrg} 4122b8e80941Smrg 4123b8e80941Smrg/* Allocates the stack if it does not exist. 4124b8e80941Smrg * Guarantees space for at least one push. 4125b8e80941Smrg */ 4126b8e80941Smrgstatic void yyensure_buffer_stack (yyscan_t yyscanner) 4127b8e80941Smrg{ 4128b8e80941Smrg yy_size_t num_to_alloc; 4129b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4130b8e80941Smrg 4131b8e80941Smrg if (!yyg->yy_buffer_stack) { 4132b8e80941Smrg 4133b8e80941Smrg /* First allocation is just for 2 elements, since we don't know if this 4134b8e80941Smrg * scanner will even need a stack. We use 2 instead of 1 to avoid an 4135b8e80941Smrg * immediate realloc on the next call. 4136b8e80941Smrg */ 4137b8e80941Smrg num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ 4138b8e80941Smrg yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc 4139b8e80941Smrg (num_to_alloc * sizeof(struct yy_buffer_state*) 4140b8e80941Smrg , yyscanner); 4141b8e80941Smrg if ( ! yyg->yy_buffer_stack ) 4142b8e80941Smrg YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 4143b8e80941Smrg 4144b8e80941Smrg memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 4145b8e80941Smrg 4146b8e80941Smrg yyg->yy_buffer_stack_max = num_to_alloc; 4147b8e80941Smrg yyg->yy_buffer_stack_top = 0; 4148b8e80941Smrg return; 4149b8e80941Smrg } 4150b8e80941Smrg 4151b8e80941Smrg if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ 4152b8e80941Smrg 4153b8e80941Smrg /* Increase the buffer to prepare for a possible push. */ 4154b8e80941Smrg yy_size_t grow_size = 8 /* arbitrary grow size */; 4155b8e80941Smrg 4156b8e80941Smrg num_to_alloc = yyg->yy_buffer_stack_max + grow_size; 4157b8e80941Smrg yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc 4158b8e80941Smrg (yyg->yy_buffer_stack, 4159b8e80941Smrg num_to_alloc * sizeof(struct yy_buffer_state*) 4160b8e80941Smrg , yyscanner); 4161b8e80941Smrg if ( ! yyg->yy_buffer_stack ) 4162b8e80941Smrg YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 4163b8e80941Smrg 4164b8e80941Smrg /* zero only the new slots.*/ 4165b8e80941Smrg memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); 4166b8e80941Smrg yyg->yy_buffer_stack_max = num_to_alloc; 4167b8e80941Smrg } 4168b8e80941Smrg} 4169b8e80941Smrg 4170b8e80941Smrg/** Setup the input buffer state to scan directly from a user-specified character buffer. 4171b8e80941Smrg * @param base the character buffer 4172b8e80941Smrg * @param size the size in bytes of the character buffer 4173b8e80941Smrg * @param yyscanner The scanner object. 4174b8e80941Smrg * @return the newly allocated buffer state object. 4175b8e80941Smrg */ 4176b8e80941SmrgYY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) 4177b8e80941Smrg{ 4178b8e80941Smrg YY_BUFFER_STATE b; 4179b8e80941Smrg 4180b8e80941Smrg if ( size < 2 || 4181b8e80941Smrg base[size-2] != YY_END_OF_BUFFER_CHAR || 4182b8e80941Smrg base[size-1] != YY_END_OF_BUFFER_CHAR ) 4183b8e80941Smrg /* They forgot to leave room for the EOB's. */ 4184b8e80941Smrg return NULL; 4185b8e80941Smrg 4186b8e80941Smrg b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); 4187b8e80941Smrg if ( ! b ) 4188b8e80941Smrg YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); 4189b8e80941Smrg 4190b8e80941Smrg b->yy_buf_size = (size - 2); /* "- 2" to take care of EOB's */ 4191b8e80941Smrg b->yy_buf_pos = b->yy_ch_buf = base; 4192b8e80941Smrg b->yy_is_our_buffer = 0; 4193b8e80941Smrg b->yy_input_file = NULL; 4194b8e80941Smrg b->yy_n_chars = b->yy_buf_size; 4195b8e80941Smrg b->yy_is_interactive = 0; 4196b8e80941Smrg b->yy_at_bol = 1; 4197b8e80941Smrg b->yy_fill_buffer = 0; 4198b8e80941Smrg b->yy_buffer_status = YY_BUFFER_NEW; 4199b8e80941Smrg 4200b8e80941Smrg yy_switch_to_buffer( b , yyscanner ); 4201b8e80941Smrg 4202b8e80941Smrg return b; 4203b8e80941Smrg} 4204b8e80941Smrg 4205b8e80941Smrg/** Setup the input buffer state to scan a string. The next call to yylex() will 4206b8e80941Smrg * scan from a @e copy of @a str. 4207b8e80941Smrg * @param yystr a NUL-terminated string to scan 4208b8e80941Smrg * @param yyscanner The scanner object. 4209b8e80941Smrg * @return the newly allocated buffer state object. 4210b8e80941Smrg * @note If you want to scan bytes that may contain NUL values, then use 4211b8e80941Smrg * yy_scan_bytes() instead. 4212b8e80941Smrg */ 4213b8e80941SmrgYY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) 4214b8e80941Smrg{ 4215b8e80941Smrg 4216b8e80941Smrg return yy_scan_bytes( yystr, strlen(yystr) , yyscanner); 4217b8e80941Smrg} 4218b8e80941Smrg 4219b8e80941Smrg/** Setup the input buffer state to scan the given bytes. The next call to yylex() will 4220b8e80941Smrg * scan from a @e copy of @a bytes. 4221b8e80941Smrg * @param yybytes the byte buffer to scan 4222b8e80941Smrg * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. 4223b8e80941Smrg * @param yyscanner The scanner object. 4224b8e80941Smrg * @return the newly allocated buffer state object. 4225b8e80941Smrg */ 4226b8e80941SmrgYY_BUFFER_STATE yy_scan_bytes (const char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) 4227b8e80941Smrg{ 4228b8e80941Smrg YY_BUFFER_STATE b; 4229b8e80941Smrg char *buf; 4230b8e80941Smrg yy_size_t n; 4231b8e80941Smrg yy_size_t i; 4232b8e80941Smrg 4233b8e80941Smrg /* Get memory for full buffer, including space for trailing EOB's. */ 4234b8e80941Smrg n = (yy_size_t) (_yybytes_len + 2); 4235b8e80941Smrg buf = (char *) yyalloc( n , yyscanner ); 4236b8e80941Smrg if ( ! buf ) 4237b8e80941Smrg YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); 4238b8e80941Smrg 4239b8e80941Smrg for ( i = 0; i < _yybytes_len; ++i ) 4240b8e80941Smrg buf[i] = yybytes[i]; 4241b8e80941Smrg 4242b8e80941Smrg buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 4243b8e80941Smrg 4244b8e80941Smrg b = yy_scan_buffer( buf, n , yyscanner); 4245b8e80941Smrg if ( ! b ) 4246b8e80941Smrg YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); 4247b8e80941Smrg 4248b8e80941Smrg /* It's okay to grow etc. this buffer, and we should throw it 4249b8e80941Smrg * away when we're done. 4250b8e80941Smrg */ 4251b8e80941Smrg b->yy_is_our_buffer = 1; 4252b8e80941Smrg 4253b8e80941Smrg return b; 4254b8e80941Smrg} 4255b8e80941Smrg 4256b8e80941Smrg#ifndef YY_EXIT_FAILURE 4257b8e80941Smrg#define YY_EXIT_FAILURE 2 4258b8e80941Smrg#endif 4259b8e80941Smrg 4260b8e80941Smrgstatic void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) 4261b8e80941Smrg{ 4262b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4263b8e80941Smrg (void)yyg; 4264b8e80941Smrg fprintf( stderr, "%s\n", msg ); 4265b8e80941Smrg exit( YY_EXIT_FAILURE ); 4266b8e80941Smrg} 4267b8e80941Smrg 4268b8e80941Smrg/* Redefine yyless() so it works in section 3 code. */ 4269b8e80941Smrg 4270b8e80941Smrg#undef yyless 4271b8e80941Smrg#define yyless(n) \ 4272b8e80941Smrg do \ 4273b8e80941Smrg { \ 4274b8e80941Smrg /* Undo effects of setting up yytext. */ \ 4275b8e80941Smrg int yyless_macro_arg = (n); \ 4276b8e80941Smrg YY_LESS_LINENO(yyless_macro_arg);\ 4277b8e80941Smrg yytext[yyleng] = yyg->yy_hold_char; \ 4278b8e80941Smrg yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ 4279b8e80941Smrg yyg->yy_hold_char = *yyg->yy_c_buf_p; \ 4280b8e80941Smrg *yyg->yy_c_buf_p = '\0'; \ 4281b8e80941Smrg yyleng = yyless_macro_arg; \ 4282b8e80941Smrg } \ 4283b8e80941Smrg while ( 0 ) 4284b8e80941Smrg 4285b8e80941Smrg/* Accessor methods (get/set functions) to struct members. */ 4286b8e80941Smrg 4287b8e80941Smrg/** Get the user-defined data for this scanner. 4288b8e80941Smrg * @param yyscanner The scanner object. 4289b8e80941Smrg */ 4290b8e80941SmrgYY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) 4291b8e80941Smrg{ 4292b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4293b8e80941Smrg return yyextra; 4294b8e80941Smrg} 4295b8e80941Smrg 4296b8e80941Smrg/** Get the current line number. 4297b8e80941Smrg * @param yyscanner The scanner object. 4298b8e80941Smrg */ 4299b8e80941Smrgint yyget_lineno (yyscan_t yyscanner) 4300b8e80941Smrg{ 4301b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4302b8e80941Smrg 4303b8e80941Smrg if (! YY_CURRENT_BUFFER) 4304b8e80941Smrg return 0; 4305b8e80941Smrg 4306b8e80941Smrg return yylineno; 4307b8e80941Smrg} 4308b8e80941Smrg 4309b8e80941Smrg/** Get the current column number. 4310b8e80941Smrg * @param yyscanner The scanner object. 4311b8e80941Smrg */ 4312b8e80941Smrgint yyget_column (yyscan_t yyscanner) 4313b8e80941Smrg{ 4314b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4315b8e80941Smrg 4316b8e80941Smrg if (! YY_CURRENT_BUFFER) 4317b8e80941Smrg return 0; 4318b8e80941Smrg 4319b8e80941Smrg return yycolumn; 4320b8e80941Smrg} 4321b8e80941Smrg 4322b8e80941Smrg/** Get the input stream. 4323b8e80941Smrg * @param yyscanner The scanner object. 4324b8e80941Smrg */ 4325b8e80941SmrgFILE *yyget_in (yyscan_t yyscanner) 4326b8e80941Smrg{ 4327b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4328b8e80941Smrg return yyin; 4329b8e80941Smrg} 4330b8e80941Smrg 4331b8e80941Smrg/** Get the output stream. 4332b8e80941Smrg * @param yyscanner The scanner object. 4333b8e80941Smrg */ 4334b8e80941SmrgFILE *yyget_out (yyscan_t yyscanner) 4335b8e80941Smrg{ 4336b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4337b8e80941Smrg return yyout; 4338b8e80941Smrg} 4339b8e80941Smrg 4340b8e80941Smrg/** Get the length of the current token. 4341b8e80941Smrg * @param yyscanner The scanner object. 4342b8e80941Smrg */ 4343b8e80941Smrgyy_size_t yyget_leng (yyscan_t yyscanner) 4344b8e80941Smrg{ 4345b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4346b8e80941Smrg return yyleng; 4347b8e80941Smrg} 4348b8e80941Smrg 4349b8e80941Smrg/** Get the current token. 4350b8e80941Smrg * @param yyscanner The scanner object. 4351b8e80941Smrg */ 4352b8e80941Smrg 4353b8e80941Smrgchar *yyget_text (yyscan_t yyscanner) 4354b8e80941Smrg{ 4355b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4356b8e80941Smrg return yytext; 4357b8e80941Smrg} 4358b8e80941Smrg 4359b8e80941Smrg/** Set the user-defined data. This data is never touched by the scanner. 4360b8e80941Smrg * @param user_defined The data to be associated with this scanner. 4361b8e80941Smrg * @param yyscanner The scanner object. 4362b8e80941Smrg */ 4363b8e80941Smrgvoid yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) 4364b8e80941Smrg{ 4365b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4366b8e80941Smrg yyextra = user_defined ; 4367b8e80941Smrg} 4368b8e80941Smrg 4369b8e80941Smrg/** Set the current line number. 4370b8e80941Smrg * @param _line_number line number 4371b8e80941Smrg * @param yyscanner The scanner object. 4372b8e80941Smrg */ 4373b8e80941Smrgvoid yyset_lineno (int _line_number , yyscan_t yyscanner) 4374b8e80941Smrg{ 4375b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4376b8e80941Smrg 4377b8e80941Smrg /* lineno is only valid if an input buffer exists. */ 4378b8e80941Smrg if (! YY_CURRENT_BUFFER ) 4379b8e80941Smrg YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); 4380b8e80941Smrg 4381b8e80941Smrg yylineno = _line_number; 4382b8e80941Smrg} 4383b8e80941Smrg 4384b8e80941Smrg/** Set the current column. 4385b8e80941Smrg * @param _column_no column number 4386b8e80941Smrg * @param yyscanner The scanner object. 4387b8e80941Smrg */ 4388b8e80941Smrgvoid yyset_column (int _column_no , yyscan_t yyscanner) 4389b8e80941Smrg{ 4390b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4391b8e80941Smrg 4392b8e80941Smrg /* column is only valid if an input buffer exists. */ 4393b8e80941Smrg if (! YY_CURRENT_BUFFER ) 4394b8e80941Smrg YY_FATAL_ERROR( "yyset_column called with no buffer" ); 4395b8e80941Smrg 4396b8e80941Smrg yycolumn = _column_no; 4397b8e80941Smrg} 4398b8e80941Smrg 4399b8e80941Smrg/** Set the input stream. This does not discard the current 4400b8e80941Smrg * input buffer. 4401b8e80941Smrg * @param _in_str A readable stream. 4402b8e80941Smrg * @param yyscanner The scanner object. 4403b8e80941Smrg * @see yy_switch_to_buffer 4404b8e80941Smrg */ 4405b8e80941Smrgvoid yyset_in (FILE * _in_str , yyscan_t yyscanner) 4406b8e80941Smrg{ 4407b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4408b8e80941Smrg yyin = _in_str ; 4409b8e80941Smrg} 4410b8e80941Smrg 4411b8e80941Smrgvoid yyset_out (FILE * _out_str , yyscan_t yyscanner) 4412b8e80941Smrg{ 4413b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4414b8e80941Smrg yyout = _out_str ; 4415b8e80941Smrg} 4416b8e80941Smrg 4417b8e80941Smrgint yyget_debug (yyscan_t yyscanner) 4418b8e80941Smrg{ 4419b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4420b8e80941Smrg return yy_flex_debug; 4421b8e80941Smrg} 4422b8e80941Smrg 4423b8e80941Smrgvoid yyset_debug (int _bdebug , yyscan_t yyscanner) 4424b8e80941Smrg{ 4425b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4426b8e80941Smrg yy_flex_debug = _bdebug ; 4427b8e80941Smrg} 4428b8e80941Smrg 4429b8e80941Smrg/* Accessor methods for yylval and yylloc */ 4430b8e80941Smrg 4431b8e80941SmrgYYSTYPE * yyget_lval (yyscan_t yyscanner) 4432b8e80941Smrg{ 4433b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4434b8e80941Smrg return yylval; 4435b8e80941Smrg} 4436b8e80941Smrg 4437b8e80941Smrgvoid yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) 4438b8e80941Smrg{ 4439b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4440b8e80941Smrg yylval = yylval_param; 4441b8e80941Smrg} 4442b8e80941Smrg 4443b8e80941SmrgYYLTYPE *yyget_lloc (yyscan_t yyscanner) 4444b8e80941Smrg{ 4445b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4446b8e80941Smrg return yylloc; 4447b8e80941Smrg} 4448b8e80941Smrg 4449b8e80941Smrgvoid yyset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner) 4450b8e80941Smrg{ 4451b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4452b8e80941Smrg yylloc = yylloc_param; 4453b8e80941Smrg} 4454b8e80941Smrg 4455b8e80941Smrg/* User-visible API */ 4456b8e80941Smrg 4457b8e80941Smrg/* yylex_init is special because it creates the scanner itself, so it is 4458b8e80941Smrg * the ONLY reentrant function that doesn't take the scanner as the last argument. 4459b8e80941Smrg * That's why we explicitly handle the declaration, instead of using our macros. 4460b8e80941Smrg */ 4461b8e80941Smrgint yylex_init(yyscan_t* ptr_yy_globals) 4462b8e80941Smrg{ 4463b8e80941Smrg if (ptr_yy_globals == NULL){ 4464b8e80941Smrg errno = EINVAL; 4465b8e80941Smrg return 1; 4466b8e80941Smrg } 4467b8e80941Smrg 4468b8e80941Smrg *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); 4469b8e80941Smrg 4470b8e80941Smrg if (*ptr_yy_globals == NULL){ 4471b8e80941Smrg errno = ENOMEM; 4472b8e80941Smrg return 1; 4473b8e80941Smrg } 4474b8e80941Smrg 4475b8e80941Smrg /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ 4476b8e80941Smrg memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); 4477b8e80941Smrg 4478b8e80941Smrg return yy_init_globals ( *ptr_yy_globals ); 4479b8e80941Smrg} 4480b8e80941Smrg 4481b8e80941Smrg/* yylex_init_extra has the same functionality as yylex_init, but follows the 4482b8e80941Smrg * convention of taking the scanner as the last argument. Note however, that 4483b8e80941Smrg * this is a *pointer* to a scanner, as it will be allocated by this call (and 4484b8e80941Smrg * is the reason, too, why this function also must handle its own declaration). 4485b8e80941Smrg * The user defined value in the first argument will be available to yyalloc in 4486b8e80941Smrg * the yyextra field. 4487b8e80941Smrg */ 4488b8e80941Smrgint yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) 4489b8e80941Smrg{ 4490b8e80941Smrg struct yyguts_t dummy_yyguts; 4491b8e80941Smrg 4492b8e80941Smrg yyset_extra (yy_user_defined, &dummy_yyguts); 4493b8e80941Smrg 4494b8e80941Smrg if (ptr_yy_globals == NULL){ 4495b8e80941Smrg errno = EINVAL; 4496b8e80941Smrg return 1; 4497b8e80941Smrg } 4498b8e80941Smrg 4499b8e80941Smrg *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); 4500b8e80941Smrg 4501b8e80941Smrg if (*ptr_yy_globals == NULL){ 4502b8e80941Smrg errno = ENOMEM; 4503b8e80941Smrg return 1; 4504b8e80941Smrg } 4505b8e80941Smrg 4506b8e80941Smrg /* By setting to 0xAA, we expose bugs in 4507b8e80941Smrg yy_init_globals. Leave at 0x00 for releases. */ 4508b8e80941Smrg memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); 4509b8e80941Smrg 4510b8e80941Smrg yyset_extra (yy_user_defined, *ptr_yy_globals); 4511b8e80941Smrg 4512b8e80941Smrg return yy_init_globals ( *ptr_yy_globals ); 4513b8e80941Smrg} 4514b8e80941Smrg 4515b8e80941Smrgstatic int yy_init_globals (yyscan_t yyscanner) 4516b8e80941Smrg{ 4517b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4518b8e80941Smrg /* Initialization is the same as for the non-reentrant scanner. 4519b8e80941Smrg * This function is called from yylex_destroy(), so don't allocate here. 4520b8e80941Smrg */ 4521b8e80941Smrg 4522b8e80941Smrg yyg->yy_buffer_stack = NULL; 4523b8e80941Smrg yyg->yy_buffer_stack_top = 0; 4524b8e80941Smrg yyg->yy_buffer_stack_max = 0; 4525b8e80941Smrg yyg->yy_c_buf_p = NULL; 4526b8e80941Smrg yyg->yy_init = 0; 4527b8e80941Smrg yyg->yy_start = 0; 4528b8e80941Smrg 4529b8e80941Smrg yyg->yy_start_stack_ptr = 0; 4530b8e80941Smrg yyg->yy_start_stack_depth = 0; 4531b8e80941Smrg yyg->yy_start_stack = NULL; 4532b8e80941Smrg 4533b8e80941Smrg/* Defined in main.c */ 4534b8e80941Smrg#ifdef YY_STDINIT 4535b8e80941Smrg yyin = stdin; 4536b8e80941Smrg yyout = stdout; 4537b8e80941Smrg#else 4538b8e80941Smrg yyin = NULL; 4539b8e80941Smrg yyout = NULL; 4540b8e80941Smrg#endif 4541b8e80941Smrg 4542b8e80941Smrg /* For future reference: Set errno on error, since we are called by 4543b8e80941Smrg * yylex_init() 4544b8e80941Smrg */ 4545b8e80941Smrg return 0; 4546b8e80941Smrg} 4547b8e80941Smrg 4548b8e80941Smrg/* yylex_destroy is for both reentrant and non-reentrant scanners. */ 4549b8e80941Smrgint yylex_destroy (yyscan_t yyscanner) 4550b8e80941Smrg{ 4551b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4552b8e80941Smrg 4553b8e80941Smrg /* Pop the buffer stack, destroying each element. */ 4554b8e80941Smrg while(YY_CURRENT_BUFFER){ 4555b8e80941Smrg yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); 4556b8e80941Smrg YY_CURRENT_BUFFER_LVALUE = NULL; 4557b8e80941Smrg yypop_buffer_state(yyscanner); 4558b8e80941Smrg } 4559b8e80941Smrg 4560b8e80941Smrg /* Destroy the stack itself. */ 4561b8e80941Smrg yyfree(yyg->yy_buffer_stack , yyscanner); 4562b8e80941Smrg yyg->yy_buffer_stack = NULL; 4563b8e80941Smrg 4564b8e80941Smrg /* Destroy the start condition stack. */ 4565b8e80941Smrg yyfree( yyg->yy_start_stack , yyscanner ); 4566b8e80941Smrg yyg->yy_start_stack = NULL; 4567b8e80941Smrg 4568b8e80941Smrg /* Reset the globals. This is important in a non-reentrant scanner so the next time 4569b8e80941Smrg * yylex() is called, initialization will occur. */ 4570b8e80941Smrg yy_init_globals( yyscanner); 4571b8e80941Smrg 4572b8e80941Smrg /* Destroy the main struct (reentrant only). */ 4573b8e80941Smrg yyfree ( yyscanner , yyscanner ); 4574b8e80941Smrg yyscanner = NULL; 4575b8e80941Smrg return 0; 4576b8e80941Smrg} 4577b8e80941Smrg 4578b8e80941Smrg/* 4579b8e80941Smrg * Internal utility routines. 4580b8e80941Smrg */ 4581b8e80941Smrg 4582b8e80941Smrg#ifndef yytext_ptr 4583b8e80941Smrgstatic void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) 4584b8e80941Smrg{ 4585b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4586b8e80941Smrg (void)yyg; 4587b8e80941Smrg 4588b8e80941Smrg int i; 4589b8e80941Smrg for ( i = 0; i < n; ++i ) 4590b8e80941Smrg s1[i] = s2[i]; 4591b8e80941Smrg} 4592b8e80941Smrg#endif 4593b8e80941Smrg 4594b8e80941Smrg#ifdef YY_NEED_STRLEN 4595b8e80941Smrgstatic int yy_flex_strlen (const char * s , yyscan_t yyscanner) 4596b8e80941Smrg{ 4597b8e80941Smrg int n; 4598b8e80941Smrg for ( n = 0; s[n]; ++n ) 4599b8e80941Smrg ; 4600b8e80941Smrg 4601b8e80941Smrg return n; 4602b8e80941Smrg} 4603b8e80941Smrg#endif 4604b8e80941Smrg 4605b8e80941Smrgvoid *yyalloc (yy_size_t size , yyscan_t yyscanner) 4606b8e80941Smrg{ 4607b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4608b8e80941Smrg (void)yyg; 4609b8e80941Smrg return malloc(size); 4610b8e80941Smrg} 4611b8e80941Smrg 4612b8e80941Smrgvoid *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) 4613b8e80941Smrg{ 4614b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4615b8e80941Smrg (void)yyg; 4616b8e80941Smrg 4617b8e80941Smrg /* The cast to (char *) in the following accommodates both 4618b8e80941Smrg * implementations that use char* generic pointers, and those 4619b8e80941Smrg * that use void* generic pointers. It works with the latter 4620b8e80941Smrg * because both ANSI C and C++ allow castless assignment from 4621b8e80941Smrg * any pointer type to void*, and deal with argument conversions 4622b8e80941Smrg * as though doing an assignment. 4623b8e80941Smrg */ 4624b8e80941Smrg return realloc(ptr, size); 4625b8e80941Smrg} 4626b8e80941Smrg 4627b8e80941Smrgvoid yyfree (void * ptr , yyscan_t yyscanner) 4628b8e80941Smrg{ 4629b8e80941Smrg struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; 4630b8e80941Smrg (void)yyg; 4631b8e80941Smrg free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ 4632b8e80941Smrg} 4633b8e80941Smrg 4634b8e80941Smrg#define YYTABLES_NAME "yytables" 4635b8e80941Smrg 4636b8e80941Smrg#line 703 "../src/compiler/glsl/glsl_lexer.ll" 4637b8e80941Smrg 4638b8e80941Smrg 4639b8e80941Smrgint 4640b8e80941Smrgclassify_identifier(struct _mesa_glsl_parse_state *state, const char *name, 4641b8e80941Smrg unsigned name_len, YYSTYPE *output) 4642b8e80941Smrg{ 4643b8e80941Smrg /* We're not doing linear_strdup here, to avoid an implicit call on 4644b8e80941Smrg * strlen() for the length of the string, as this is already found by flex 4645b8e80941Smrg * and stored in yyleng 4646b8e80941Smrg */ 4647b8e80941Smrg char *id = (char *) linear_alloc_child(state->linalloc, name_len + 1); 4648b8e80941Smrg memcpy(id, name, name_len + 1); 4649b8e80941Smrg output->identifier = id; 4650b8e80941Smrg 4651b8e80941Smrg if (state->is_field) { 4652b8e80941Smrg state->is_field = false; 4653b8e80941Smrg return FIELD_SELECTION; 4654b8e80941Smrg } 4655b8e80941Smrg if (state->symbols->get_variable(name) || state->symbols->get_function(name)) 4656b8e80941Smrg return IDENTIFIER; 4657b8e80941Smrg else if (state->symbols->get_type(name)) 4658b8e80941Smrg return TYPE_IDENTIFIER; 4659b8e80941Smrg else 4660b8e80941Smrg return NEW_IDENTIFIER; 4661b8e80941Smrg} 4662b8e80941Smrg 4663b8e80941Smrgvoid 4664b8e80941Smrg_mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state, const char *string) 4665b8e80941Smrg{ 4666b8e80941Smrg yylex_init_extra(state, & state->scanner); 4667b8e80941Smrg yy_scan_string(string, state->scanner); 4668b8e80941Smrg} 4669b8e80941Smrg 4670b8e80941Smrgvoid 4671b8e80941Smrg_mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state) 4672b8e80941Smrg{ 4673b8e80941Smrg yylex_destroy(state->scanner); 4674b8e80941Smrg} 4675b8e80941Smrg 4676