diff options
Diffstat (limited to 'skel.c')
-rw-r--r-- | skel.c | 3713 |
1 files changed, 3713 insertions, 0 deletions
@@ -0,0 +1,3713 @@ +/* File created from flex.skl via mkskel.sh */ + +#include "flexdef.h" + +const char *skel[] = { + "%# -*-C-*- vi: set ft=c:", + "%# This file is processed in several stages.", + "%# Here are the stages, as best as I can describe:", + "%#", + "%# 1. flex.skl is processed through GNU m4 during the", + "%# pre-compilation stage of flex. Only macros starting", + "%# with `m4_' are processed, and quoting is normal.", + "%#", + "%# 2. The preprocessed skeleton is translated verbatim into a", + "%# C array, saved as \"skel.c\" and compiled into the flex binary.", + "%#", + "%# 3. At runtime, the skeleton is generated and filtered (again)", + "%# through m4. Macros beginning with `m4_' will be processed.", + "%# The quoting is \"[[\" and \"]]\" so we don't interfere with", + "%# user code.", + "%# ", + "%# All generate macros for the m4 stage contain the text \"m4\" or \"M4\"", + "%# in them. This is to distinguish them from CPP macros.", + "%# The exception to this rule is YY_G, which is an m4 macro, ", + "%# but it needs to be remain short because it is used everywhere.", + "%#", + "/* A lexical scanner generated by flex */", + "", + "%# Macros for preproc stage.", + "", + "", + "%# Macros for runtime processing stage.", + "m4_changecom", + "m4_changequote", + "m4_changequote([[, ]])", + "", + "%# ", + "%# Lines in this skeleton starting with a \"%\" character are \"control lines\"", + "%# and affect the generation of the scanner. The possible control codes are", + "%# listed and processed in misc.c.", + "%#", + "%# %# - A comment. The current line is omitted from the generated scanner.", + "%# %if-c++-only - The following lines are printed for C++ scanners ONLY.", + "%# %if-c-only - The following lines are NOT printed for C++ scanners.", + "%# %if-c-or-c++ - The following lines are printed in BOTH C and C++ scanners.", + "%# %if-reentrant - Print for reentrant scanners.(push)", + "%# %if-not-reentrant - Print for non-reentrant scanners. (push)", + "%# %if-bison-bridge - Print for bison-bridge. (push)", + "%# %if-not-bison-bridge - Print for non-bison-bridge. (push)", + "%# %endif - pop from the previous if code.", + "%# %% - A stop-point, where code is inserted by flex.", + "%# Each stop-point is numbered here and also in the code generator.", + "%# (See gen.c, etc. for details.)", + "%# %not-for-header - Begin code that should NOT appear in a \".h\" file.", + "%# %ok-for-header - %c and %e are used for building a header file.", + "%# %if-tables-serialization", + "%#", + "%# All control-lines EXCEPT comment lines (\"%#\") will be inserted into", + "%# the generated scanner as a C-style comment. This is to aid those who", + "%# edit the skeleton.", + "%#", + "", + "%not-for-header", + "%if-c-only", + "%if-not-reentrant", + "m4_ifelse(M4_YY_PREFIX,yy,,", + "#define yy_create_buffer M4_YY_PREFIX[[_create_buffer]]", + "#define yy_delete_buffer M4_YY_PREFIX[[_delete_buffer]]", + "#define yy_flex_debug M4_YY_PREFIX[[_flex_debug]]", + "#define yy_init_buffer M4_YY_PREFIX[[_init_buffer]]", + "#define yy_flush_buffer M4_YY_PREFIX[[_flush_buffer]]", + "#define yy_load_buffer_state M4_YY_PREFIX[[_load_buffer_state]]", + "#define yy_switch_to_buffer M4_YY_PREFIX[[_switch_to_buffer]]", + "#define yyin M4_YY_PREFIX[[in]]", + "#define yyleng M4_YY_PREFIX[[leng]]", + "#define yylex M4_YY_PREFIX[[lex]]", + "#define yylineno M4_YY_PREFIX[[lineno]]", + "#define yyout M4_YY_PREFIX[[out]]", + "#define yyrestart M4_YY_PREFIX[[restart]]", + "#define yytext M4_YY_PREFIX[[text]]", + "#define yywrap M4_YY_PREFIX[[wrap]]", + "#define yyalloc M4_YY_PREFIX[[alloc]]", + "#define yyrealloc M4_YY_PREFIX[[realloc]]", + "#define yyfree M4_YY_PREFIX[[free]]", + ")", + "%endif", + "%endif", + "%ok-for-header", + "", + "#define FLEX_SCANNER", + "#define YY_FLEX_MAJOR_VERSION 2", + "#define YY_FLEX_MINOR_VERSION 5", + "#define YY_FLEX_SUBMINOR_VERSION 35", + "#if YY_FLEX_SUBMINOR_VERSION > 0", + "#define FLEX_BETA", + "#endif", + "", + "%# Some negated symbols", + "m4_ifdef( [[M4_YY_IN_HEADER]], , [[m4_define([[M4_YY_NOT_IN_HEADER]], [[]])]])", + "m4_ifdef( [[M4_YY_REENTRANT]], , [[m4_define([[M4_YY_NOT_REENTRANT]], [[]])]])", + "", + "%# This is the m4 way to say \"(stack_used || is_reentrant)", + "m4_ifdef( [[M4_YY_STACK_USED]], [[m4_define([[M4_YY_HAS_START_STACK_VARS]])]])", + "m4_ifdef( [[M4_YY_REENTRANT]], [[m4_define([[M4_YY_HAS_START_STACK_VARS]])]])", + "", + "%# Prefixes.", + "%# The complexity here is necessary so that m4 preserves", + "%# the argument lists to each C function.", + "", + "", + "m4_ifdef( [[M4_YY_PREFIX]],, [[m4_define([[M4_YY_PREFIX]], [[yy]])]])", + "", + "", + "", + "%if-c++-only", + " /* The c++ scanner is a mess. The FlexLexer.h header file relies on the", + " * following macro. This is required in order to pass the c++-multiple-scanners", + " * test in the regression suite. We get reports that it breaks inheritance.", + " * We will address this in a future release of flex, or omit the C++ scanner", + " * altogether.", + " */", + " #define yyFlexLexer M4_YY_PREFIX[[FlexLexer]]", + "%endif", + "", + "%if-c-only", + " m4_define(yy[[_create_buffer]], [[M4_YY_PREFIX[[_create_buffer]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[_delete_buffer]], [[M4_YY_PREFIX[[_delete_buffer]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[_scan_buffer]], [[M4_YY_PREFIX[[_scan_buffer]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[_scan_string]], [[M4_YY_PREFIX[[_scan_string]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[_scan_bytes]], [[M4_YY_PREFIX[[_scan_bytes]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[_init_buffer]], [[M4_YY_PREFIX[[_init_buffer]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[_flush_buffer]], [[M4_YY_PREFIX[[_flush_buffer]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[_load_buffer_state]], [[M4_YY_PREFIX[[_load_buffer_state]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[_switch_to_buffer]], [[M4_YY_PREFIX[[_switch_to_buffer]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[push_buffer_state]], [[M4_YY_PREFIX[[push_buffer_state]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[pop_buffer_state]], [[M4_YY_PREFIX[[pop_buffer_state]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[ensure_buffer_stack]], [[M4_YY_PREFIX[[ensure_buffer_stack]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[lex]], [[M4_YY_PREFIX[[lex]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[restart]], [[M4_YY_PREFIX[[restart]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[lex_init]], [[M4_YY_PREFIX[[lex_init]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[lex_init_extra]], [[M4_YY_PREFIX[[lex_init_extra]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[lex_destroy]], [[M4_YY_PREFIX[[lex_destroy]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[get_debug]], [[M4_YY_PREFIX[[get_debug]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[set_debug]], [[M4_YY_PREFIX[[set_debug]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[get_extra]], [[M4_YY_PREFIX[[get_extra]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[set_extra]], [[M4_YY_PREFIX[[set_extra]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[get_in]], [[M4_YY_PREFIX[[get_in]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[set_in]], [[M4_YY_PREFIX[[set_in]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[get_out]], [[M4_YY_PREFIX[[get_out]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[set_out]], [[M4_YY_PREFIX[[set_out]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[get_leng]], [[M4_YY_PREFIX[[get_leng]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[get_text]], [[M4_YY_PREFIX[[get_text]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[get_lineno]], [[M4_YY_PREFIX[[get_lineno]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[set_lineno]], [[M4_YY_PREFIX[[set_lineno]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_ifdef( [[M4_YY_REENTRANT]],", + " [[", + " m4_define(yy[[get_column]], [[M4_YY_PREFIX[[get_column]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[set_column]], [[M4_YY_PREFIX[[set_column]]m4_ifelse($#,0,,[[($@)]])]])", + " ]])", + " m4_define(yy[[wrap]], [[M4_YY_PREFIX[[wrap]]m4_ifelse($#,0,,[[($@)]])]])", + "%endif", + "", + "m4_ifdef( [[M4_YY_BISON_LVAL]],", + "[[", + " m4_define(yy[[get_lval]], [[M4_YY_PREFIX[[get_lval]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[set_lval]], [[M4_YY_PREFIX[[set_lval]]m4_ifelse($#,0,,[[($@)]])]])", + "]])", + "", + "m4_ifdef( [[<M4_YY_BISON_LLOC>]],", + "[[", + " m4_define(yy[[get_lloc]], [[M4_YY_PREFIX[[get_lloc]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[set_lloc]], [[M4_YY_PREFIX[[set_lloc]]m4_ifelse($#,0,,[[($@)]])]])", + "]])", + "", + "", + " m4_define(yy[[alloc]], [[M4_YY_PREFIX[[alloc]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[realloc]], [[M4_YY_PREFIX[[realloc]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[free]], [[M4_YY_PREFIX[[free]]m4_ifelse($#,0,,[[($@)]])]])", + "", + "%if-c-only", + "m4_ifdef( [[M4_YY_NOT_REENTRANT]],", + "[[", + " m4_define(yy[[text]], [[M4_YY_PREFIX[[text]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[leng]], [[M4_YY_PREFIX[[leng]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[in]], [[M4_YY_PREFIX[[in]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[out]], [[M4_YY_PREFIX[[out]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[_flex_debug]], [[M4_YY_PREFIX[[_flex_debug]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[lineno]], [[M4_YY_PREFIX[[lineno]]m4_ifelse($#,0,,[[($@)]])]])", + "]])", + "%endif", + "", + "", + "m4_ifdef( [[M4_YY_TABLES_EXTERNAL]],", + "[[", + " m4_define(yy[[tables_fload]], [[M4_YY_PREFIX[[tables_fload]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[tables_destroy]], [[M4_YY_PREFIX[[tables_destroy]]m4_ifelse($#,0,,[[($@)]])]])", + " m4_define(yy[[TABLES_NAME]], [[M4_YY_PREFIX[[TABLES_NAME]]m4_ifelse($#,0,,[[($@)]])]])", + "]])", + "", + "/* First, we deal with platform-specific or compiler-specific issues. */", + "", + "/* begin standard C headers. */", + "%if-c-only", + "#include <stdio.h>", + "#include <string.h>", + "#include <errno.h>", + "#include <stdlib.h>", + "%endif", + "", + "%if-tables-serialization", + "#include <sys/types.h>", + "#include <netinet/in.h>", + "%endif", + "/* end standard C headers. */", + "", + "%if-c-or-c++", + "/* flex integer type definitions */", + "", + "#ifndef FLEXINT_H", + "#define FLEXINT_H", + "", + "/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */", + "", + "#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L", + "", + "/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,", + " * if you want the limit (max/min) macros for int types. ", + " */", + "#ifndef __STDC_LIMIT_MACROS", + "#define __STDC_LIMIT_MACROS 1", + "#endif", + "", + "#include <inttypes.h>", + "typedef int8_t flex_int8_t;", + "typedef uint8_t flex_uint8_t;", + "typedef int16_t flex_int16_t;", + "typedef uint16_t flex_uint16_t;", + "typedef int32_t flex_int32_t;", + "typedef uint32_t flex_uint32_t;", + "#else", + "typedef signed char flex_int8_t;", + "typedef short int flex_int16_t;", + "typedef int flex_int32_t;", + "typedef unsigned char flex_uint8_t; ", + "typedef unsigned short int flex_uint16_t;", + "typedef unsigned int flex_uint32_t;", + "#endif /* ! C99 */", + "", + "/* Limits of integral types. */", + "#ifndef INT8_MIN", + "#define INT8_MIN (-128)", + "#endif", + "#ifndef INT16_MIN", + "#define INT16_MIN (-32767-1)", + "#endif", + "#ifndef INT32_MIN", + "#define INT32_MIN (-2147483647-1)", + "#endif", + "#ifndef INT8_MAX", + "#define INT8_MAX (127)", + "#endif", + "#ifndef INT16_MAX", + "#define INT16_MAX (32767)", + "#endif", + "#ifndef INT32_MAX", + "#define INT32_MAX (2147483647)", + "#endif", + "#ifndef UINT8_MAX", + "#define UINT8_MAX (255U)", + "#endif", + "#ifndef UINT16_MAX", + "#define UINT16_MAX (65535U)", + "#endif", + "#ifndef UINT32_MAX", + "#define UINT32_MAX (4294967295U)", + "#endif", + "", + "", + "#endif /* ! FLEXINT_H */", + "", + "%endif", + "", + "%if-c++-only", + "/* begin standard C++ headers. */", + "#include <iostream> ", + "#include <errno.h>", + "#include <cstdlib>", + "#include <cstring>", + "/* end standard C++ headers. */", + "%endif", + "", + "#ifdef __cplusplus", + "", + "/* The \"const\" storage-class-modifier is valid. */", + "#define YY_USE_CONST", + "", + "#else /* ! __cplusplus */", + "", + "/* C99 requires __STDC__ to be defined as 1. */", + "#if defined (__STDC__)", + "", + "#define YY_USE_CONST", + "", + "#endif /* defined (__STDC__) */", + "#endif /* ! __cplusplus */", + "", + "#ifdef YY_USE_CONST", + "#define yyconst const", + "#else", + "#define yyconst", + "#endif", + "", + "%# For compilers that can not handle prototypes.", + "%# e.g.,", + "%# The function prototype", + "%# int foo(int x, char* y);", + "%# ", + "%# ...should be written as", + "%# int foo M4_YY_PARAMS(int x, char* y);", + "%# ", + "%# ...which could possibly generate", + "%# int foo ();", + "%# ", + "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_PROTOS]],", + "[[", + " m4_define( [[M4_YY_PARAMS]], [[()]])", + "]],", + "[[", + " m4_define( [[M4_YY_PARAMS]], [[($*)]])", + "]])", + "", + "%not-for-header", + "/* Returned upon end-of-file. */", + "#define YY_NULL 0", + "%ok-for-header", + "", + "%not-for-header", + "/* Promotes a possibly negative, possibly signed char to an unsigned", + " * integer for use as an array index. If the signed char is negative,", + " * we want to instead treat it as an 8-bit unsigned char, hence the", + " * double cast.", + " */", + "#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)", + "%ok-for-header", + "", + "", + "", + "%if-reentrant", + "", + "/* An opaque pointer. */", + "#ifndef YY_TYPEDEF_YY_SCANNER_T", + "#define YY_TYPEDEF_YY_SCANNER_T", + "typedef void* yyscan_t;", + "#endif", + "", + "%# Declare yyguts variable", + "m4_define( [[M4_YY_DECL_GUTS_VAR]], [[struct yyguts_t * yyg = (struct yyguts_t*)yyscanner]])", + "%# For use wherever a Global is accessed or assigned.", + "m4_define( [[YY_G]], [[yyg->$1]])", + "", + "%# For use in function prototypes to append the additional argument.", + "m4_define( [[M4_YY_PROTO_LAST_ARG]], [[, yyscan_t yyscanner]])", + "m4_define( [[M4_YY_PROTO_ONLY_ARG]], [[yyscan_t yyscanner]])", + "", + "%# For use in function definitions to append the additional argument.", + "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],", + "[[", + " m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscanner]])", + " m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscanner]])", + "]],", + "[[", + " m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscan_t yyscanner]])", + " m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscan_t yyscanner]])", + "]])", + "m4_define( [[M4_YY_DECL_LAST_ARG]], [[yyscan_t yyscanner;]])", + "", + "%# For use in function calls to pass the additional argument.", + "m4_define( [[M4_YY_CALL_LAST_ARG]], [[, yyscanner]])", + "m4_define( [[M4_YY_CALL_ONLY_ARG]], [[yyscanner]])", + "", + "%# For use in function documentation to adjust for additional argument.", + "m4_define( [[M4_YY_DOC_PARAM]], [[@param yyscanner The scanner object.]])", + "", + "/* For convenience, these vars (plus the bison vars far below)", + " are macros in the reentrant scanner. */", + "#define yyin YY_G(yyin_r)", + "#define yyout YY_G(yyout_r)", + "#define yyextra YY_G(yyextra_r)", + "#define yyleng YY_G(yyleng_r)", + "#define yytext YY_G(yytext_r)", + "#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)", + "#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)", + "#define yy_flex_debug YY_G(yy_flex_debug_r)", + "", + "m4_define( [[M4_YY_INCR_LINENO]],", + "[[ ", + " do{ yylineno++;", + " yycolumn=0;", + " }while(0)", + "]])", + "", + "%endif", + "", + "", + "", + "%if-not-reentrant", + "", + "m4_define( [[M4_YY_INCR_LINENO]],", + "[[ ", + " yylineno++;", + "]])", + "", + "%# Define these macros to be no-ops.", + "m4_define( [[M4_YY_DECL_GUTS_VAR]], [[m4_dnl]])", + "m4_define( [[YY_G]], [[($1)]])", + "m4_define( [[M4_YY_PROTO_LAST_ARG]])", + "m4_define( [[M4_YY_PROTO_ONLY_ARG]], [[void]])", + "m4_define( [[M4_YY_DEF_LAST_ARG]])", + "", + "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],", + "[[", + " m4_define( [[M4_YY_DEF_ONLY_ARG]])", + "]],", + "[[", + " m4_define( [[M4_YY_DEF_ONLY_ARG]], [[void]])", + "]])", + "m4_define([[M4_YY_DECL_LAST_ARG]])", + "m4_define([[M4_YY_CALL_LAST_ARG]])", + "m4_define([[M4_YY_CALL_ONLY_ARG]])", + "m4_define( [[M4_YY_DOC_PARAM]], [[]])", + "", + "%endif", + "", + "", + "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],", + "[[", + "%# For compilers that need traditional function definitions.", + "%# e.g.,", + "%# The function prototype taking 2 arguments", + "%# int foo (int x, char* y)", + "%#", + "%# ...should be written as", + "%# int foo YYFARGS2(int,x, char*,y)", + "%#", + "%# ...which could possibly generate", + "%# int foo (x,y,yyscanner)", + "%# int x;", + "%# char * y;", + "%# yyscan_t yyscanner;", + "%#", + "%# Generate traditional function defs", + " m4_define( [[YYFARGS0]], [[(M4_YY_DEF_ONLY_ARG) [[\\]]", + " M4_YY_DECL_LAST_ARG]])", + " m4_define( [[YYFARGS1]], [[($2 M4_YY_DEF_LAST_ARG) [[\\]]", + " $1 $2; [[\\]]", + " M4_YY_DECL_LAST_ARG]])", + " m4_define( [[YYFARGS2]], [[($2,$4 M4_YY_DEF_LAST_ARG) [[\\]]", + " $1 $2; [[\\]]", + " $3 $4; [[\\]]", + " M4_YY_DECL_LAST_ARG]])", + " m4_define( [[YYFARGS3]], [[($2,$4,$6 M4_YY_DEF_LAST_ARG) [[\\]]", + " $1 $2; [[\\]]", + " $3 $4; [[\\]]", + " $5 $6; [[\\]]", + " M4_YY_DECL_LAST_ARG]])", + "]],", + "[[", + "%# Generate C99 function defs.", + " m4_define( [[YYFARGS0]], [[(M4_YY_DEF_ONLY_ARG)]])", + " m4_define( [[YYFARGS1]], [[($1 $2 M4_YY_DEF_LAST_ARG)]])", + " m4_define( [[YYFARGS2]], [[($1 $2, $3 $4 M4_YY_DEF_LAST_ARG)]])", + " m4_define( [[YYFARGS3]], [[($1 $2, $3 $4, $5 $6 M4_YY_DEF_LAST_ARG)]])", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Enter a start condition. This macro really ought to take a parameter,", + " * but we do it the disgusting crufty way forced on us by the ()-less", + " * definition of BEGIN.", + " */", + "#define BEGIN YY_G(yy_start) = 1 + 2 *", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Translate the current start state into a value that can be later handed", + " * to BEGIN to return to the state. The YYSTATE alias is for lex", + " * compatibility.", + " */", + "#define YY_START ((YY_G(yy_start) - 1) / 2)", + "#define YYSTATE YY_START", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Action number for EOF rule of a given start state. */", + "#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Special action meaning \"start processing a new file\". */", + "#define YY_NEW_FILE yyrestart( yyin M4_YY_CALL_LAST_ARG )", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#define YY_END_OF_BUFFER_CHAR 0", + "]])", + "", + "/* Size of default input buffer. */", + "#ifndef YY_BUF_SIZE", + "#define YY_BUF_SIZE 16384", + "#endif", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* The state buf must be large enough to hold one state per character in the main buffer.", + " */", + "#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))", + "]])", + "", + "", + "#ifndef YY_TYPEDEF_YY_BUFFER_STATE", + "#define YY_TYPEDEF_YY_BUFFER_STATE", + "typedef struct yy_buffer_state *YY_BUFFER_STATE;", + "#endif", + "", + "%if-not-reentrant", + "extern int yyleng;", + "%endif", + "", + "%if-c-only", + "%if-not-reentrant", + "extern FILE *yyin, *yyout;", + "%endif", + "%endif", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#define EOB_ACT_CONTINUE_SCAN 0", + "#define EOB_ACT_END_OF_FILE 1", + "#define EOB_ACT_LAST_MATCH 2", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + " m4_ifdef( [[M4_YY_USE_LINENO]],", + " [[", + " /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires", + " * access to the local variable yy_act. Since yyless() is a macro, it would break", + " * existing scanners that call yyless() from OUTSIDE yylex. ", + " * One obvious solution it to make yy_act a global. I tried that, and saw", + " * a 5% performance hit in a non-yylineno scanner, because yy_act is", + " * normally declared as a register variable-- so it is not worth it.", + " */", + " #define YY_LESS_LINENO(n) \\", + " do { \\", + " int yyl;\\", + " for ( yyl = n; yyl < yyleng; ++yyl )\\", + " if ( yytext[yyl] == '\\n' )\\", + " --yylineno;\\", + " }while(0)", + " ]],", + " [[", + " #define YY_LESS_LINENO(n)", + " ]])", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Return all but the first \"n\" matched characters back to the input stream. */", + "#define yyless(n) \\", + " do \\", + " { \\", + " /* Undo effects of setting up yytext. */ \\", + " int yyless_macro_arg = (n); \\", + " YY_LESS_LINENO(yyless_macro_arg);\\", + " *yy_cp = YY_G(yy_hold_char); \\", + " YY_RESTORE_YY_MORE_OFFSET \\", + " YY_G(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \\", + " YY_DO_BEFORE_ACTION; /* set up yytext again */ \\", + " } \\", + " while ( 0 )", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#define unput(c) yyunput( c, YY_G(yytext_ptr) M4_YY_CALL_LAST_ARG )", + "]])", + "", + "#ifndef YY_TYPEDEF_YY_SIZE_T", + "#define YY_TYPEDEF_YY_SIZE_T", + "typedef size_t yy_size_t;", + "#endif", + "", + "#ifndef YY_STRUCT_YY_BUFFER_STATE", + "#define YY_STRUCT_YY_BUFFER_STATE", + "struct yy_buffer_state", + " {", + "%if-c-only", + " FILE *yy_input_file;", + "%endif", + "", + "%if-c++-only", + " std::istream* yy_input_file;", + "%endif", + "", + "", + " char *yy_ch_buf; /* input buffer */", + " char *yy_buf_pos; /* current position in input buffer */", + "", + " /* Size of input buffer in bytes, not including room for EOB", + " * characters.", + " */", + " yy_size_t yy_buf_size;", + "", + " /* Number of characters read into yy_ch_buf, not including EOB", + " * characters.", + " */", + " int yy_n_chars;", + "", + " /* Whether we \"own\" the buffer - i.e., we know we created it,", + " * and can realloc() it to grow it, and should free() it to", + " * delete it.", + " */", + " int yy_is_our_buffer;", + "", + " /* Whether this is an \"interactive\" input source; if so, and", + " * if we're using stdio for input, then we want to use getc()", + " * instead of fread(), to make sure we stop fetching input after", + " * each newline.", + " */", + " int yy_is_interactive;", + "", + " /* Whether we're considered to be at the beginning of a line.", + " * If so, '^' rules will be active on the next match, otherwise", + " * not.", + " */", + " int yy_at_bol;", + "", + " int yy_bs_lineno; /**< The line count. */", + " int yy_bs_column; /**< The column count. */", + " ", + "", + " /* Whether to try to fill the input buffer when we reach the", + " * end of it.", + " */", + " int yy_fill_buffer;", + "", + " int yy_buffer_status;", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#define YY_BUFFER_NEW 0", + "#define YY_BUFFER_NORMAL 1", + " /* When an EOF's been seen but there's still some text to process", + " * then we mark the buffer as YY_EOF_PENDING, to indicate that we", + " * shouldn't try reading from the input source any more. We might", + " * still have a bunch of tokens to match, though, because of", + " * possible backing-up.", + " *", + " * When we actually see the EOF, we change the status to \"new\"", + " * (via yyrestart()), so that the user can continue scanning by", + " * just pointing yyin at a new input file.", + " */", + "#define YY_BUFFER_EOF_PENDING 2", + "]])", + " };", + "#endif /* !YY_STRUCT_YY_BUFFER_STATE */", + "", + "%if-c-only Standard (non-C++) definition", + "%not-for-header", + "%if-not-reentrant", + "", + "/* Stack of input buffers. */", + "static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */", + "static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */", + "static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */", + "%endif", + "%ok-for-header", + "%endif", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* We provide macros for accessing buffer states in case in the", + " * future we want to put the buffer states in a more general", + " * \"scanner state\".", + " *", + " * Returns the top of the stack, or NULL.", + " */", + "#define YY_CURRENT_BUFFER ( YY_G(yy_buffer_stack) \\", + " ? YY_G(yy_buffer_stack)[YY_G(yy_buffer_stack_top)] \\", + " : NULL)", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Same as previous macro, but useful when we know that the buffer stack is not", + " * NULL or when we need an lvalue. For internal use only.", + " */", + "#define YY_CURRENT_BUFFER_LVALUE YY_G(yy_buffer_stack)[YY_G(yy_buffer_stack_top)]", + "]])", + "", + "%if-c-only Standard (non-C++) definition", + "", + "%if-not-reentrant", + "%not-for-header", + "/* yy_hold_char holds the character lost when yytext is formed. */", + "static char yy_hold_char;", + "static int yy_n_chars; /* number of characters read into yy_ch_buf */", + "int yyleng;", + "", + "/* Points to current character in buffer. */", + "static char *yy_c_buf_p = (char *) 0;", + "static int yy_init = 0; /* whether we need to initialize */", + "static int yy_start = 0; /* start state number */", + "", + "/* Flag which is used to allow yywrap()'s to do buffer switches", + " * instead of setting up a fresh yyin. A bit of a hack ...", + " */", + "static int yy_did_buffer_switch_on_eof;", + "%ok-for-header", + "%endif", + "", + "void yyrestart M4_YY_PARAMS( FILE *input_file M4_YY_PROTO_LAST_ARG );", + "void yy_switch_to_buffer M4_YY_PARAMS( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG );", + "YY_BUFFER_STATE yy_create_buffer M4_YY_PARAMS( FILE *file, int size M4_YY_PROTO_LAST_ARG );", + "void yy_delete_buffer M4_YY_PARAMS( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG );", + "void yy_flush_buffer M4_YY_PARAMS( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG );", + "void yypush_buffer_state M4_YY_PARAMS( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG );", + "void yypop_buffer_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "static void yyensure_buffer_stack M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "static void yy_load_buffer_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "static void yy_init_buffer M4_YY_PARAMS( YY_BUFFER_STATE b, FILE *file M4_YY_PROTO_LAST_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG)", + "]])", + "", + "YY_BUFFER_STATE yy_scan_buffer M4_YY_PARAMS( char *base, yy_size_t size M4_YY_PROTO_LAST_ARG );", + "YY_BUFFER_STATE yy_scan_string M4_YY_PARAMS( yyconst char *yy_str M4_YY_PROTO_LAST_ARG );", + "YY_BUFFER_STATE yy_scan_bytes M4_YY_PARAMS( yyconst char *bytes, int len M4_YY_PROTO_LAST_ARG );", + "", + "%endif", + "", + "void *yyalloc M4_YY_PARAMS( yy_size_t M4_YY_PROTO_LAST_ARG );", + "void *yyrealloc M4_YY_PARAMS( void *, yy_size_t M4_YY_PROTO_LAST_ARG );", + "void yyfree M4_YY_PARAMS( void * M4_YY_PROTO_LAST_ARG );", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#define yy_new_buffer yy_create_buffer", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#define yy_set_interactive(is_interactive) \\", + " { \\", + " if ( ! YY_CURRENT_BUFFER ){ \\", + " yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG); \\", + " YY_CURRENT_BUFFER_LVALUE = \\", + " yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG); \\", + " } \\", + " YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \\", + " }", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#define yy_set_bol(at_bol) \\", + " { \\", + " if ( ! YY_CURRENT_BUFFER ){\\", + " yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG); \\", + " YY_CURRENT_BUFFER_LVALUE = \\", + " yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG); \\", + " } \\", + " YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \\", + " }", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)", + "]])", + "", + "%% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here", + "", + "%if-c-only Standard (non-C++) definition", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "static yy_state_type yy_get_previous_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "static yy_state_type yy_try_NUL_trans M4_YY_PARAMS( yy_state_type current_state M4_YY_PROTO_LAST_ARG);", + "static int yy_get_next_buffer M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "static void yy_fatal_error M4_YY_PARAMS( yyconst char msg[] M4_YY_PROTO_LAST_ARG );", + "]])", + "", + "%endif", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Done after the current pattern has been matched and before the", + " * corresponding action - sets up yytext.", + " */", + "#define YY_DO_BEFORE_ACTION \\", + " YY_G(yytext_ptr) = yy_bp; \\", + "%% [2.0] code to fiddle yytext and yyleng for yymore() goes here \\", + " YY_G(yy_hold_char) = *yy_cp; \\", + " *yy_cp = '\\0'; \\", + "%% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \\", + " YY_G(yy_c_buf_p) = yy_cp;", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "%% [4.0] data tables for the DFA and the user's section 1 definitions go here", + "]])", + "", + "m4_ifdef( [[M4_YY_IN_HEADER]], [[#ifdef YY_HEADER_EXPORT_START_CONDITIONS]])", + "M4_YY_SC_DEFS", + "m4_ifdef( [[M4_YY_IN_HEADER]], [[#endif]])", + "", + "m4_ifdef( [[M4_YY_NO_UNISTD_H]],,", + "[[", + "#ifndef YY_NO_UNISTD_H", + "/* Special case for \"unistd.h\", since it is non-ANSI. We include it way", + " * down here because we want the user's section 1 to have been scanned first.", + " * The user has a chance to override it with an option.", + " */", + "%if-c-only", + "#include <unistd.h>", + "%endif", + "%if-c++-only", + "#include <unistd.h>", + "%endif", + "#endif", + "]])", + "", + "m4_ifdef( [[M4_EXTRA_TYPE_DEFS]],", + "[[", + "#define YY_EXTRA_TYPE M4_EXTRA_TYPE_DEFS", + "]],", + "[[", + "#ifndef YY_EXTRA_TYPE", + "#define YY_EXTRA_TYPE void *", + "#endif", + "]]", + ")", + "", + "%if-c-only Reentrant structure and macros (non-C++).", + "%if-reentrant", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Holds the entire state of the reentrant scanner. */", + "struct yyguts_t", + " {", + "", + " /* User-defined. Not touched by flex. */", + " YY_EXTRA_TYPE yyextra_r;", + "", + " /* The rest are the same as the globals declared in the non-reentrant scanner. */", + " FILE *yyin_r, *yyout_r;", + " size_t yy_buffer_stack_top; /**< index of top of stack. */", + " size_t yy_buffer_stack_max; /**< capacity of stack. */", + " YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */", + " char yy_hold_char;", + " int yy_n_chars;", + " int yyleng_r;", + " char *yy_c_buf_p;", + " int yy_init;", + " int yy_start;", + " int yy_did_buffer_switch_on_eof;", + " int yy_start_stack_ptr;", + " int yy_start_stack_depth;", + " int *yy_start_stack;", + " yy_state_type yy_last_accepting_state;", + " char* yy_last_accepting_cpos;", + "", + " int yylineno_r;", + " int yy_flex_debug_r;", + "", + "m4_ifdef( [[M4_YY_USES_REJECT]],", + "[[", + " yy_state_type *yy_state_buf;", + " yy_state_type *yy_state_ptr;", + " char *yy_full_match;", + " int yy_lp;", + "", + " /* These are only needed for trailing context rules,", + " * but there's no conditional variable for that yet. */", + " int yy_looking_for_trail_begin;", + " int yy_full_lp;", + " int *yy_full_state;", + "]])", + "", + "m4_ifdef( [[M4_YY_TEXT_IS_ARRAY]],", + "[[", + " char yytext_r[YYLMAX];", + " char *yytext_ptr;", + " int yy_more_offset;", + " int yy_prev_more_offset;", + "]],", + "[[", + " char *yytext_r;", + " int yy_more_flag;", + " int yy_more_len;", + "]])", + "", + "m4_ifdef( [[M4_YY_BISON_LVAL]],", + "[[", + " YYSTYPE * yylval_r;", + "]])", + "", + "m4_ifdef( [[<M4_YY_BISON_LLOC>]],", + "[[", + " YYLTYPE * yylloc_r;", + "]])", + "", + " }; /* end struct yyguts_t */", + "]])", + "", + "", + "%if-c-only", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "static int yy_init_globals M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "]])", + "%endif", + "", + "%if-reentrant", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + " m4_ifdef( [[M4_YY_BISON_LVAL]],", + " [[", + " /* This must go here because YYSTYPE and YYLTYPE are included", + " * from bison output in section 1.*/", + " # define yylval YY_G(yylval_r)", + " ]])", + "", + " m4_ifdef( [[<M4_YY_BISON_LLOC>]],", + " [[", + " # define yylloc YY_G(yylloc_r)", + " ]])", + "]])", + "", + "int yylex_init M4_YY_PARAMS(yyscan_t* scanner);", + "", + "int yylex_init_extra M4_YY_PARAMS( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);", + "", + "%endif", + "", + "%endif End reentrant structures and macros.", + "", + "/* Accessor methods to globals.", + " These are made visible to non-reentrant scanners for convenience. */", + "", + "m4_ifdef( [[M4_YY_NO_DESTROY]],,", + "[[", + "int yylex_destroy M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_GET_DEBUG]],,", + "[[", + "int yyget_debug M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_SET_DEBUG]],,", + "[[", + "void yyset_debug M4_YY_PARAMS( int debug_flag M4_YY_PROTO_LAST_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_GET_EXTRA]],,", + "[[", + "YY_EXTRA_TYPE yyget_extra M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_SET_EXTRA]],,", + "[[", + "void yyset_extra M4_YY_PARAMS( YY_EXTRA_TYPE user_defined M4_YY_PROTO_LAST_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_GET_IN]],,", + "[[", + "FILE *yyget_in M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_SET_IN]],,", + "[[", + "void yyset_in M4_YY_PARAMS( FILE * in_str M4_YY_PROTO_LAST_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_GET_OUT]],,", + "[[", + "FILE *yyget_out M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_SET_OUT]],,", + "[[", + "void yyset_out M4_YY_PARAMS( FILE * out_str M4_YY_PROTO_LAST_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_GET_LENG]],,", + "[[", + "int yyget_leng M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_GET_TEXT]],,", + "[[", + "char *yyget_text M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_GET_LINENO]],,", + "[[", + "int yyget_lineno M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_SET_LINENO]],,", + "[[", + "void yyset_lineno M4_YY_PARAMS( int line_number M4_YY_PROTO_LAST_ARG );", + "]])", + "", + "%if-bison-bridge", + "m4_ifdef( [[M4_YY_NO_GET_LVAL]],,", + "[[", + "YYSTYPE * yyget_lval M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "]])", + "", + "void yyset_lval M4_YY_PARAMS( YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG );", + "", + "m4_ifdef( [[<M4_YY_BISON_LLOC>]],", + "[[", + " m4_ifdef( [[M4_YY_NO_GET_LLOC]],,", + " [[", + " YYLTYPE *yyget_lloc M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + " ]])", + "", + " m4_ifdef( [[M4_YY_NO_SET_LLOC]],,", + " [[", + " void yyset_lloc M4_YY_PARAMS( YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG );", + " ]])", + "]])", + "%endif", + "", + "/* Macros after this point can all be overridden by user definitions in", + " * section 1.", + " */", + "", + "#ifndef YY_SKIP_YYWRAP", + "#ifdef __cplusplus", + "extern \"C\" int yywrap M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "#else", + "extern int yywrap M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "#endif", + "#endif", + "", + "%not-for-header", + " m4_ifdef( [[M4_YY_NO_UNPUT]],,", + " [[", + " static void yyunput M4_YY_PARAMS( int c, char *buf_ptr M4_YY_PROTO_LAST_ARG);", + " ]])", + "%ok-for-header", + "%endif", + "", + "#ifndef yytext_ptr", + "static void yy_flex_strncpy M4_YY_PARAMS( char *, yyconst char *, int M4_YY_PROTO_LAST_ARG);", + "#endif", + "", + "#ifdef YY_NEED_STRLEN", + "static int yy_flex_strlen M4_YY_PARAMS( yyconst char * M4_YY_PROTO_LAST_ARG);", + "#endif", + "", + "#ifndef YY_NO_INPUT", + "%if-c-only Standard (non-C++) definition", + "%not-for-header", + "#ifdef __cplusplus", + "static int yyinput M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "#else", + "static int input M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + "#endif", + "%ok-for-header", + "%endif", + "#endif", + "", + "", + "%if-c-only", + "%# TODO: This is messy.", + "m4_ifdef( [[M4_YY_STACK_USED]],", + "[[", + "", + "m4_ifdef( [[M4_YY_NOT_REENTRANT]],", + "[[", + " m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + " [[", + " static int yy_start_stack_ptr = 0;", + " static int yy_start_stack_depth = 0;", + " static int *yy_start_stack = NULL;", + " ]])", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + " m4_ifdef( [[M4_YY_NO_PUSH_STATE]],,", + " [[", + " static void yy_push_state M4_YY_PARAMS( int new_state M4_YY_PROTO_LAST_ARG);", + " ]])", + " m4_ifdef( [[M4_YY_NO_POP_STATE]],,", + " [[", + " static void yy_pop_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + " ]])", + " m4_ifdef( [[M4_YY_NO_TOP_STATE]],,", + " [[", + " static int yy_top_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );", + " ]])", + "]])", + "", + "]],", + "[[", + "m4_define( [[M4_YY_NO_PUSH_STATE]])", + "m4_define( [[M4_YY_NO_POP_STATE]])", + "m4_define( [[M4_YY_NO_TOP_STATE]])", + "]])", + "%endif", + "", + "/* Amount of stuff to slurp up with each read. */", + "#ifndef YY_READ_BUF_SIZE", + "#define YY_READ_BUF_SIZE 8192", + "#endif", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Copy whatever the last rule matched to the standard output. */", + "#ifndef ECHO", + "%if-c-only Standard (non-C++) definition", + "/* This used to be an fputs(), but since the string might contain NUL's,", + " * we now use fwrite().", + " */", + "#define ECHO fwrite( yytext, yyleng, 1, yyout )", + "%endif", + "%if-c++-only C++ definition", + "#define ECHO LexerOutput( yytext, yyleng )", + "%endif", + "#endif", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Gets input and stuffs it into \"buf\". number of characters read, or YY_NULL,", + " * is returned in \"result\".", + " */", + "#ifndef YY_INPUT", + "#define YY_INPUT(buf,result,max_size) \\", + "%% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \\", + "\\", + "%if-c++-only C++ definition \\", + " if ( (result = LexerInput( (char *) buf, max_size )) < 0 ) \\", + " YY_FATAL_ERROR( \"input in flex scanner failed\" );", + "%endif", + "", + "#endif", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* No semi-colon after return; correct usage is to write \"yyterminate();\" -", + " * we don't want an extra ';' after the \"return\" because that will cause", + " * some compilers to complain about unreachable statements.", + " */", + "#ifndef yyterminate", + "#define yyterminate() return YY_NULL", + "#endif", + "]])", + "", + "/* Number of entries by which start-condition stack grows. */", + "#ifndef YY_START_STACK_INCR", + "#define YY_START_STACK_INCR 25", + "#endif", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Report a fatal error. */", + "#ifndef YY_FATAL_ERROR", + "%if-c-only", + "#define YY_FATAL_ERROR(msg) yy_fatal_error( msg M4_YY_CALL_LAST_ARG)", + "%endif", + "%if-c++-only", + "#define YY_FATAL_ERROR(msg) LexerError( msg )", + "%endif", + "#endif", + "]])", + "", + "%if-tables-serialization structures and prototypes", + "#ifdef FLEX_SCANNER", + "/*", + "dnl tables_shared.h - tables serialization header", + "dnl", + "dnl Copyright (c) 1990 The Regents of the University of California.", + "dnl All rights reserved.", + "dnl", + "dnl This code is derived from software contributed to Berkeley by", + "dnl Vern Paxson.", + "dnl", + "dnl The United States Government has rights in this work pursuant", + "dnl to contract no. DE-AC03-76SF00098 between the United States", + "dnl Department of Energy and the University of California.", + "dnl", + "dnl This file is part of flex.", + "dnl", + "dnl Redistribution and use in source and binary forms, with or without", + "dnl modification, are permitted provided that the following conditions", + "dnl are met:", + "dnl", + "dnl 1. Redistributions of source code must retain the above copyright", + "dnl notice, this list of conditions and the following disclaimer.", + "dnl 2. Redistributions in binary form must reproduce the above copyright", + "dnl notice, this list of conditions and the following disclaimer in the", + "dnl documentation and/or other materials provided with the distribution.", + "dnl", + "dnl Neither the name of the University nor the names of its contributors", + "dnl may be used to endorse or promote products derived from this software", + "dnl without specific prior written permission.", + "dnl", + "dnl THIS SOFTWARE IS PROVIDED `AS IS' AND WITHOUT ANY EXPRESS OR", + "dnl IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED", + "dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR", + "dnl PURPOSE.", + "", + "dnl", + "dnl This file is meant to be included in both the skeleton and the actual", + "dnl flex code (hence the name \"_shared\").", + "*/", + "#ifndef yyskel_static", + "#define yyskel_static static", + "#endif", + "#else", + "#ifndef yyskel_static", + "#define yyskel_static", + "#endif", + "#endif", + "", + "/* Structures and prototypes for serializing flex tables. The", + " * binary format is documented in the manual.", + " *", + " * Design considerations:", + " *", + " * - The format allows many tables per file.", + " * - The tables can be streamed.", + " * - All data is stored in network byte order.", + " * - We do not hinder future unicode support.", + " * - We can lookup tables by name.", + " */", + "", + "/** Magic number for serialized format. */", + "#ifndef YYTBL_MAGIC", + "#define YYTBL_MAGIC 0xF13C57B1", + "#endif", + "", + "/** Calculate (0-7) = number bytes needed to pad n to next 64-bit boundary. */", + "#ifndef yypad64", + "#define yypad64(n) ((8-((n)%8))%8)", + "#endif", + "", + "", + "#ifndef YYTABLES_TYPES", + "#define YYTABLES_TYPES", + "/** Possible values for td_id field. Each one corresponds to a", + " * scanner table of the same name.", + " */", + "enum yytbl_id {", + " YYTD_ID_ACCEPT = 0x01, /**< 1-dim ints */", + " YYTD_ID_BASE = 0x02, /**< 1-dim ints */", + " YYTD_ID_CHK = 0x03, /**< 1-dim ints */", + " YYTD_ID_DEF = 0x04, /**< 1-dim ints */", + " YYTD_ID_EC = 0x05, /**< 1-dim ints */", + " YYTD_ID_META = 0x06, /**< 1-dim ints */", + " YYTD_ID_NUL_TRANS = 0x07, /**< 1-dim ints, maybe indices */", + " YYTD_ID_NXT = 0x08, /**< may be 2 dimensional ints */", + " YYTD_ID_RULE_CAN_MATCH_EOL = 0x09, /**< 1-dim ints */", + " YYTD_ID_START_STATE_LIST = 0x0A, /**< 1-dim indices into trans tbl */", + " YYTD_ID_TRANSITION = 0x0B, /**< structs */", + " YYTD_ID_ACCLIST = 0x0C /**< 1-dim ints */", + "};", + "", + "/** bit flags for t_flags field of struct yytbl_data */", + "enum yytbl_flags {", + " /* These first three are mutually exclusive */", + " YYTD_DATA8 = 0x01, /**< data is an array of type flex_int8_t */", + " YYTD_DATA16 = 0x02, /**< data is an array of type flex_int16_t */", + " YYTD_DATA32 = 0x04, /**< data is an array of type flex_int32_t */", + "", + " /* These two are mutually exclusive. */", + " YYTD_PTRANS = 0x08, /**< data is a list of indexes of entries", + " into the expanded yy_transition", + " array. See notes in manual. */", + " YYTD_STRUCT = 0x10 /**< data consists of yy_trans_info structs */", + "};", + "", + "/* The serialized tables header. */", + "struct yytbl_hdr {", + " flex_uint32_t th_magic; /**< Must be 0xF13C57B1 (comes from \"Flex Table\") */", + " flex_uint32_t th_hsize; /**< Size of this header in bytes. */", + " flex_uint32_t th_ssize; /**< Size of this dataset, in bytes, including header. */", + " flex_uint16_t th_flags; /**< Currently unused, must be 0 */", + " char *th_version; /**< Flex version string. NUL terminated. */", + " char *th_name; /**< The name of this table set. NUL terminated. */", + "};", + "", + "/** A single serialized table */", + "struct yytbl_data {", + " flex_uint16_t td_id; /**< enum yytbl_id table identifier */", + " flex_uint16_t td_flags; /**< how to interpret this data */", + " flex_uint32_t td_hilen; /**< num elements in highest dimension array */", + " flex_uint32_t td_lolen; /**< num elements in lowest dimension array */", + " void *td_data; /**< table data */", + "};", + "#endif", + "", + "/** Extract corresponding data size_t from td_flags */", + "#ifndef YYTDFLAGS2BYTES", + "#define YYTDFLAGS2BYTES(td_flags)\\", + " (((td_flags) & YYTD_DATA8)\\", + " ? sizeof(flex_int8_t)\\", + " :(((td_flags) & YYTD_DATA16)\\", + " ? sizeof(flex_int16_t)\\", + " :sizeof(flex_int32_t)))", + "#endif", + "", + "#ifdef FLEX_SCANNER", + "%not-for-header", + "#endif", + "yyskel_static flex_int32_t yytbl_calc_total_len (const struct yytbl_data *tbl);", + "#ifdef FLEX_SCANNER", + "%ok-for-header", + "#endif", + "", + "/* vim:set noexpandtab cindent tabstop=8 softtabstop=0 shiftwidth=8 textwidth=0: */", + "", + "", + "/* Load the DFA tables from the given stream. */", + "int yytables_fload M4_YY_PARAMS(FILE * fp M4_YY_PROTO_LAST_ARG);", + "", + "/* Unload the tables from memory. */", + "int yytables_destroy M4_YY_PARAMS(M4_YY_PROTO_ONLY_ARG);", + "%not-for-header", + "", + "/** Describes a mapping from a serialized table id to its deserialized state in", + " * this scanner. This is the bridge between our \"generic\" deserialization code", + " * and the specifics of this scanner. ", + " */", + "struct yytbl_dmap {", + " enum yytbl_id dm_id;/**< table identifier */", + " void **dm_arr; /**< address of pointer to store the deserialized table. */", + " size_t dm_sz; /**< local sizeof() each element in table. */", + "};", + "", + "/** A {0,0,0}-terminated list of structs, forming the map */", + "static struct yytbl_dmap yydmap[] =", + "{", + "%tables-yydmap generated elements", + " {0,0,0}", + "};", + "", + "/** A tables-reader object to maintain some state in the read. */", + "struct yytbl_reader {", + " FILE * fp; /**< input stream */", + " flex_uint32_t bread; /**< bytes read since beginning of current tableset */", + "};", + "", + "%endif", + "/* end tables serialization structures and prototypes */", + "", + "%ok-for-header", + "", + "/* Default declaration of generated scanner - a define so the user can", + " * easily add parameters.", + " */", + "#ifndef YY_DECL", + "#define YY_DECL_IS_OURS 1", + "%if-c-only Standard (non-C++) definition", + "", + "", + "m4_define( [[M4_YY_LEX_PROTO]], [[M4_YY_PARAMS(M4_YY_PROTO_ONLY_ARG)]])", + "m4_define( [[M4_YY_LEX_DECLARATION]], [[YYFARGS0(void)]])", + "", + "m4_ifdef( [[M4_YY_BISON_LVAL]],", + "[[", + " m4_dnl The bison pure parser is used. Redefine yylex to", + " m4_dnl accept the lval parameter.", + "", + " m4_define( [[M4_YY_LEX_PROTO]], [[\\]]", + " [[M4_YY_PARAMS(YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG)]])", + " m4_define( [[M4_YY_LEX_DECLARATION]], [[\\]]", + " [[YYFARGS1(YYSTYPE *,yylval_param)]])", + "]])", + "", + "m4_ifdef( [[<M4_YY_BISON_LLOC>]],", + "[[", + " m4_dnl Locations are used. yylex should also accept the ylloc parameter.", + "", + " m4_define( [[M4_YY_LEX_PROTO]], [[\\]]", + " [[M4_YY_PARAMS(YYSTYPE * yylval_param, YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG)]])", + " m4_define( [[M4_YY_LEX_DECLARATION]], [[\\]]", + " [[YYFARGS2(YYSTYPE *,yylval_param, YYLTYPE *,yylloc_param)]])", + "]])", + "", + "extern int yylex M4_YY_LEX_PROTO;", + "", + "#define YY_DECL int yylex M4_YY_LEX_DECLARATION", + "%endif", + "%if-c++-only C++ definition", + "#define YY_DECL int yyFlexLexer::yylex()", + "%endif", + "#endif /* !YY_DECL */", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Code executed at the beginning of each rule, after yytext and yyleng", + " * have been set up.", + " */", + "#ifndef YY_USER_ACTION", + "#define YY_USER_ACTION", + "#endif", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* Code executed at the end of each rule. */", + "#ifndef YY_BREAK", + "#define YY_BREAK break;", + "#endif", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "%% [6.0] YY_RULE_SETUP definition goes here", + "]])", + "", + "%not-for-header", + "/** The main scanner function which does all the work.", + " */", + "YY_DECL", + "{", + " register yy_state_type yy_current_state;", + " register char *yy_cp, *yy_bp;", + " register int yy_act;", + " M4_YY_DECL_GUTS_VAR();", + "", + "m4_ifdef( [[M4_YY_NOT_REENTRANT]],", + "[[", + " m4_ifdef( [[M4_YY_BISON_LVAL]],", + " [[", + " YYSTYPE * yylval;", + " ]])", + " m4_ifdef( [[<M4_YY_BISON_LLOC>]],", + " [[", + " YYLTYPE * yylloc;", + " ]])", + "]])", + "", + "%% [7.0] user's declarations go here", + "", + "m4_ifdef( [[M4_YY_BISON_LVAL]],", + "[[", + " yylval = yylval_param;", + "]])", + "", + "m4_ifdef( [[<M4_YY_BISON_LLOC>]],", + "[[", + " yylloc = yylloc_param;", + "]])", + "", + " if ( !YY_G(yy_init) )", + " {", + " YY_G(yy_init) = 1;", + "", + "#ifdef YY_USER_INIT", + " YY_USER_INIT;", + "#endif", + "", + "m4_ifdef( [[M4_YY_USES_REJECT]],", + "[[", + " /* Create the reject buffer large enough to save one state per allowed character. */", + " if ( ! YY_G(yy_state_buf) )", + " YY_G(yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE M4_YY_CALL_LAST_ARG);", + " if ( ! YY_G(yy_state_buf) )", + " YY_FATAL_ERROR( \"out of dynamic memory in yylex()\" );", + "]])", + "", + " if ( ! YY_G(yy_start) )", + " YY_G(yy_start) = 1; /* first start state */", + "", + " if ( ! yyin )", + "%if-c-only", + " yyin = stdin;", + "%endif", + "%if-c++-only", + " yyin = & std::cin;", + "%endif", + "", + " if ( ! yyout )", + "%if-c-only", + " yyout = stdout;", + "%endif", + "%if-c++-only", + " yyout = & std::cout;", + "%endif", + "", + " if ( ! YY_CURRENT_BUFFER ) {", + " yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG);", + " YY_CURRENT_BUFFER_LVALUE =", + " yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG);", + " }", + "", + " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );", + " }", + "", + " while ( 1 ) /* loops until end-of-file is reached */", + " {", + "%% [8.0] yymore()-related code goes here", + " yy_cp = YY_G(yy_c_buf_p);", + "", + " /* Support of yytext. */", + " *yy_cp = YY_G(yy_hold_char);", + "", + " /* yy_bp points to the position in yy_ch_buf of the start of", + " * the current run.", + " */", + " yy_bp = yy_cp;", + "", + "%% [9.0] code to set up and find next match goes here", + "", + "yy_find_action:", + "%% [10.0] code to find the action number goes here", + "", + " YY_DO_BEFORE_ACTION;", + "", + "%% [11.0] code for yylineno update goes here", + "", + "do_action: /* This label is used only to access EOF actions. */", + "", + "%% [12.0] debug code goes here", + "", + " switch ( yy_act )", + " { /* beginning of action switch */", + "%% [13.0] actions go here", + "", + " case YY_END_OF_BUFFER:", + " {", + " /* Amount of text matched not including the EOB char. */", + " int yy_amount_of_matched_text = (int) (yy_cp - YY_G(yytext_ptr)) - 1;", + "", + " /* Undo the effects of YY_DO_BEFORE_ACTION. */", + " *yy_cp = YY_G(yy_hold_char);", + " YY_RESTORE_YY_MORE_OFFSET", + "", + " if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )", + " {", + " /* We're scanning a new file or input source. It's", + " * possible that this happened because the user", + " * just pointed yyin at a new source and called", + " * yylex(). If so, then we have to assure", + " * consistency between YY_CURRENT_BUFFER and our", + " * globals. Here is the right place to do so, because", + " * this is the first action (other than possibly a", + " * back-up) that will match for the new input source.", + " */", + " YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;", + " YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;", + " YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;", + " }", + "", + " /* Note that here we test for yy_c_buf_p \"<=\" to the position", + " * of the first EOB in the buffer, since yy_c_buf_p will", + " * already have been incremented past the NUL character", + " * (since all states make transitions on EOB to the", + " * end-of-buffer state). Contrast this with the test", + " * in input().", + " */", + " if ( YY_G(yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)] )", + " { /* This was really a NUL. */", + " yy_state_type yy_next_state;", + "", + " YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + yy_amount_of_matched_text;", + "", + " yy_current_state = yy_get_previous_state( M4_YY_CALL_ONLY_ARG );", + "", + " /* Okay, we're now positioned to make the NUL", + " * transition. We couldn't have", + " * yy_get_previous_state() go ahead and do it", + " * for us because it doesn't know how to deal", + " * with the possibility of jamming (and we don't", + " * want to build jamming into it because then it", + " * will run more slowly).", + " */", + "", + " yy_next_state = yy_try_NUL_trans( yy_current_state M4_YY_CALL_LAST_ARG);", + "", + " yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ;", + "", + " if ( yy_next_state )", + " {", + " /* Consume the NUL. */", + " yy_cp = ++YY_G(yy_c_buf_p);", + " yy_current_state = yy_next_state;", + " goto yy_match;", + " }", + "", + " else", + " {", + "%% [14.0] code to do back-up for compressed tables and set up yy_cp goes here", + " goto yy_find_action;", + " }", + " }", + "", + " else switch ( yy_get_next_buffer( M4_YY_CALL_ONLY_ARG ) )", + " {", + " case EOB_ACT_END_OF_FILE:", + " {", + " YY_G(yy_did_buffer_switch_on_eof) = 0;", + "", + " if ( yywrap( M4_YY_CALL_ONLY_ARG ) )", + " {", + " /* Note: because we've taken care in", + " * yy_get_next_buffer() to have set up", + " * yytext, we can now set up", + " * yy_c_buf_p so that if some total", + " * hoser (like flex itself) wants to", + " * call the scanner after we return the", + " * YY_NULL, it'll still work - another", + " * YY_NULL will get returned.", + " */", + " YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + YY_MORE_ADJ;", + "", + " yy_act = YY_STATE_EOF(YY_START);", + " goto do_action;", + " }", + "", + " else", + " {", + " if ( ! YY_G(yy_did_buffer_switch_on_eof) )", + " YY_NEW_FILE;", + " }", + " break;", + " }", + "", + " case EOB_ACT_CONTINUE_SCAN:", + " YY_G(yy_c_buf_p) =", + " YY_G(yytext_ptr) + yy_amount_of_matched_text;", + "", + " yy_current_state = yy_get_previous_state( M4_YY_CALL_ONLY_ARG );", + "", + " yy_cp = YY_G(yy_c_buf_p);", + " yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ;", + " goto yy_match;", + "", + " case EOB_ACT_LAST_MATCH:", + " YY_G(yy_c_buf_p) =", + " &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)];", + "", + " yy_current_state = yy_get_previous_state( M4_YY_CALL_ONLY_ARG );", + "", + " yy_cp = YY_G(yy_c_buf_p);", + " yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ;", + " goto yy_find_action;", + " }", + " break;", + " }", + "", + " default:", + " YY_FATAL_ERROR(", + " \"fatal flex scanner internal error--no action found\" );", + " } /* end of action switch */", + " } /* end of scanning one token */", + "} /* end of yylex */", + "%ok-for-header", + "", + "%if-c++-only", + "%not-for-header", + "/* The contents of this function are C++ specific, so the YY_G macro is not used.", + " */", + "yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout )", + "{", + " yyin = arg_yyin;", + " yyout = arg_yyout;", + " yy_c_buf_p = 0;", + " yy_init = 0;", + " yy_start = 0;", + " yy_flex_debug = 0;", + " yylineno = 1; // this will only get updated if %option yylineno", + "", + " yy_did_buffer_switch_on_eof = 0;", + "", + " yy_looking_for_trail_begin = 0;", + " yy_more_flag = 0;", + " yy_more_len = 0;", + " yy_more_offset = yy_prev_more_offset = 0;", + "", + " yy_start_stack_ptr = yy_start_stack_depth = 0;", + " yy_start_stack = NULL;", + "", + " yy_buffer_stack = 0;", + " yy_buffer_stack_top = 0;", + " yy_buffer_stack_max = 0;", + "", + "", + "m4_ifdef( [[M4_YY_USES_REJECT]],", + "[[", + " yy_state_buf = new yy_state_type[YY_STATE_BUF_SIZE];", + "]],", + "[[", + " yy_state_buf = 0;", + "]])", + "}", + "", + "/* The contents of this function are C++ specific, so the YY_G macro is not used.", + " */", + "yyFlexLexer::~yyFlexLexer()", + "{", + " delete [] yy_state_buf;", + " yyfree( yy_start_stack M4_YY_CALL_LAST_ARG );", + " yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);", + " yyfree( yy_buffer_stack M4_YY_CALL_LAST_ARG );", + "}", + "", + "/* The contents of this function are C++ specific, so the YY_G macro is not used.", + " */", + "void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out )", + "{", + " if ( new_in )", + " {", + " yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);", + " yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE M4_YY_CALL_LAST_ARG) M4_YY_CALL_LAST_ARG);", + " }", + "", + " if ( new_out )", + " yyout = new_out;", + "}", + "", + "#ifdef YY_INTERACTIVE", + "int yyFlexLexer::LexerInput( char* buf, int /* max_size */ )", + "#else", + "int yyFlexLexer::LexerInput( char* buf, int max_size )", + "#endif", + "{", + " if ( yyin->eof() || yyin->fail() )", + " return 0;", + "", + "#ifdef YY_INTERACTIVE", + " yyin->get( buf[0] );", + "", + " if ( yyin->eof() )", + " return 0;", + "", + " if ( yyin->bad() )", + " return -1;", + "", + " return 1;", + "", + "#else", + " (void) yyin->read( buf, max_size );", + "", + " if ( yyin->bad() )", + " return -1;", + " else", + " return yyin->gcount();", + "#endif", + "}", + "", + "void yyFlexLexer::LexerOutput( const char* buf, int size )", + "{", + " (void) yyout->write( buf, size );", + "}", + "%ok-for-header", + "%endif", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/* yy_get_next_buffer - try to read in a new buffer", + " *", + " * Returns a code representing an action:", + " * EOB_ACT_LAST_MATCH -", + " * EOB_ACT_CONTINUE_SCAN - continue scanning from current position", + " * EOB_ACT_END_OF_FILE - end of file", + " */", + "%if-c-only", + "static int yy_get_next_buffer YYFARGS0(void)", + "%endif", + "%if-c++-only", + "int yyFlexLexer::yy_get_next_buffer()", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + " register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;", + " register char *source = YY_G(yytext_ptr);", + " register int number_to_move, i;", + " int ret_val;", + "", + " if ( YY_G(yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars) + 1] )", + " YY_FATAL_ERROR(", + " \"fatal flex scanner internal error--end of buffer missed\" );", + "", + " if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )", + " { /* Don't try to fill the buffer, so this is an EOF. */", + " if ( YY_G(yy_c_buf_p) - YY_G(yytext_ptr) - YY_MORE_ADJ == 1 )", + " {", + " /* We matched a single character, the EOB, so", + " * treat this as a final EOF.", + " */", + " return EOB_ACT_END_OF_FILE;", + " }", + "", + " else", + " {", + " /* We matched some text prior to the EOB, first", + " * process it.", + " */", + " return EOB_ACT_LAST_MATCH;", + " }", + " }", + "", + " /* Try to read more data. */", + "", + " /* First move last chars to start of buffer. */", + " number_to_move = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr)) - 1;", + "", + " for ( i = 0; i < number_to_move; ++i )", + " *(dest++) = *(source++);", + "", + " if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )", + " /* don't do the read, it's not guaranteed to return an EOF,", + " * just force an EOF", + " */", + " YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars) = 0;", + "", + " else", + " {", + " int num_to_read =", + " YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;", + "", + " while ( num_to_read <= 0 )", + " { /* Not enough room in the buffer - grow it. */", + "m4_ifdef( [[M4_YY_USES_REJECT]],", + "[[", + " YY_FATAL_ERROR(", + "\"input buffer overflow, can't enlarge buffer because scanner uses REJECT\" );", + "]],", + "[[", + " /* just a shorter name for the current buffer */", + " YY_BUFFER_STATE b = YY_CURRENT_BUFFER;", + "", + " int yy_c_buf_p_offset =", + " (int) (YY_G(yy_c_buf_p) - b->yy_ch_buf);", + "", + " if ( b->yy_is_our_buffer )", + " {", + " int new_size = b->yy_buf_size * 2;", + "", + " if ( new_size <= 0 )", + " b->yy_buf_size += b->yy_buf_size / 8;", + " else", + " b->yy_buf_size *= 2;", + "", + " b->yy_ch_buf = (char *)", + " /* Include room in for 2 EOB chars. */", + " yyrealloc( (void *) b->yy_ch_buf,", + " b->yy_buf_size + 2 M4_YY_CALL_LAST_ARG );", + " }", + " else", + " /* Can't grow it, we don't own it. */", + " b->yy_ch_buf = 0;", + "", + " if ( ! b->yy_ch_buf )", + " YY_FATAL_ERROR(", + " \"fatal error - scanner input buffer overflow\" );", + "", + " YY_G(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];", + "", + " num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -", + " number_to_move - 1;", + "]])", + " }", + "", + " if ( num_to_read > YY_READ_BUF_SIZE )", + " num_to_read = YY_READ_BUF_SIZE;", + "", + " /* Read in more data. */", + " YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),", + " YY_G(yy_n_chars), (size_t) num_to_read );", + "", + " YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars);", + " }", + "", + " if ( YY_G(yy_n_chars) == 0 )", + " {", + " if ( number_to_move == YY_MORE_ADJ )", + " {", + " ret_val = EOB_ACT_END_OF_FILE;", + " yyrestart( yyin M4_YY_CALL_LAST_ARG);", + " }", + "", + " else", + " {", + " ret_val = EOB_ACT_LAST_MATCH;", + " YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =", + " YY_BUFFER_EOF_PENDING;", + " }", + " }", + "", + " else", + " ret_val = EOB_ACT_CONTINUE_SCAN;", + "", + " if ((yy_size_t) (YY_G(yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {", + " /* Extend the array by 50%, plus the number we really need. */", + " yy_size_t new_size = YY_G(yy_n_chars) + number_to_move + (YY_G(yy_n_chars) >> 1);", + " YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(", + " (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, new_size M4_YY_CALL_LAST_ARG );", + " if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )", + " YY_FATAL_ERROR( \"out of dynamic memory in yy_get_next_buffer()\" );", + " }", + "", + " YY_G(yy_n_chars) += number_to_move;", + " YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;", + " YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;", + "", + " YY_G(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];", + "", + " return ret_val;", + "}", + "]])", + "", + "/* yy_get_previous_state - get the state just before the EOB char was reached */", + "", + "%if-c-only", + "%not-for-header", + " static yy_state_type yy_get_previous_state YYFARGS0(void)", + "%endif", + "%if-c++-only", + " yy_state_type yyFlexLexer::yy_get_previous_state()", + "%endif", + "{", + " register yy_state_type yy_current_state;", + " register char *yy_cp;", + " M4_YY_DECL_GUTS_VAR();", + "", + "%% [15.0] code to get the start state into yy_current_state goes here", + "", + " for ( yy_cp = YY_G(yytext_ptr) + YY_MORE_ADJ; yy_cp < YY_G(yy_c_buf_p); ++yy_cp )", + " {", + "%% [16.0] code to find the next state goes here", + " }", + "", + " return yy_current_state;", + "}", + "", + "", + "/* yy_try_NUL_trans - try to make a transition on the NUL character", + " *", + " * synopsis", + " * next_state = yy_try_NUL_trans( current_state );", + " */", + "%if-c-only", + " static yy_state_type yy_try_NUL_trans YYFARGS1( yy_state_type, yy_current_state)", + "%endif", + "%if-c++-only", + " yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state )", + "%endif", + "{", + " register int yy_is_jam;", + " M4_YY_DECL_GUTS_VAR(); /* This var may be unused depending upon options. */", + "%% [17.0] code to find the next state, and perhaps do backing up, goes here", + "", + " return yy_is_jam ? 0 : yy_current_state;", + "}", + "", + "", + "%if-c-only", + "m4_ifdef( [[M4_YY_NO_UNPUT]],,", + "[[", + " static void yyunput YYFARGS2( int,c, register char *,yy_bp)", + "%endif", + "%if-c++-only", + " void yyFlexLexer::yyunput( int c, register char* yy_bp)", + "%endif", + "{", + " register char *yy_cp;", + " M4_YY_DECL_GUTS_VAR();", + "", + " yy_cp = YY_G(yy_c_buf_p);", + "", + " /* undo effects of setting up yytext */", + " *yy_cp = YY_G(yy_hold_char);", + "", + " if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )", + " { /* need to shift things up to make room */", + " /* +2 for EOB chars. */", + " register int number_to_move = YY_G(yy_n_chars) + 2;", + " register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[", + " YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];", + " register char *source =", + " &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];", + "", + " while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )", + " *--dest = *--source;", + "", + " yy_cp += (int) (dest - source);", + " yy_bp += (int) (dest - source);", + " YY_CURRENT_BUFFER_LVALUE->yy_n_chars =", + " YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;", + "", + " if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )", + " YY_FATAL_ERROR( \"flex scanner push-back overflow\" );", + " }", + "", + " *--yy_cp = (char) c;", + "", + "%% [18.0] update yylineno here", + "m4_ifdef( [[M4_YY_USE_LINENO]],", + "[[", + " if ( c == '\\n' ){", + " --yylineno;", + " }", + "]])", + "", + " YY_G(yytext_ptr) = yy_bp;", + " YY_G(yy_hold_char) = *yy_cp;", + " YY_G(yy_c_buf_p) = yy_cp;", + "}", + "%if-c-only", + "]])", + "%endif", + "", + "%if-c-only", + "#ifndef YY_NO_INPUT", + "#ifdef __cplusplus", + " static int yyinput YYFARGS0(void)", + "#else", + " static int input YYFARGS0(void)", + "#endif", + "", + "%endif", + "%if-c++-only", + " int yyFlexLexer::yyinput()", + "%endif", + "{", + " int c;", + " M4_YY_DECL_GUTS_VAR();", + "", + " *YY_G(yy_c_buf_p) = YY_G(yy_hold_char);", + "", + " if ( *YY_G(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )", + " {", + " /* yy_c_buf_p now points to the character we want to return.", + " * If this occurs *before* the EOB characters, then it's a", + " * valid NUL; if not, then we've hit the end of the buffer.", + " */", + " if ( YY_G(yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)] )", + " /* This was really a NUL. */", + " *YY_G(yy_c_buf_p) = '\\0';", + "", + " else", + " { /* need more input */", + " int offset = YY_G(yy_c_buf_p) - YY_G(yytext_ptr);", + " ++YY_G(yy_c_buf_p);", + "", + " switch ( yy_get_next_buffer( M4_YY_CALL_ONLY_ARG ) )", + " {", + " case EOB_ACT_LAST_MATCH:", + " /* This happens because yy_g_n_b()", + " * sees that we've accumulated a", + " * token and flags that we need to", + " * try matching the token before", + " * proceeding. But for input(),", + " * there's no matching to consider.", + " * So convert the EOB_ACT_LAST_MATCH", + " * to EOB_ACT_END_OF_FILE.", + " */", + "", + " /* Reset buffer status. */", + " yyrestart( yyin M4_YY_CALL_LAST_ARG);", + "", + " /*FALLTHROUGH*/", + "", + " case EOB_ACT_END_OF_FILE:", + " {", + " if ( yywrap( M4_YY_CALL_ONLY_ARG ) )", + " return EOF;", + "", + " if ( ! YY_G(yy_did_buffer_switch_on_eof) )", + " YY_NEW_FILE;", + "#ifdef __cplusplus", + " return yyinput(M4_YY_CALL_ONLY_ARG);", + "#else", + " return input(M4_YY_CALL_ONLY_ARG);", + "#endif", + " }", + "", + " case EOB_ACT_CONTINUE_SCAN:", + " YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + offset;", + " break;", + " }", + " }", + " }", + "", + " c = *(unsigned char *) YY_G(yy_c_buf_p); /* cast for 8-bit char's */", + " *YY_G(yy_c_buf_p) = '\\0'; /* preserve yytext */", + " YY_G(yy_hold_char) = *++YY_G(yy_c_buf_p);", + "", + "%% [19.0] update BOL and yylineno", + "", + " return c;", + "}", + "%if-c-only", + "#endif /* ifndef YY_NO_INPUT */", + "%endif", + "", + "/** Immediately switch to a different input stream.", + " * @param input_file A readable stream.", + " * M4_YY_DOC_PARAM", + " * @note This function does not reset the start condition to @c INITIAL .", + " */", + "%if-c-only", + " void yyrestart YYFARGS1( FILE *,input_file)", + "%endif", + "%if-c++-only", + " void yyFlexLexer::yyrestart( std::istream* input_file )", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + "", + " if ( ! YY_CURRENT_BUFFER ){", + " yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG);", + " YY_CURRENT_BUFFER_LVALUE =", + " yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG);", + " }", + "", + " yy_init_buffer( YY_CURRENT_BUFFER, input_file M4_YY_CALL_LAST_ARG);", + " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );", + "}", + "", + "/** Switch to a different input buffer.", + " * @param new_buffer The new input buffer.", + " * M4_YY_DOC_PARAM", + " */", + "%if-c-only", + " void yy_switch_to_buffer YYFARGS1( YY_BUFFER_STATE ,new_buffer)", + "%endif", + "%if-c++-only", + " void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + "", + " /* TODO. We should be able to replace this entire function body", + " * with", + " * yypop_buffer_state();", + " * yypush_buffer_state(new_buffer);", + " */", + " yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG);", + " if ( YY_CURRENT_BUFFER == new_buffer )", + " return;", + "", + " if ( YY_CURRENT_BUFFER )", + " {", + " /* Flush out information for old buffer. */", + " *YY_G(yy_c_buf_p) = YY_G(yy_hold_char);", + " YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = YY_G(yy_c_buf_p);", + " YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars);", + " }", + "", + " YY_CURRENT_BUFFER_LVALUE = new_buffer;", + " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );", + "", + " /* We don't actually know whether we did this switch during", + " * EOF (yywrap()) processing, but the only time this flag", + " * is looked at is after yywrap() is called, so it's safe", + " * to go ahead and always set it.", + " */", + " YY_G(yy_did_buffer_switch_on_eof) = 1;", + "}", + "", + "", + "%if-c-only", + "static void yy_load_buffer_state YYFARGS0(void)", + "%endif", + "%if-c++-only", + " void yyFlexLexer::yy_load_buffer_state()", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + " YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;", + " YY_G(yytext_ptr) = YY_G(yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;", + " yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;", + " YY_G(yy_hold_char) = *YY_G(yy_c_buf_p);", + "}", + "", + "/** Allocate and initialize an input buffer state.", + " * @param file A readable stream.", + " * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.", + " * M4_YY_DOC_PARAM", + " * @return the allocated buffer state.", + " */", + "%if-c-only", + " YY_BUFFER_STATE yy_create_buffer YYFARGS2( FILE *,file, int ,size)", + "%endif", + "%if-c++-only", + " YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size )", + "%endif", + "{", + " YY_BUFFER_STATE b;", + " m4_dnl M4_YY_DECL_GUTS_VAR();", + "", + " b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) M4_YY_CALL_LAST_ARG );", + " if ( ! b )", + " YY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );", + "", + " b->yy_buf_size = size;", + "", + " /* yy_ch_buf has to be 2 characters longer than the size given because", + " * we need to put in 2 end-of-buffer characters.", + " */", + " b->yy_ch_buf = (char *) yyalloc( b->yy_buf_size + 2 M4_YY_CALL_LAST_ARG );", + " if ( ! b->yy_ch_buf )", + " YY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );", + "", + " b->yy_is_our_buffer = 1;", + "", + " yy_init_buffer( b, file M4_YY_CALL_LAST_ARG);", + "", + " return b;", + "}", + "", + "/** Destroy the buffer.", + " * @param b a buffer created with yy_create_buffer()", + " * M4_YY_DOC_PARAM", + " */", + "%if-c-only", + " void yy_delete_buffer YYFARGS1( YY_BUFFER_STATE ,b)", + "%endif", + "%if-c++-only", + " void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b )", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + "", + " if ( ! b )", + " return;", + "", + " if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */", + " YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;", + "", + " if ( b->yy_is_our_buffer )", + " yyfree( (void *) b->yy_ch_buf M4_YY_CALL_LAST_ARG );", + "", + " yyfree( (void *) b M4_YY_CALL_LAST_ARG );", + "}", + "", + "", + "%if-c-only", + "m4_ifdef( [[M4_YY_ALWAYS_INTERACTIVE]],,", + "[[", + " m4_ifdef( [[M4_YY_NEVER_INTERACTIVE]],,", + " [[", + "#ifndef __cplusplus", + "extern int isatty M4_YY_PARAMS( int );", + "#endif /* __cplusplus */", + " ]])", + "]])", + "%endif", + "", + "%if-c++-only", + "m4_ifdef( [[M4_YY_NEVER_INTERACTIVE]],,", + "[[", + "extern \"C\" int isatty M4_YY_PARAMS( int );", + "]])", + "%endif", + "", + "/* Initializes or reinitializes a buffer.", + " * This function is sometimes called more than once on the same buffer,", + " * such as during a yyrestart() or at EOF.", + " */", + "%if-c-only", + " static void yy_init_buffer YYFARGS2( YY_BUFFER_STATE ,b, FILE *,file)", + "%endif", + "%if-c++-only", + " void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file )", + "%endif", + "", + "{", + " int oerrno = errno;", + " M4_YY_DECL_GUTS_VAR();", + "", + " yy_flush_buffer( b M4_YY_CALL_LAST_ARG);", + "", + " b->yy_input_file = file;", + " b->yy_fill_buffer = 1;", + "", + " /* If b is the current buffer, then yy_init_buffer was _probably_", + " * called from yyrestart() or through yy_get_next_buffer.", + " * In that case, we don't want to reset the lineno or column.", + " */", + " if (b != YY_CURRENT_BUFFER){", + " b->yy_bs_lineno = 1;", + " b->yy_bs_column = 0;", + " }", + "", + "%if-c-only", + "m4_ifdef( [[M4_YY_ALWAYS_INTERACTIVE]],", + "[[", + " b->yy_is_interactive = 1;", + "]],", + "[[", + " m4_ifdef( [[M4_YY_NEVER_INTERACTIVE]],", + " [[", + " b->yy_is_interactive = 0;", + " ]],", + " [[", + " b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;", + " ]])", + "]])", + "%endif", + "%if-c++-only", + " b->yy_is_interactive = 0;", + "%endif", + " errno = oerrno;", + "}", + "", + "/** Discard all buffered characters. On the next scan, YY_INPUT will be called.", + " * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.", + " * M4_YY_DOC_PARAM", + " */", + "%if-c-only", + " void yy_flush_buffer YYFARGS1( YY_BUFFER_STATE ,b)", + "%endif", + "%if-c++-only", + " void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b )", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + " if ( ! b )", + " return;", + "", + " b->yy_n_chars = 0;", + "", + " /* We always need two end-of-buffer characters. The first causes", + " * a transition to the end-of-buffer state. The second causes", + " * a jam in that state.", + " */", + " b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;", + " b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;", + "", + " b->yy_buf_pos = &b->yy_ch_buf[0];", + "", + " b->yy_at_bol = 1;", + " b->yy_buffer_status = YY_BUFFER_NEW;", + "", + " if ( b == YY_CURRENT_BUFFER )", + " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );", + "}", + "", + "%if-c-or-c++", + "/** Pushes the new state onto the stack. The new state becomes", + " * the current state. This function will allocate the stack", + " * if necessary.", + " * @param new_buffer The new state.", + " * M4_YY_DOC_PARAM", + " */", + "%if-c-only", + "void yypush_buffer_state YYFARGS1(YY_BUFFER_STATE,new_buffer)", + "%endif", + "%if-c++-only", + "void yyFlexLexer::yypush_buffer_state (YY_BUFFER_STATE new_buffer)", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + " if (new_buffer == NULL)", + " return;", + "", + " yyensure_buffer_stack(M4_YY_CALL_ONLY_ARG);", + "", + " /* This block is copied from yy_switch_to_buffer. */", + " if ( YY_CURRENT_BUFFER )", + " {", + " /* Flush out information for old buffer. */", + " *YY_G(yy_c_buf_p) = YY_G(yy_hold_char);", + " YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = YY_G(yy_c_buf_p);", + " YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars);", + " }", + "", + " /* Only push if top exists. Otherwise, replace top. */", + " if (YY_CURRENT_BUFFER)", + " YY_G(yy_buffer_stack_top)++;", + " YY_CURRENT_BUFFER_LVALUE = new_buffer;", + "", + " /* copied from yy_switch_to_buffer. */", + " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );", + " YY_G(yy_did_buffer_switch_on_eof) = 1;", + "}", + "%endif", + "", + "", + "%if-c-or-c++", + "/** Removes and deletes the top of the stack, if present.", + " * The next element becomes the new top.", + " * M4_YY_DOC_PARAM", + " */", + "%if-c-only", + "void yypop_buffer_state YYFARGS0(void)", + "%endif", + "%if-c++-only", + "void yyFlexLexer::yypop_buffer_state (void)", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + " if (!YY_CURRENT_BUFFER)", + " return;", + "", + " yy_delete_buffer(YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);", + " YY_CURRENT_BUFFER_LVALUE = NULL;", + " if (YY_G(yy_buffer_stack_top) > 0)", + " --YY_G(yy_buffer_stack_top);", + "", + " if (YY_CURRENT_BUFFER) {", + " yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );", + " YY_G(yy_did_buffer_switch_on_eof) = 1;", + " }", + "}", + "%endif", + "", + "", + "%if-c-or-c++", + "/* Allocates the stack if it does not exist.", + " * Guarantees space for at least one push.", + " */", + "%if-c-only", + "static void yyensure_buffer_stack YYFARGS0(void)", + "%endif", + "%if-c++-only", + "void yyFlexLexer::yyensure_buffer_stack(void)", + "%endif", + "{", + " int num_to_alloc;", + " M4_YY_DECL_GUTS_VAR();", + "", + " if (!YY_G(yy_buffer_stack)) {", + "", + " /* First allocation is just for 2 elements, since we don't know if this", + " * scanner will even need a stack. We use 2 instead of 1 to avoid an", + " * immediate realloc on the next call.", + " */", + " num_to_alloc = 1;", + " YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc", + " (num_to_alloc * sizeof(struct yy_buffer_state*)", + " M4_YY_CALL_LAST_ARG);", + " if ( ! YY_G(yy_buffer_stack) )", + " YY_FATAL_ERROR( \"out of dynamic memory in yyensure_buffer_stack()\" );", + " ", + " ", + " memset(YY_G(yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));", + " ", + " YY_G(yy_buffer_stack_max) = num_to_alloc;", + " YY_G(yy_buffer_stack_top) = 0;", + " return;", + " }", + "", + " if (YY_G(yy_buffer_stack_top) >= (YY_G(yy_buffer_stack_max)) - 1){", + "", + " /* Increase the buffer to prepare for a possible push. */", + " int grow_size = 8 /* arbitrary grow size */;", + "", + " num_to_alloc = YY_G(yy_buffer_stack_max) + grow_size;", + " YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc", + " (YY_G(yy_buffer_stack),", + " num_to_alloc * sizeof(struct yy_buffer_state*)", + " M4_YY_CALL_LAST_ARG);", + " if ( ! YY_G(yy_buffer_stack) )", + " YY_FATAL_ERROR( \"out of dynamic memory in yyensure_buffer_stack()\" );", + "", + " /* zero only the new slots.*/", + " memset(YY_G(yy_buffer_stack) + YY_G(yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));", + " YY_G(yy_buffer_stack_max) = num_to_alloc;", + " }", + "}", + "%endif", + "", + "", + "", + "", + "m4_ifdef( [[M4_YY_NO_SCAN_BUFFER]],,", + "[[", + "%if-c-only", + "/** Setup the input buffer state to scan directly from a user-specified character buffer.", + " * @param base the character buffer", + " * @param size the size in bytes of the character buffer", + " * M4_YY_DOC_PARAM", + " * @return the newly allocated buffer state object. ", + " */", + "YY_BUFFER_STATE yy_scan_buffer YYFARGS2( char *,base, yy_size_t ,size)", + "{", + " YY_BUFFER_STATE b;", + " m4_dnl M4_YY_DECL_GUTS_VAR();", + "", + " if ( size < 2 ||", + " base[size-2] != YY_END_OF_BUFFER_CHAR ||", + " base[size-1] != YY_END_OF_BUFFER_CHAR )", + " /* They forgot to leave room for the EOB's. */", + " return 0;", + "", + " b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) M4_YY_CALL_LAST_ARG );", + " if ( ! b )", + " YY_FATAL_ERROR( \"out of dynamic memory in yy_scan_buffer()\" );", + "", + " b->yy_buf_size = size - 2; /* \"- 2\" to take care of EOB's */", + " b->yy_buf_pos = b->yy_ch_buf = base;", + " b->yy_is_our_buffer = 0;", + " b->yy_input_file = 0;", + " b->yy_n_chars = b->yy_buf_size;", + " b->yy_is_interactive = 0;", + " b->yy_at_bol = 1;", + " b->yy_fill_buffer = 0;", + " b->yy_buffer_status = YY_BUFFER_NEW;", + "", + " yy_switch_to_buffer( b M4_YY_CALL_LAST_ARG );", + "", + " return b;", + "}", + "%endif", + "]])", + "", + "", + "m4_ifdef( [[M4_YY_NO_SCAN_STRING]],,", + "[[", + "%if-c-only", + "/** Setup the input buffer state to scan a string. The next call to yylex() will", + " * scan from a @e copy of @a str.", + " * @param yystr a NUL-terminated string to scan", + " * M4_YY_DOC_PARAM", + " * @return the newly allocated buffer state object.", + " * @note If you want to scan bytes that may contain NUL values, then use", + " * yy_scan_bytes() instead.", + " */", + "YY_BUFFER_STATE yy_scan_string YYFARGS1( yyconst char *, yystr)", + "{", + " m4_dnl M4_YY_DECL_GUTS_VAR();", + "", + " return yy_scan_bytes( yystr, strlen(yystr) M4_YY_CALL_LAST_ARG);", + "}", + "%endif", + "]])", + "", + "", + "m4_ifdef( [[M4_YY_NO_SCAN_BYTES]],,", + "[[", + "%if-c-only", + "/** Setup the input buffer state to scan the given bytes. The next call to yylex() will", + " * scan from a @e copy of @a bytes.", + " * @param bytes the byte buffer to scan", + " * @param len the number of bytes in the buffer pointed to by @a bytes.", + " * M4_YY_DOC_PARAM", + " * @return the newly allocated buffer state object.", + " */", + "YY_BUFFER_STATE yy_scan_bytes YYFARGS2( yyconst char *,yybytes, int ,_yybytes_len)", + "{", + " YY_BUFFER_STATE b;", + " char *buf;", + " yy_size_t n;", + " int i;", + " m4_dnl M4_YY_DECL_GUTS_VAR();", + "", + " /* Get memory for full buffer, including space for trailing EOB's. */", + " n = _yybytes_len + 2;", + " buf = (char *) yyalloc( n M4_YY_CALL_LAST_ARG );", + " if ( ! buf )", + " YY_FATAL_ERROR( \"out of dynamic memory in yy_scan_bytes()\" );", + "", + " for ( i = 0; i < _yybytes_len; ++i )", + " buf[i] = yybytes[i];", + "", + " buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;", + "", + " b = yy_scan_buffer( buf, n M4_YY_CALL_LAST_ARG);", + " if ( ! b )", + " YY_FATAL_ERROR( \"bad buffer in yy_scan_bytes()\" );", + "", + " /* It's okay to grow etc. this buffer, and we should throw it", + " * away when we're done.", + " */", + " b->yy_is_our_buffer = 1;", + "", + " return b;", + "}", + "%endif", + "]])", + "", + "", + "m4_ifdef( [[M4_YY_NO_PUSH_STATE]],,", + "[[", + "%if-c-only", + " static void yy_push_state YYFARGS1( int ,new_state)", + "%endif", + "%if-c++-only", + " void yyFlexLexer::yy_push_state( int new_state )", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + " if ( YY_G(yy_start_stack_ptr) >= YY_G(yy_start_stack_depth) )", + " {", + " yy_size_t new_size;", + "", + " YY_G(yy_start_stack_depth) += YY_START_STACK_INCR;", + " new_size = YY_G(yy_start_stack_depth) * sizeof( int );", + "", + " if ( ! YY_G(yy_start_stack) )", + " YY_G(yy_start_stack) = (int *) yyalloc( new_size M4_YY_CALL_LAST_ARG );", + "", + " else", + " YY_G(yy_start_stack) = (int *) yyrealloc(", + " (void *) YY_G(yy_start_stack), new_size M4_YY_CALL_LAST_ARG );", + "", + " if ( ! YY_G(yy_start_stack) )", + " YY_FATAL_ERROR( \"out of memory expanding start-condition stack\" );", + " }", + "", + " YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr)++] = YY_START;", + "", + " BEGIN(new_state);", + "}", + "]])", + "", + "", + "m4_ifdef( [[M4_YY_NO_POP_STATE]],,", + "[[", + "%if-c-only", + " static void yy_pop_state YYFARGS0(void)", + "%endif", + "%if-c++-only", + " void yyFlexLexer::yy_pop_state()", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + " if ( --YY_G(yy_start_stack_ptr) < 0 )", + " YY_FATAL_ERROR( \"start-condition stack underflow\" );", + "", + " BEGIN(YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr)]);", + "}", + "]])", + "", + "", + "m4_ifdef( [[M4_YY_NO_TOP_STATE]],,", + "[[", + "%if-c-only", + " static int yy_top_state YYFARGS0(void)", + "%endif", + "%if-c++-only", + " int yyFlexLexer::yy_top_state()", + "%endif", + "{", + " M4_YY_DECL_GUTS_VAR();", + " return YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr) - 1];", + "}", + "]])", + "", + "#ifndef YY_EXIT_FAILURE", + "#define YY_EXIT_FAILURE 2", + "#endif", + "", + "%if-c-only", + "static void yy_fatal_error YYFARGS1(yyconst char*, msg)", + "{", + " m4_dnl M4_YY_DECL_GUTS_VAR();", + " (void) fprintf( stderr, \"%s\\n\", msg );", + " exit( YY_EXIT_FAILURE );", + "}", + "%endif", + "%if-c++-only", + "void yyFlexLexer::LexerError( yyconst char msg[] )", + "{", + " M4_YY_DECL_GUTS_VAR();", + " std::cerr << msg << std::endl;", + " exit( YY_EXIT_FAILURE );", + "}", + "%endif", + "", + "/* Redefine yyless() so it works in section 3 code. */", + "", + "#undef yyless", + "#define yyless(n) \\", + " do \\", + " { \\", + " /* Undo effects of setting up yytext. */ \\", + " int yyless_macro_arg = (n); \\", + " YY_LESS_LINENO(yyless_macro_arg);\\", + " yytext[yyleng] = YY_G(yy_hold_char); \\", + " YY_G(yy_c_buf_p) = yytext + yyless_macro_arg; \\", + " YY_G(yy_hold_char) = *YY_G(yy_c_buf_p); \\", + " *YY_G(yy_c_buf_p) = '\\0'; \\", + " yyleng = yyless_macro_arg; \\", + " } \\", + " while ( 0 )", + "", + "", + "", + "/* Accessor methods (get/set functions) to struct members. */", + "", + "%if-c-only", + "%if-reentrant", + "m4_ifdef( [[M4_YY_NO_GET_EXTRA]],,", + "[[", + "/** Get the user-defined data for this scanner.", + " * M4_YY_DOC_PARAM", + " */", + "YY_EXTRA_TYPE yyget_extra YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " return yyextra;", + "}", + "]])", + "%endif", + "", + "m4_ifdef( [[M4_YY_NO_GET_LINENO]],,", + "[[", + "/** Get the current line number.", + " * M4_YY_DOC_PARAM", + " */", + "int yyget_lineno YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " ", + " m4_ifdef( [[M4_YY_REENTRANT]],", + " [[", + " if (! YY_CURRENT_BUFFER)", + " return 0;", + " ]])", + " return yylineno;", + "}", + "]])", + "", + "m4_ifdef( [[M4_YY_REENTRANT]],", + "[[", + "m4_ifdef( [[M4_YY_NO_GET_COLUMN]],,", + "[[", + "/** Get the current column number.", + " * M4_YY_DOC_PARAM", + " */", + "int yyget_column YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " ", + " m4_ifdef( [[M4_YY_REENTRANT]],", + " [[", + " if (! YY_CURRENT_BUFFER)", + " return 0;", + " ]])", + " return yycolumn;", + "}", + "]])", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_GET_IN]],,", + "[[", + "/** Get the input stream.", + " * M4_YY_DOC_PARAM", + " */", + "FILE *yyget_in YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " return yyin;", + "}", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_GET_OUT]],,", + "[[", + "/** Get the output stream.", + " * M4_YY_DOC_PARAM", + " */", + "FILE *yyget_out YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " return yyout;", + "}", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_GET_LENG]],,", + "[[", + "/** Get the length of the current token.", + " * M4_YY_DOC_PARAM", + " */", + "int yyget_leng YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " return yyleng;", + "}", + "]])", + "", + "/** Get the current token.", + " * M4_YY_DOC_PARAM", + " */", + "m4_ifdef( [[M4_YY_NO_GET_TEXT]],,", + "[[", + "char *yyget_text YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " return yytext;", + "}", + "]])", + "", + "%if-reentrant", + "m4_ifdef( [[M4_YY_NO_SET_EXTRA]],,", + "[[", + "/** Set the user-defined data. This data is never touched by the scanner.", + " * @param user_defined The data to be associated with this scanner.", + " * M4_YY_DOC_PARAM", + " */", + "void yyset_extra YYFARGS1( YY_EXTRA_TYPE ,user_defined)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " yyextra = user_defined ;", + "}", + "]])", + "%endif", + "", + "m4_ifdef( [[M4_YY_NO_SET_LINENO]],,", + "[[", + "/** Set the current line number.", + " * @param line_number", + " * M4_YY_DOC_PARAM", + " */", + "void yyset_lineno YYFARGS1( int ,line_number)", + "{", + " M4_YY_DECL_GUTS_VAR();", + "", + " m4_ifdef( [[M4_YY_REENTRANT]],", + " [[", + " /* lineno is only valid if an input buffer exists. */", + " if (! YY_CURRENT_BUFFER )", + " yy_fatal_error( \"yyset_lineno called with no buffer\" M4_YY_CALL_LAST_ARG); ", + " ]])", + " yylineno = line_number;", + "}", + "]])", + "", + "m4_ifdef( [[M4_YY_REENTRANT]],", + "[[", + "m4_ifdef( [[M4_YY_NO_SET_COLUMN]],,", + "[[", + "/** Set the current column.", + " * @param line_number", + " * M4_YY_DOC_PARAM", + " */", + "void yyset_column YYFARGS1( int , column_no)", + "{", + " M4_YY_DECL_GUTS_VAR();", + "", + " m4_ifdef( [[M4_YY_REENTRANT]],", + " [[", + " /* column is only valid if an input buffer exists. */", + " if (! YY_CURRENT_BUFFER )", + " yy_fatal_error( \"yyset_column called with no buffer\" M4_YY_CALL_LAST_ARG); ", + " ]])", + " yycolumn = column_no;", + "}", + "]])", + "]])", + "", + "", + "m4_ifdef( [[M4_YY_NO_SET_IN]],,", + "[[", + "/** Set the input stream. This does not discard the current", + " * input buffer.", + " * @param in_str A readable stream.", + " * M4_YY_DOC_PARAM", + " * @see yy_switch_to_buffer", + " */", + "void yyset_in YYFARGS1( FILE * ,in_str)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " yyin = in_str ;", + "}", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_SET_OUT]],,", + "[[", + "void yyset_out YYFARGS1( FILE * ,out_str)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " yyout = out_str ;", + "}", + "]])", + "", + "", + "m4_ifdef( [[M4_YY_NO_GET_DEBUG]],,", + "[[", + "int yyget_debug YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " return yy_flex_debug;", + "}", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_SET_DEBUG]],,", + "[[", + "void yyset_debug YYFARGS1( int ,bdebug)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " yy_flex_debug = bdebug ;", + "}", + "]])", + "%endif", + "", + "%if-reentrant", + "/* Accessor methods for yylval and yylloc */", + "", + "%if-bison-bridge", + "m4_ifdef( [[M4_YY_NO_GET_LVAL]],,", + "[[", + "YYSTYPE * yyget_lval YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " return yylval;", + "}", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_SET_LVAL]],,", + "[[", + "void yyset_lval YYFARGS1( YYSTYPE * ,yylval_param)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " yylval = yylval_param;", + "}", + "]])", + "", + "m4_ifdef( [[<M4_YY_BISON_LLOC>]],", + "[[", + " m4_ifdef( [[M4_YY_NO_GET_LLOC]],,", + " [[", + "YYLTYPE *yyget_lloc YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " return yylloc;", + "}", + " ]])", + "", + " m4_ifdef( [[M4_YY_NO_SET_LLOC]],,", + " [[", + "void yyset_lloc YYFARGS1( YYLTYPE * ,yylloc_param)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " yylloc = yylloc_param;", + "}", + " ]])", + "]])", + "", + "%endif", + "", + "", + "/* User-visible API */", + "", + "/* yylex_init is special because it creates the scanner itself, so it is", + " * the ONLY reentrant function that doesn't take the scanner as the last argument.", + " * That's why we explicitly handle the declaration, instead of using our macros.", + " */", + "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],", + "[[", + "int yylex_init( ptr_yy_globals )", + " yyscan_t* ptr_yy_globals;", + "]],", + "[[", + "int yylex_init(yyscan_t* ptr_yy_globals)", + "]])", + "{", + " if (ptr_yy_globals == NULL){", + " errno = EINVAL;", + " return 1;", + " }", + "", + " *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );", + "", + " if (*ptr_yy_globals == NULL){", + " errno = ENOMEM;", + " return 1;", + " }", + "", + " /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */", + " memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));", + "", + " return yy_init_globals ( *ptr_yy_globals );", + "}", + "", + "", + "/* yylex_init_extra has the same functionality as yylex_init, but follows the", + " * convention of taking the scanner as the last argument. Note however, that", + " * this is a *pointer* to a scanner, as it will be allocated by this call (and", + " * is the reason, too, why this function also must handle its own declaration).", + " * The user defined value in the first argument will be available to yyalloc in", + " * the yyextra field.", + " */", + "m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],", + "[[", + "int yylex_init_extra( yy_user_defined, ptr_yy_globals )", + " YY_EXTRA_TYPE yy_user_defined;", + " yyscan_t* ptr_yy_globals;", + "]],", + "[[", + "int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )", + "]])", + "{", + " struct yyguts_t dummy_yyguts;", + "", + " yyset_extra (yy_user_defined, &dummy_yyguts);", + "", + " if (ptr_yy_globals == NULL){", + " errno = EINVAL;", + " return 1;", + " }", + " ", + " *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );", + " ", + " if (*ptr_yy_globals == NULL){", + " errno = ENOMEM;", + " return 1;", + " }", + " ", + " /* By setting to 0xAA, we expose bugs in", + " yy_init_globals. Leave at 0x00 for releases. */", + " memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));", + " ", + " yyset_extra (yy_user_defined, *ptr_yy_globals);", + " ", + " return yy_init_globals ( *ptr_yy_globals );", + "}", + "", + "%endif if-c-only", + "", + "", + "%if-c-only", + "static int yy_init_globals YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + " /* Initialization is the same as for the non-reentrant scanner.", + " * This function is called from yylex_destroy(), so don't allocate here.", + " */", + "", + "m4_ifdef( [[M4_YY_USE_LINENO]],", + "[[", + " m4_ifdef( [[M4_YY_NOT_REENTRANT]],", + " [[", + " /* We do not touch yylineno unless the option is enabled. */", + " yylineno = 1;", + " ]])", + "]])", + " YY_G(yy_buffer_stack) = 0;", + " YY_G(yy_buffer_stack_top) = 0;", + " YY_G(yy_buffer_stack_max) = 0;", + " YY_G(yy_c_buf_p) = (char *) 0;", + " YY_G(yy_init) = 0;", + " YY_G(yy_start) = 0;", + "", + "m4_ifdef( [[M4_YY_HAS_START_STACK_VARS]],", + "[[", + " YY_G(yy_start_stack_ptr) = 0;", + " YY_G(yy_start_stack_depth) = 0;", + " YY_G(yy_start_stack) = NULL;", + "]])", + "", + "m4_ifdef( [[M4_YY_USES_REJECT]],", + "[[", + " YY_G(yy_state_buf) = 0;", + " YY_G(yy_state_ptr) = 0;", + " YY_G(yy_full_match) = 0;", + " YY_G(yy_lp) = 0;", + "]])", + "", + "m4_ifdef( [[M4_YY_TEXT_IS_ARRAY]],", + "[[", + " YY_G(yytext_ptr) = 0;", + " YY_G(yy_more_offset) = 0;", + " YY_G(yy_prev_more_offset) = 0;", + "]])", + "", + "/* Defined in main.c */", + "#ifdef YY_STDINIT", + " yyin = stdin;", + " yyout = stdout;", + "#else", + " yyin = (FILE *) 0;", + " yyout = (FILE *) 0;", + "#endif", + "", + " /* For future reference: Set errno on error, since we are called by", + " * yylex_init()", + " */", + " return 0;", + "}", + "%endif", + "", + "", + "%if-c-only SNIP! this currently causes conflicts with the c++ scanner", + "/* yylex_destroy is for both reentrant and non-reentrant scanners. */", + "int yylex_destroy YYFARGS0(void)", + "{", + " M4_YY_DECL_GUTS_VAR();", + "", + " /* Pop the buffer stack, destroying each element. */", + " while(YY_CURRENT_BUFFER){", + " yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG );", + " YY_CURRENT_BUFFER_LVALUE = NULL;", + " yypop_buffer_state(M4_YY_CALL_ONLY_ARG);", + " }", + "", + " /* Destroy the stack itself. */", + " yyfree(YY_G(yy_buffer_stack) M4_YY_CALL_LAST_ARG);", + " YY_G(yy_buffer_stack) = NULL;", + "", + "m4_ifdef( [[M4_YY_HAS_START_STACK_VARS]],", + "[[", + " /* Destroy the start condition stack. */", + " yyfree( YY_G(yy_start_stack) M4_YY_CALL_LAST_ARG );", + " YY_G(yy_start_stack) = NULL;", + "]])", + "", + "m4_ifdef( [[M4_YY_USES_REJECT]],", + "[[", + " yyfree ( YY_G(yy_state_buf) M4_YY_CALL_LAST_ARG);", + " YY_G(yy_state_buf) = NULL;", + "]])", + "", + " /* Reset the globals. This is important in a non-reentrant scanner so the next time", + " * yylex() is called, initialization will occur. */", + " yy_init_globals( M4_YY_CALL_ONLY_ARG);", + "", + "%if-reentrant", + " /* Destroy the main struct (reentrant only). */", + " yyfree ( yyscanner M4_YY_CALL_LAST_ARG );", + " yyscanner = NULL;", + "%endif", + " return 0;", + "}", + "%endif", + "", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "/*", + " * Internal utility routines.", + " */", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#ifndef yytext_ptr", + "static void yy_flex_strncpy YYFARGS3( char*,s1, yyconst char *,s2, int,n)", + "{", + " register int i;", + " for ( i = 0; i < n; ++i )", + " s1[i] = s2[i];", + "}", + "#endif", + "]])", + "", + "m4_ifdef( [[M4_YY_NOT_IN_HEADER]],", + "[[", + "#ifdef YY_NEED_STRLEN", + "static int yy_flex_strlen YYFARGS1( yyconst char *,s)", + "{", + " register int n;", + " for ( n = 0; s[n]; ++n )", + " ;", + "", + " return n;", + "}", + "#endif", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_FLEX_ALLOC]],,", + "[[", + "void *yyalloc YYFARGS1( yy_size_t ,size)", + "{", + " return (void *) malloc( size );", + "}", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_FLEX_REALLOC]],,", + "[[", + "void *yyrealloc YYFARGS2( void *,ptr, yy_size_t ,size)", + "{", + " /* The cast to (char *) in the following accommodates both", + " * implementations that use char* generic pointers, and those", + " * that use void* generic pointers. It works with the latter", + " * because both ANSI C and C++ allow castless assignment from", + " * any pointer type to void*, and deal with argument conversions", + " * as though doing an assignment.", + " */", + " return (void *) realloc( (char *) ptr, size );", + "}", + "]])", + "", + "m4_ifdef( [[M4_YY_NO_FLEX_FREE]],,", + "[[", + "void yyfree YYFARGS1( void *,ptr)", + "{", + " free( (char *) ptr ); /* see yyrealloc() for (char *) cast */", + "}", + "]])", + "", + "%if-tables-serialization definitions", + "#ifdef FLEX_SCANNER", + "/*", + "dnl tables_shared.c - tables serialization code", + "dnl ", + "dnl Copyright (c) 1990 The Regents of the University of California.", + "dnl All rights reserved.", + "dnl ", + "dnl This code is derived from software contributed to Berkeley by", + "dnl Vern Paxson.", + "dnl ", + "dnl The United States Government has rights in this work pursuant", + "dnl to contract no. DE-AC03-76SF00098 between the United States", + "dnl Department of Energy and the University of California.", + "dnl ", + "dnl This file is part of flex.", + "dnl ", + "dnl Redistribution and use in source and binary forms, with or without", + "dnl modification, are permitted provided that the following conditions", + "dnl are met:", + "dnl ", + "dnl 1. Redistributions of source code must retain the above copyright", + "dnl notice, this list of conditions and the following disclaimer.", + "dnl 2. Redistributions in binary form must reproduce the above copyright", + "dnl notice, this list of conditions and the following disclaimer in the", + "dnl documentation and/or other materials provided with the distribution.", + "dnl ", + "dnl Neither the name of the University nor the names of its contributors", + "dnl may be used to endorse or promote products derived from this software", + "dnl without specific prior written permission.", + "dnl ", + "dnl THIS SOFTWARE IS PROVIDED `AS IS' AND WITHOUT ANY EXPRESS OR", + "dnl IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED", + "dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR", + "dnl PURPOSE.", + "dnl ", + "*/", + "", + "/* This file is meant to be included in both the skeleton and the actual", + " * flex code (hence the name \"_shared\"). ", + " */", + "#ifndef yyskel_static", + "#define yyskel_static static", + "#endif", + "#else", + "#include \"flexdef.h\"", + "#include \"tables.h\"", + "#ifndef yyskel_static", + "#define yyskel_static", + "#endif", + "#endif", + "", + "", + "/** Get the number of integers in this table. This is NOT the", + " * same thing as the number of elements.", + " * @param td the table ", + " * @return the number of integers in the table", + " */", + "yyskel_static flex_int32_t yytbl_calc_total_len (const struct yytbl_data *tbl)", + "{", + " flex_int32_t n;", + "", + " /* total number of ints */", + " n = tbl->td_lolen;", + " if (tbl->td_hilen > 0)", + " n *= tbl->td_hilen;", + "", + " if (tbl->td_id == YYTD_ID_TRANSITION)", + " n *= 2;", + " return n;", + "}", + "", + "", + "static int yytbl_read8 (void *v, struct yytbl_reader * rd)", + "{", + " errno = 0;", + " if (fread (v, sizeof (flex_uint8_t), 1, rd->fp) != 1){", + " errno = EIO;", + " return -1;", + " }", + " rd->bread += sizeof(flex_uint8_t);", + " return 0;", + "}", + "", + "static int yytbl_read16 (void *v, struct yytbl_reader * rd)", + "{", + " errno = 0;", + " if (fread (v, sizeof (flex_uint16_t), 1, rd->fp) != 1){", + " errno = EIO;", + " return -1;", + " }", + " *((flex_uint16_t *) v) = ntohs (*((flex_uint16_t *) v));", + " rd->bread += sizeof(flex_uint16_t);", + " return 0;", + "}", + "", + "static int yytbl_read32 (void *v, struct yytbl_reader * rd)", + "{", + " errno = 0;", + " if (fread (v, sizeof (flex_uint32_t), 1, rd->fp) != 1){", + " errno = EIO;", + " return -1;", + " }", + " *((flex_uint32_t *) v) = ntohl (*((flex_uint32_t *) v));", + " rd->bread += sizeof(flex_uint32_t);", + " return 0;", + "}", + "", + "/** Read the header */", + "static int yytbl_hdr_read YYFARGS2(struct yytbl_hdr *, th, struct yytbl_reader *, rd)", + "{", + " int bytes;", + " memset (th, 0, sizeof (struct yytbl_hdr));", + "", + " if (yytbl_read32 (&(th->th_magic), rd) != 0)", + " return -1;", + "", + " if (th->th_magic != YYTBL_MAGIC){", + " yy_fatal_error(\"bad magic number\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);", + " return -1;", + " }", + "", + " if (yytbl_read32 (&(th->th_hsize), rd) != 0", + " || yytbl_read32 (&(th->th_ssize), rd) != 0", + " || yytbl_read16 (&(th->th_flags), rd) != 0)", + " return -1;", + "", + " /* Sanity check on header size. Greater than 1k suggests some funny business. */", + " if (th->th_hsize < 16 || th->th_hsize > 1024){", + " yy_fatal_error(\"insane header size detected\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);", + " return -1;", + " }", + "", + " /* Allocate enough space for the version and name fields */", + " bytes = th->th_hsize - 14;", + " th->th_version = (char *) yyalloc (bytes M4_YY_CALL_LAST_ARG);", + " if ( ! th->th_version )", + " YY_FATAL_ERROR( \"out of dynamic memory in yytbl_hdr_read()\" );", + "", + " /* we read it all into th_version, and point th_name into that data */", + " if (fread (th->th_version, 1, bytes, rd->fp) != bytes){", + " errno = EIO;", + " yyfree(th->th_version M4_YY_CALL_LAST_ARG);", + " th->th_version = NULL;", + " return -1;", + " }", + " else", + " rd->bread += bytes;", + "", + " th->th_name = th->th_version + strlen (th->th_version) + 1;", + " return 0;", + "}", + "", + "/** lookup id in the dmap list.", + " * @param dmap pointer to first element in list", + " * @return NULL if not found.", + " */", + "static struct yytbl_dmap *yytbl_dmap_lookup YYFARGS2(struct yytbl_dmap *, dmap,", + " int, id)", + "{", + " while (dmap->dm_id)", + " if (dmap->dm_id == id)", + " return dmap;", + " else", + " dmap++;", + " return NULL;", + "}", + "", + "/** Read a table while mapping its contents to the local array. ", + " * @param dmap used to performing mapping", + " * @return 0 on success", + " */", + "static int yytbl_data_load YYFARGS2(struct yytbl_dmap *, dmap, struct yytbl_reader*, rd)", + "{", + " struct yytbl_data td;", + " struct yytbl_dmap *transdmap=0;", + " int len, i, rv, inner_loop_count;", + " void *p=0;", + "", + " memset (&td, 0, sizeof (struct yytbl_data));", + "", + " if (yytbl_read16 (&td.td_id, rd) != 0", + " || yytbl_read16 (&td.td_flags, rd) != 0", + " || yytbl_read32 (&td.td_hilen, rd) != 0", + " || yytbl_read32 (&td.td_lolen, rd) != 0)", + " return -1;", + "", + " /* Lookup the map for the transition table so we have it in case we need it", + " * inside the loop below. This scanner might not even have a transition", + " * table, which is ok.", + " */", + " transdmap = yytbl_dmap_lookup (dmap, YYTD_ID_TRANSITION M4_YY_CALL_LAST_ARG);", + "", + " if ((dmap = yytbl_dmap_lookup (dmap, td.td_id M4_YY_CALL_LAST_ARG)) == NULL){", + " yy_fatal_error(\"table id not found in map.\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);", + " return -1;", + " }", + "", + " /* Allocate space for table.", + " * The --full yy_transition table is a special case, since we", + " * need the dmap.dm_sz entry to tell us the sizeof the individual", + " * struct members.", + " */", + " {", + " size_t bytes;", + "", + " if ((td.td_flags & YYTD_STRUCT))", + " bytes = sizeof(struct yy_trans_info) * td.td_lolen * (td.td_hilen ? td.td_hilen : 1);", + " else", + " bytes = td.td_lolen * (td.td_hilen ? td.td_hilen : 1) * dmap->dm_sz;", + "", + " if(M4_YY_TABLES_VERIFY)", + " /* We point to the array itself */", + " p = dmap->dm_arr; ", + " else", + " /* We point to the address of a pointer. */", + " *dmap->dm_arr = p = (void *) yyalloc (bytes M4_YY_CALL_LAST_ARG);", + " if ( ! p )", + " YY_FATAL_ERROR( \"out of dynamic memory in yytbl_data_load()\" );", + " }", + "", + " /* If it's a struct, we read 2 integers to get one element */", + " if ((td.td_flags & YYTD_STRUCT) != 0)", + " inner_loop_count = 2;", + " else", + " inner_loop_count = 1;", + "", + " /* read and map each element.", + " * This loop iterates once for each element of the td_data array.", + " * Notice that we increment 'i' in the inner loop.", + " */", + " len = yytbl_calc_total_len (&td);", + " for (i = 0; i < len; ){", + " int j;", + "", + "", + " /* This loop really executes exactly 1 or 2 times.", + " * The second time is to handle the second member of the", + " * YYTD_STRUCT for the yy_transition array.", + " */", + " for (j = 0; j < inner_loop_count; j++, i++) {", + " flex_int32_t t32;", + "", + " /* read into t32 no matter what the real size is. */", + " {", + " flex_int16_t t16;", + " flex_int8_t t8;", + "", + " switch (YYTDFLAGS2BYTES (td.td_flags)) {", + " case sizeof (flex_int32_t):", + " rv = yytbl_read32 (&t32, rd);", + " break;", + " case sizeof (flex_int16_t):", + " rv = yytbl_read16 (&t16, rd);", + " t32 = t16;", + " break;", + " case sizeof (flex_int8_t):", + " rv = yytbl_read8 (&t8, rd);", + " t32 = t8;", + " break;", + " default: ", + " yy_fatal_error(\"invalid td_flags\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);", + " return -1;", + " }", + " }", + " if (rv != 0)", + " return -1;", + "", + " /* copy into the deserialized array... */", + "", + " if ((td.td_flags & YYTD_STRUCT)) {", + " /* t32 is the j'th member of a two-element struct. */", + " void *v;", + "", + " v = j == 0 ? &(((struct yy_trans_info *) p)->yy_verify)", + " : &(((struct yy_trans_info *) p)->yy_nxt);", + "", + " switch (dmap->dm_sz) {", + " case sizeof (flex_int32_t):", + " if (M4_YY_TABLES_VERIFY){", + " if( ((flex_int32_t *) v)[0] != (flex_int32_t) t32)", + " yy_fatal_error(\"tables verification failed at YYTD_STRUCT flex_int32_t\" M4_YY_CALL_LAST_ARG);", + " }else", + " ((flex_int32_t *) v)[0] = (flex_int32_t) t32;", + " break;", + " case sizeof (flex_int16_t):", + " if (M4_YY_TABLES_VERIFY ){", + " if(((flex_int16_t *) v)[0] != (flex_int16_t) t32)", + " yy_fatal_error(\"tables verification failed at YYTD_STRUCT flex_int16_t\" M4_YY_CALL_LAST_ARG);", + " }else", + " ((flex_int16_t *) v)[0] = (flex_int16_t) t32;", + " break;", + " case sizeof(flex_int8_t):", + " if (M4_YY_TABLES_VERIFY ){", + " if( ((flex_int8_t *) v)[0] != (flex_int8_t) t32)", + " yy_fatal_error(\"tables verification failed at YYTD_STRUCT flex_int8_t\" M4_YY_CALL_LAST_ARG);", + " }else", + " ((flex_int8_t *) v)[0] = (flex_int8_t) t32;", + " break;", + " default:", + " yy_fatal_error(\"invalid dmap->dm_sz for struct\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);", + " return -1;", + " }", + "", + " /* if we're done with j, increment p */", + " if (j == 1)", + " p = (struct yy_trans_info *) p + 1;", + " }", + " else if ((td.td_flags & YYTD_PTRANS)) {", + " /* t32 is an index into the transition array. */", + " struct yy_trans_info *v;", + "", + "", + " if (!transdmap){", + " yy_fatal_error(\"transition table not found\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);", + " return -1;", + " }", + " ", + " if( M4_YY_TABLES_VERIFY)", + " v = &(((struct yy_trans_info *) (transdmap->dm_arr))[t32]);", + " else", + " v = &((*((struct yy_trans_info **) (transdmap->dm_arr)))[t32]);", + "", + " if(M4_YY_TABLES_VERIFY ){", + " if( ((struct yy_trans_info **) p)[0] != v)", + " yy_fatal_error(\"tables verification failed at YYTD_PTRANS\" M4_YY_CALL_LAST_ARG);", + " }else", + " ((struct yy_trans_info **) p)[0] = v;", + " ", + " /* increment p */", + " p = (struct yy_trans_info **) p + 1;", + " }", + " else {", + " /* t32 is a plain int. copy data, then incrememnt p. */", + " switch (dmap->dm_sz) {", + " case sizeof (flex_int32_t):", + " if(M4_YY_TABLES_VERIFY ){", + " if( ((flex_int32_t *) p)[0] != (flex_int32_t) t32)", + " yy_fatal_error(\"tables verification failed at flex_int32_t\" M4_YY_CALL_LAST_ARG);", + " }else", + " ((flex_int32_t *) p)[0] = (flex_int32_t) t32;", + " p = ((flex_int32_t *) p) + 1;", + " break;", + " case sizeof (flex_int16_t):", + " if(M4_YY_TABLES_VERIFY ){", + " if( ((flex_int16_t *) p)[0] != (flex_int16_t) t32)", + " yy_fatal_error(\"tables verification failed at flex_int16_t\" M4_YY_CALL_LAST_ARG);", + " }else", + " ((flex_int16_t *) p)[0] = (flex_int16_t) t32;", + " p = ((flex_int16_t *) p) + 1;", + " break;", + " case sizeof (flex_int8_t):", + " if(M4_YY_TABLES_VERIFY ){", + " if( ((flex_int8_t *) p)[0] != (flex_int8_t) t32)", + " yy_fatal_error(\"tables verification failed at flex_int8_t\" M4_YY_CALL_LAST_ARG);", + " }else", + " ((flex_int8_t *) p)[0] = (flex_int8_t) t32;", + " p = ((flex_int8_t *) p) + 1;", + " break;", + " default:", + " yy_fatal_error(\"invalid dmap->dm_sz for plain int\" /*TODO: not fatal.*/ M4_YY_CALL_LAST_ARG);", + " return -1;", + " }", + " }", + " }", + "", + " }", + "", + " /* Now eat padding. */", + " {", + " int pad;", + " pad = yypad64(rd->bread);", + " while(--pad >= 0){", + " flex_int8_t t8;", + " if(yytbl_read8(&t8,rd) != 0)", + " return -1;", + " }", + " }", + "", + " return 0;", + "}", + "", + "%define-yytables The name for this specific scanner's tables.", + "", + "/* Find the key and load the DFA tables from the given stream. */", + "static int yytbl_fload YYFARGS2(FILE *, fp, const char *, key)", + "{", + " int rv=0;", + " struct yytbl_hdr th;", + " struct yytbl_reader rd;", + "", + " rd.fp = fp;", + " th.th_version = NULL;", + "", + " /* Keep trying until we find the right set of tables or end of file. */", + " while (!feof(rd.fp)) {", + " rd.bread = 0;", + " if (yytbl_hdr_read (&th, &rd M4_YY_CALL_LAST_ARG) != 0){", + " rv = -1;", + " goto return_rv;", + " }", + "", + " /* A NULL key means choose the first set of tables. */", + " if (key == NULL)", + " break;", + "", + " if (strcmp(th.th_name,key) != 0){", + " /* Skip ahead to next set */", + " fseek(rd.fp, th.th_ssize - th.th_hsize, SEEK_CUR);", + " yyfree(th.th_version M4_YY_CALL_LAST_ARG);", + " th.th_version = NULL;", + " }", + " else", + " break;", + " }", + "", + " while (rd.bread < th.th_ssize){", + " /* Load the data tables */", + " if(yytbl_data_load (yydmap,&rd M4_YY_CALL_LAST_ARG) != 0){", + " rv = -1;", + " goto return_rv;", + " }", + " }", + "", + "return_rv:", + " if(th.th_version){", + " yyfree(th.th_version M4_YY_CALL_LAST_ARG);", + " th.th_version = NULL;", + " }", + "", + " return rv;", + "}", + "", + "/** Load the DFA tables for this scanner from the given stream. */", + "int yytables_fload YYFARGS1(FILE *, fp)", + "{", + "", + " if( yytbl_fload(fp, YYTABLES_NAME M4_YY_CALL_LAST_ARG) != 0)", + " return -1;", + " return 0;", + "}", + "", + "/** Destroy the loaded tables, freeing memory, etc.. */", + "int yytables_destroy YYFARGS0(void)", + "{ ", + " struct yytbl_dmap *dmap=0;", + "", + " if(!M4_YY_TABLES_VERIFY){", + " /* Walk the dmap, freeing the pointers */", + " for(dmap=yydmap; dmap->dm_id; dmap++) {", + " void * v;", + " v = dmap->dm_arr;", + " if(v && *(char**)v){", + " yyfree(*(char**)v M4_YY_CALL_LAST_ARG);", + " *(char**)v = NULL;", + " }", + " }", + " }", + "", + " return 0;", + "}", + "", + "/* end table serialization code definitions */", + "%endif", + "", + "", + "m4_ifdef([[M4_YY_MAIN]], [[", + "int main M4_YY_PARAMS(void);", + "", + "int main ()", + "{", + "", + "%if-reentrant", + " yyscan_t lexer;", + " yylex_init(&lexer);", + " yylex( lexer );", + " yylex_destroy( lexer);", + "", + "%endif", + "%if-not-reentrant", + " yylex();", + "%endif", + "", + " return 0;", + "}", + "]])", + "", + "%ok-for-header", + "m4_ifdef( [[M4_YY_IN_HEADER]],", + "[[", + "#undef YY_NEW_FILE", + "#undef YY_FLUSH_BUFFER", + "#undef yy_set_bol", + "#undef yy_new_buffer", + "#undef yy_set_interactive", + "#undef YY_DO_BEFORE_ACTION", + "", + "#ifdef YY_DECL_IS_OURS", + "#undef YY_DECL_IS_OURS", + "#undef YY_DECL", + "#endif", + "]])", + 0 +}; |