[BACK]Return to flex.skl CVS log [TXT][DIR] Up to [local] / src / usr.bin / lex

Annotation of src/usr.bin/lex/flex.skl, Revision 1.13

1.13    ! tedu        1: /*     $OpenBSD: flex.skl,v 1.12 2013/11/04 17:03:32 millert Exp $     */
1.2       deraadt     2:
1.13    ! tedu        3: %# -*-C-*- vi: set ft=c:
        !             4: %# This file is processed in several stages.
        !             5: %# Here are the stages, as best as I can describe:
        !             6: %#
        !             7: %#   1. flex.skl is processed through GNU m4 during the
        !             8: %#      pre-compilation stage of flex. Only macros starting
        !             9: %#      with `m4preproc_' are processed, and quoting is normal.
        !            10: %#
        !            11: %#   2. The preprocessed skeleton is translated verbatim into a
        !            12: %#      C array, saved as "skel.c" and compiled into the flex binary.
        !            13: %#
        !            14: %#   3. At runtime, the skeleton is generated and filtered (again)
        !            15: %#      through m4. Macros beginning with `m4_' will be processed.
        !            16: %#      The quoting is "[[" and "]]" so we don't interfere with
        !            17: %#      user code.
        !            18: %#
        !            19: %# All generate macros for the m4 stage contain the text "m4" or "M4"
        !            20: %# in them. This is to distinguish them from CPP macros.
        !            21: %# The exception to this rule is YY_G, which is an m4 macro,
        !            22: %# but it needs to be remain short because it is used everywhere.
        !            23: %#
1.1       deraadt    24: /* A lexical scanner generated by flex */
                     25:
1.13    ! tedu       26: %#  Macros for preproc stage.
        !            27: m4preproc_changecom
        !            28:
        !            29: %# Macros for runtime processing stage.
        !            30: m4_changecom
        !            31: m4_changequote
        !            32: m4_changequote([[, ]])
        !            33:
        !            34: %#
        !            35: %# Lines in this skeleton starting with a "%" character are "control lines"
        !            36: %# and affect the generation of the scanner. The possible control codes are
        !            37: %# listed and processed in misc.c.
        !            38: %#
        !            39: %#   %#  -  A comment. The current line is omitted from the generated scanner.
        !            40: %#   %if-c++-only  -  The following lines are printed for C++ scanners ONLY.
        !            41: %#   %if-c-only    -  The following lines are NOT printed for C++ scanners.
        !            42: %#   %if-c-or-c++  -  The following lines are printed in BOTH C and C++ scanners.
        !            43: %#   %if-reentrant     - Print for reentrant scanners.(push)
        !            44: %#   %if-not-reentrant - Print for non-reentrant scanners. (push)
        !            45: %#   %if-bison-bridge  - Print for bison-bridge. (push)
        !            46: %#   %if-not-bison-bridge  - Print for non-bison-bridge. (push)
        !            47: %#   %endif        - pop from the previous if code.
        !            48: %#   %%  -  A stop-point, where code is inserted by flex.
        !            49: %#          Each stop-point is numbered here and also in the code generator.
        !            50: %#          (See gen.c, etc. for details.)
        !            51: %#   %not-for-header  -  Begin code that should NOT appear in a ".h" file.
        !            52: %#   %ok-for-header   -  %c and %e are used for building a header file.
        !            53: %#   %if-tables-serialization
        !            54: %#
        !            55: %#   All control-lines EXCEPT comment lines ("%#") will be inserted into
        !            56: %#   the generated scanner as a C-style comment. This is to aid those who
        !            57: %#   edit the skeleton.
        !            58: %#
        !            59:
        !            60: %not-for-header
        !            61: %if-c-only
        !            62: %if-not-reentrant
        !            63: m4_ifelse(M4_YY_PREFIX,yy,,
        !            64: #define yy_create_buffer M4_YY_PREFIX[[_create_buffer]]
        !            65: #define yy_delete_buffer M4_YY_PREFIX[[_delete_buffer]]
        !            66: #define yy_flex_debug M4_YY_PREFIX[[_flex_debug]]
        !            67: #define yy_init_buffer M4_YY_PREFIX[[_init_buffer]]
        !            68: #define yy_flush_buffer M4_YY_PREFIX[[_flush_buffer]]
        !            69: #define yy_load_buffer_state M4_YY_PREFIX[[_load_buffer_state]]
        !            70: #define yy_switch_to_buffer M4_YY_PREFIX[[_switch_to_buffer]]
        !            71: #define yyin M4_YY_PREFIX[[in]]
        !            72: #define yyleng M4_YY_PREFIX[[leng]]
        !            73: #define yylex M4_YY_PREFIX[[lex]]
        !            74: #define yylineno M4_YY_PREFIX[[lineno]]
        !            75: #define yyout M4_YY_PREFIX[[out]]
        !            76: #define yyrestart M4_YY_PREFIX[[restart]]
        !            77: #define yytext M4_YY_PREFIX[[text]]
        !            78: #define yywrap M4_YY_PREFIX[[wrap]]
        !            79: #define yyalloc M4_YY_PREFIX[[alloc]]
        !            80: #define yyrealloc M4_YY_PREFIX[[realloc]]
        !            81: #define yyfree M4_YY_PREFIX[[free]]
        !            82: )
        !            83: %endif
        !            84: %endif
        !            85: %ok-for-header
1.1       deraadt    86:
                     87: #define FLEX_SCANNER
1.13    ! tedu       88: #define YY_FLEX_MAJOR_VERSION FLEX_MAJOR_VERSION
        !            89: #define YY_FLEX_MINOR_VERSION FLEX_MINOR_VERSION
        !            90: #define YY_FLEX_SUBMINOR_VERSION FLEX_SUBMINOR_VERSION
        !            91: #if YY_FLEX_SUBMINOR_VERSION > 0
        !            92: #define FLEX_BETA
        !            93: #endif
        !            94:
        !            95: %# Some negated symbols
        !            96: m4_ifdef( [[M4_YY_IN_HEADER]], , [[m4_define([[M4_YY_NOT_IN_HEADER]], [[]])]])
        !            97: m4_ifdef( [[M4_YY_REENTRANT]], , [[m4_define([[M4_YY_NOT_REENTRANT]], [[]])]])
        !            98:
        !            99: %# This is the m4 way to say "(stack_used || is_reentrant)
        !           100: m4_ifdef( [[M4_YY_STACK_USED]], [[m4_define([[M4_YY_HAS_START_STACK_VARS]])]])
        !           101: m4_ifdef( [[M4_YY_REENTRANT]],  [[m4_define([[M4_YY_HAS_START_STACK_VARS]])]])
        !           102:
        !           103: %# Prefixes.
        !           104: %# The complexity here is necessary so that m4 preserves
        !           105: %# the argument lists to each C function.
        !           106:
        !           107:
        !           108: m4_ifdef( [[M4_YY_PREFIX]],, [[m4_define([[M4_YY_PREFIX]], [[yy]])]])
        !           109:
        !           110: m4preproc_define(`M4_GEN_PREFIX',
        !           111:     ``m4_define(yy[[$1]], [[M4_YY_PREFIX[[$1]]m4_ifelse($'`#,0,,[[($'`@)]])]])'')
        !           112:
        !           113: %if-c++-only
        !           114:     /* The c++ scanner is a mess. The FlexLexer.h header file relies on the
        !           115:      * following macro. This is required in order to pass the c++-multiple-scanners
        !           116:      * test in the regression suite. We get reports that it breaks inheritance.
        !           117:      * We will address this in a future release of flex, or omit the C++ scanner
        !           118:      * altogether.
        !           119:      */
        !           120:     #define yyFlexLexer M4_YY_PREFIX[[FlexLexer]]
        !           121: %endif
        !           122:
        !           123: %if-c-only
        !           124:     M4_GEN_PREFIX(`_create_buffer')
        !           125:     M4_GEN_PREFIX(`_delete_buffer')
        !           126:     M4_GEN_PREFIX(`_scan_buffer')
        !           127:     M4_GEN_PREFIX(`_scan_string')
        !           128:     M4_GEN_PREFIX(`_scan_bytes')
        !           129:     M4_GEN_PREFIX(`_init_buffer')
        !           130:     M4_GEN_PREFIX(`_flush_buffer')
        !           131:     M4_GEN_PREFIX(`_load_buffer_state')
        !           132:     M4_GEN_PREFIX(`_switch_to_buffer')
        !           133:     M4_GEN_PREFIX(`push_buffer_state')
        !           134:     M4_GEN_PREFIX(`pop_buffer_state')
        !           135:     M4_GEN_PREFIX(`ensure_buffer_stack')
        !           136:     M4_GEN_PREFIX(`lex')
        !           137:     M4_GEN_PREFIX(`restart')
        !           138:     M4_GEN_PREFIX(`lex_init')
        !           139:     M4_GEN_PREFIX(`lex_init_extra')
        !           140:     M4_GEN_PREFIX(`lex_destroy')
        !           141:     M4_GEN_PREFIX(`get_debug')
        !           142:     M4_GEN_PREFIX(`set_debug')
        !           143:     M4_GEN_PREFIX(`get_extra')
        !           144:     M4_GEN_PREFIX(`set_extra')
        !           145:     M4_GEN_PREFIX(`get_in')
        !           146:     M4_GEN_PREFIX(`set_in')
        !           147:     M4_GEN_PREFIX(`get_out')
        !           148:     M4_GEN_PREFIX(`set_out')
        !           149:     M4_GEN_PREFIX(`get_leng')
        !           150:     M4_GEN_PREFIX(`get_text')
        !           151:     M4_GEN_PREFIX(`get_lineno')
        !           152:     M4_GEN_PREFIX(`set_lineno')
        !           153:     m4_ifdef( [[M4_YY_REENTRANT]],
        !           154:     [[
        !           155:         M4_GEN_PREFIX(`get_column')
        !           156:         M4_GEN_PREFIX(`set_column')
        !           157:     ]])
        !           158:     M4_GEN_PREFIX(`wrap')
        !           159: %endif
        !           160:
        !           161: m4_ifdef( [[M4_YY_BISON_LVAL]],
        !           162: [[
        !           163:     M4_GEN_PREFIX(`get_lval')
        !           164:     M4_GEN_PREFIX(`set_lval')
        !           165: ]])
        !           166:
        !           167: m4_ifdef( [[<M4_YY_BISON_LLOC>]],
        !           168: [[
        !           169:     M4_GEN_PREFIX(`get_lloc')
        !           170:     M4_GEN_PREFIX(`set_lloc')
        !           171: ]])
        !           172:
        !           173:
        !           174:     M4_GEN_PREFIX(`alloc')
        !           175:     M4_GEN_PREFIX(`realloc')
        !           176:     M4_GEN_PREFIX(`free')
        !           177:
        !           178: %if-c-only
        !           179: m4_ifdef( [[M4_YY_NOT_REENTRANT]],
        !           180: [[
        !           181:     M4_GEN_PREFIX(`text')
        !           182:     M4_GEN_PREFIX(`leng')
        !           183:     M4_GEN_PREFIX(`in')
        !           184:     M4_GEN_PREFIX(`out')
        !           185:     M4_GEN_PREFIX(`_flex_debug')
        !           186:     M4_GEN_PREFIX(`lineno')
        !           187: ]])
        !           188: %endif
        !           189:
        !           190:
        !           191: m4_ifdef( [[M4_YY_TABLES_EXTERNAL]],
        !           192: [[
        !           193:     M4_GEN_PREFIX(`tables_fload')
        !           194:     M4_GEN_PREFIX(`tables_destroy')
        !           195:     M4_GEN_PREFIX(`TABLES_NAME')
        !           196: ]])
        !           197:
        !           198: /* First, we deal with  platform-specific or compiler-specific issues. */
1.1       deraadt   199:
1.13    ! tedu      200: /* begin standard C headers. */
        !           201: %if-c-only
1.1       deraadt   202: #include <stdio.h>
1.13    ! tedu      203: #include <string.h>
1.6       millert   204: #include <errno.h>
1.13    ! tedu      205: #include <stdlib.h>
        !           206: %endif
1.1       deraadt   207:
1.13    ! tedu      208: %if-tables-serialization
        !           209: #include <sys/types.h>
        !           210: #include <netinet/in.h>
        !           211: %endif
        !           212: /* end standard C headers. */
        !           213:
        !           214: %if-c-or-c++
        !           215: m4preproc_include(`flexint.h')
        !           216: %endif
        !           217:
        !           218: %if-c++-only
        !           219: /* begin standard C++ headers. */
        !           220: #include <iostream>
        !           221: #include <errno.h>
        !           222: #include <cstdlib>
        !           223: #include <cstdio>
        !           224: #include <cstring>
        !           225: /* end standard C++ headers. */
        !           226: %endif
1.1       deraadt   227:
                    228: #ifdef __cplusplus
                    229:
                    230: /* The "const" storage-class-modifier is valid. */
                    231: #define YY_USE_CONST
                    232:
                    233: #else  /* ! __cplusplus */
                    234:
1.13    ! tedu      235: /* C99 requires __STDC__ to be defined as 1. */
        !           236: #if defined (__STDC__)
1.1       deraadt   237:
                    238: #define YY_USE_CONST
                    239:
1.13    ! tedu      240: #endif /* defined (__STDC__) */
1.1       deraadt   241: #endif /* ! __cplusplus */
                    242:
                    243: #ifdef YY_USE_CONST
                    244: #define yyconst const
                    245: #else
                    246: #define yyconst
                    247: #endif
                    248:
1.13    ! tedu      249: %# For compilers that can not handle prototypes.
        !           250: %# e.g.,
        !           251: %# The function prototype
        !           252: %#    int foo(int x, char* y);
        !           253: %#
        !           254: %# ...should be written as
        !           255: %#    int foo M4_YY_PARAMS(int x, char* y);
        !           256: %#
        !           257: %# ...which could possibly generate
        !           258: %#    int foo ();
        !           259: %#
        !           260: m4_ifdef( [[M4_YY_NO_ANSI_FUNC_PROTOS]],
        !           261: [[
        !           262:     m4_define( [[M4_YY_PARAMS]], [[()]])
        !           263: ]],
        !           264: [[
        !           265:     m4_define( [[M4_YY_PARAMS]], [[($*)]])
        !           266: ]])
1.1       deraadt   267:
1.13    ! tedu      268: %not-for-header
1.1       deraadt   269: /* Returned upon end-of-file. */
                    270: #define YY_NULL 0
1.13    ! tedu      271: %ok-for-header
1.1       deraadt   272:
1.13    ! tedu      273: %not-for-header
1.1       deraadt   274: /* Promotes a possibly negative, possibly signed char to an unsigned
                    275:  * integer for use as an array index.  If the signed char is negative,
                    276:  * we want to instead treat it as an 8-bit unsigned char, hence the
                    277:  * double cast.
                    278:  */
                    279: #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
1.13    ! tedu      280: %ok-for-header
        !           281:
        !           282:
        !           283:
        !           284: %if-reentrant
        !           285:
        !           286: /* An opaque pointer. */
        !           287: #ifndef YY_TYPEDEF_YY_SCANNER_T
        !           288: #define YY_TYPEDEF_YY_SCANNER_T
        !           289: typedef void* yyscan_t;
        !           290: #endif
        !           291:
        !           292: %# Declare yyguts variable
        !           293: m4_define( [[M4_YY_DECL_GUTS_VAR]], [[struct yyguts_t * yyg = (struct yyguts_t*)yyscanner]])
        !           294: %# Perform a noop access on yyguts to prevent unused variable complains
        !           295: m4_define( [[M4_YY_NOOP_GUTS_VAR]], [[(void)yyg]])
        !           296: %# For use wherever a Global is accessed or assigned.
        !           297: m4_define( [[YY_G]], [[yyg->$1]])
        !           298:
        !           299: %# For use in function prototypes to append the additional argument.
        !           300: m4_define( [[M4_YY_PROTO_LAST_ARG]],  [[, yyscan_t yyscanner]])
        !           301: m4_define( [[M4_YY_PROTO_ONLY_ARG]],  [[yyscan_t yyscanner]])
        !           302:
        !           303: %# For use in function definitions to append the additional argument.
        !           304: m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],
        !           305: [[
        !           306:     m4_define( [[M4_YY_DEF_LAST_ARG]], [[, yyscanner]])
        !           307:     m4_define( [[M4_YY_DEF_ONLY_ARG]], [[yyscanner]])
        !           308: ]],
        !           309: [[
        !           310:     m4_define( [[M4_YY_DEF_LAST_ARG]],  [[, yyscan_t yyscanner]])
        !           311:     m4_define( [[M4_YY_DEF_ONLY_ARG]],  [[yyscan_t yyscanner]])
        !           312: ]])
        !           313: m4_define( [[M4_YY_DECL_LAST_ARG]],  [[yyscan_t yyscanner;]])
        !           314:
        !           315: %# For use in function calls to pass the additional argument.
        !           316: m4_define( [[M4_YY_CALL_LAST_ARG]], [[, yyscanner]])
        !           317: m4_define( [[M4_YY_CALL_ONLY_ARG]], [[yyscanner]])
        !           318:
        !           319: %# For use in function documentation to adjust for additional argument.
        !           320: m4_define( [[M4_YY_DOC_PARAM]], [[@param yyscanner The scanner object.]])
        !           321:
        !           322: /* For convenience, these vars (plus the bison vars far below)
        !           323:    are macros in the reentrant scanner. */
        !           324: #define yyin YY_G(yyin_r)
        !           325: #define yyout YY_G(yyout_r)
        !           326: #define yyextra YY_G(yyextra_r)
        !           327: #define yyleng YY_G(yyleng_r)
        !           328: #define yytext YY_G(yytext_r)
        !           329: #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
        !           330: #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
        !           331: #define yy_flex_debug YY_G(yy_flex_debug_r)
        !           332:
        !           333: m4_define( [[M4_YY_INCR_LINENO]],
        !           334: [[
        !           335:     do{ yylineno++;
        !           336:         yycolumn=0;
        !           337:     }while(0)
        !           338: ]])
        !           339:
        !           340: %endif
        !           341:
        !           342:
        !           343:
        !           344: %if-not-reentrant
        !           345:
        !           346: m4_define( [[M4_YY_INCR_LINENO]],
        !           347: [[
        !           348:     yylineno++;
        !           349: ]])
        !           350:
        !           351: %# Define these macros to be no-ops.
        !           352: m4_define( [[M4_YY_DECL_GUTS_VAR]], [[m4_dnl]])
        !           353: m4_define( [[M4_YY_NOOP_GUTS_VAR]], [[m4_dnl]])
        !           354: m4_define( [[YY_G]], [[($1)]])
        !           355: m4_define( [[M4_YY_PROTO_LAST_ARG]])
        !           356: m4_define( [[M4_YY_PROTO_ONLY_ARG]],  [[void]])
        !           357: m4_define( [[M4_YY_DEF_LAST_ARG]])
        !           358:
        !           359: m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],
        !           360: [[
        !           361:     m4_define( [[M4_YY_DEF_ONLY_ARG]])
        !           362: ]],
        !           363: [[
        !           364:     m4_define( [[M4_YY_DEF_ONLY_ARG]],  [[void]])
        !           365: ]])
        !           366: m4_define([[M4_YY_DECL_LAST_ARG]])
        !           367: m4_define([[M4_YY_CALL_LAST_ARG]])
        !           368: m4_define([[M4_YY_CALL_ONLY_ARG]])
        !           369: m4_define( [[M4_YY_DOC_PARAM]], [[]])
        !           370:
        !           371: %endif
        !           372:
        !           373:
        !           374: m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],
        !           375: [[
        !           376: %# For compilers that need traditional function definitions.
        !           377: %# e.g.,
        !           378: %# The function prototype taking 2 arguments
        !           379: %#    int foo (int x, char* y)
        !           380: %#
        !           381: %# ...should be written as
        !           382: %#    int foo YYFARGS2(int,x, char*,y)
        !           383: %#
        !           384: %# ...which could possibly generate
        !           385: %#    int foo (x,y,yyscanner)
        !           386: %#        int x;
        !           387: %#        char * y;
        !           388: %#        yyscan_t yyscanner;
        !           389: %#
        !           390: %# Generate traditional function defs
        !           391:     m4_define( [[YYFARGS0]], [[(M4_YY_DEF_ONLY_ARG) [[\]]
        !           392:         M4_YY_DECL_LAST_ARG]])
        !           393:     m4_define( [[YYFARGS1]], [[($2 M4_YY_DEF_LAST_ARG) [[\]]
        !           394:         $1 $2; [[\]]
        !           395:         M4_YY_DECL_LAST_ARG]])
        !           396:     m4_define( [[YYFARGS2]], [[($2,$4 M4_YY_DEF_LAST_ARG) [[\]]
        !           397:         $1 $2; [[\]]
        !           398:         $3 $4; [[\]]
        !           399:         M4_YY_DECL_LAST_ARG]])
        !           400:     m4_define( [[YYFARGS3]], [[($2,$4,$6 M4_YY_DEF_LAST_ARG) [[\]]
        !           401:         $1 $2; [[\]]
        !           402:         $3 $4; [[\]]
        !           403:         $5 $6; [[\]]
        !           404:         M4_YY_DECL_LAST_ARG]])
        !           405: ]],
        !           406: [[
        !           407: %# Generate C99 function defs.
        !           408:     m4_define( [[YYFARGS0]], [[(M4_YY_DEF_ONLY_ARG)]])
        !           409:     m4_define( [[YYFARGS1]], [[($1 $2 M4_YY_DEF_LAST_ARG)]])
        !           410:     m4_define( [[YYFARGS2]], [[($1 $2, $3 $4 M4_YY_DEF_LAST_ARG)]])
        !           411:     m4_define( [[YYFARGS3]], [[($1 $2, $3 $4, $5 $6 M4_YY_DEF_LAST_ARG)]])
        !           412: ]])
1.1       deraadt   413:
1.13    ! tedu      414: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           415: [[
1.1       deraadt   416: /* Enter a start condition.  This macro really ought to take a parameter,
                    417:  * but we do it the disgusting crufty way forced on us by the ()-less
                    418:  * definition of BEGIN.
                    419:  */
1.13    ! tedu      420: #define BEGIN YY_G(yy_start) = 1 + 2 *
        !           421: ]])
1.1       deraadt   422:
1.13    ! tedu      423: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           424: [[
1.1       deraadt   425: /* Translate the current start state into a value that can be later handed
                    426:  * to BEGIN to return to the state.  The YYSTATE alias is for lex
                    427:  * compatibility.
                    428:  */
1.13    ! tedu      429: #define YY_START ((YY_G(yy_start) - 1) / 2)
1.1       deraadt   430: #define YYSTATE YY_START
1.13    ! tedu      431: ]])
1.1       deraadt   432:
1.13    ! tedu      433: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           434: [[
1.1       deraadt   435: /* Action number for EOF rule of a given start state. */
                    436: #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
1.13    ! tedu      437: ]])
1.1       deraadt   438:
1.13    ! tedu      439: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           440: [[
1.1       deraadt   441: /* Special action meaning "start processing a new file". */
1.13    ! tedu      442: #define YY_NEW_FILE yyrestart( yyin M4_YY_CALL_LAST_ARG )
        !           443: ]])
1.1       deraadt   444:
1.13    ! tedu      445: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           446: [[
1.1       deraadt   447: #define YY_END_OF_BUFFER_CHAR 0
1.13    ! tedu      448: ]])
1.1       deraadt   449:
                    450: /* Size of default input buffer. */
1.13    ! tedu      451: #ifndef YY_BUF_SIZE
1.1       deraadt   452: #define YY_BUF_SIZE 16384
1.13    ! tedu      453: #endif
        !           454:
        !           455: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           456: [[
        !           457: /* The state buf must be large enough to hold one state per character in the main buffer.
        !           458:  */
        !           459: #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
        !           460: ]])
        !           461:
1.1       deraadt   462:
1.13    ! tedu      463: #ifndef YY_TYPEDEF_YY_BUFFER_STATE
        !           464: #define YY_TYPEDEF_YY_BUFFER_STATE
1.1       deraadt   465: typedef struct yy_buffer_state *YY_BUFFER_STATE;
1.13    ! tedu      466: #endif
        !           467:
        !           468: #ifndef YY_TYPEDEF_YY_SIZE_T
        !           469: #define YY_TYPEDEF_YY_SIZE_T
        !           470: typedef size_t yy_size_t;
        !           471: #endif
1.1       deraadt   472:
1.13    ! tedu      473: %if-not-reentrant
        !           474: extern yy_size_t yyleng;
        !           475: %endif
        !           476:
        !           477: %if-c-only
        !           478: %if-not-reentrant
1.1       deraadt   479: extern FILE *yyin, *yyout;
1.13    ! tedu      480: %endif
        !           481: %endif
1.1       deraadt   482:
1.13    ! tedu      483: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           484: [[
1.1       deraadt   485: #define EOB_ACT_CONTINUE_SCAN 0
                    486: #define EOB_ACT_END_OF_FILE 1
                    487: #define EOB_ACT_LAST_MATCH 2
1.13    ! tedu      488: ]])
1.1       deraadt   489:
1.13    ! tedu      490: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           491: [[
        !           492:     m4_ifdef( [[M4_YY_USE_LINENO]],
        !           493:     [[
        !           494:     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
        !           495:      *       access to the local variable yy_act. Since yyless() is a macro, it would break
        !           496:      *       existing scanners that call yyless() from OUTSIDE yylex.
        !           497:      *       One obvious solution it to make yy_act a global. I tried that, and saw
        !           498:      *       a 5% performance hit in a non-yylineno scanner, because yy_act is
        !           499:      *       normally declared as a register variable-- so it is not worth it.
        !           500:      */
        !           501:     #define  YY_LESS_LINENO(n) \
        !           502:             do { \
        !           503:                 int yyl;\
        !           504:                 for ( yyl = n; yyl < yyleng; ++yyl )\
        !           505:                     if ( yytext[yyl] == '\n' )\
        !           506:                         --yylineno;\
        !           507:             }while(0)
        !           508:     #define YY_LINENO_REWIND_TO(dst) \
        !           509:             do {\
        !           510:                 const char *p;\
        !           511:                 for ( p = yy_cp-1; p >= (dst); --p)\
        !           512:                     if ( *p == '\n' )\
        !           513:                         --yylineno;\
        !           514:             }while(0)
        !           515:     ]],
        !           516:     [[
        !           517:     #define YY_LESS_LINENO(n)
        !           518:     #define YY_LINENO_REWIND_TO(ptr)
        !           519:     ]])
        !           520: ]])
        !           521:
        !           522: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           523: [[
        !           524: /* Return all but the first "n" matched characters back to the input stream. */
1.1       deraadt   525: #define yyless(n) \
                    526:        do \
                    527:                { \
                    528:                /* Undo effects of setting up yytext. */ \
1.13    ! tedu      529:         int yyless_macro_arg = (n); \
        !           530:         YY_LESS_LINENO(yyless_macro_arg);\
        !           531:                *yy_cp = YY_G(yy_hold_char); \
1.3       millert   532:                YY_RESTORE_YY_MORE_OFFSET \
1.13    ! tedu      533:                YY_G(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
1.1       deraadt   534:                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
                    535:                } \
                    536:        while ( 0 )
1.13    ! tedu      537: ]])
1.1       deraadt   538:
1.13    ! tedu      539: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           540: [[
        !           541: #define unput(c) yyunput( c, YY_G(yytext_ptr) M4_YY_CALL_LAST_ARG )
        !           542: ]])
1.1       deraadt   543:
1.13    ! tedu      544: #ifndef YY_STRUCT_YY_BUFFER_STATE
        !           545: #define YY_STRUCT_YY_BUFFER_STATE
1.1       deraadt   546: struct yy_buffer_state
                    547:        {
1.13    ! tedu      548: %if-c-only
1.1       deraadt   549:        FILE *yy_input_file;
1.13    ! tedu      550: %endif
        !           551:
        !           552: %if-c++-only
1.7       espie     553:        std::istream* yy_input_file;
1.13    ! tedu      554: %endif
        !           555:
1.1       deraadt   556:
                    557:        char *yy_ch_buf;                /* input buffer */
                    558:        char *yy_buf_pos;               /* current position in input buffer */
                    559:
                    560:        /* Size of input buffer in bytes, not including room for EOB
                    561:         * characters.
                    562:         */
                    563:        yy_size_t yy_buf_size;
                    564:
                    565:        /* Number of characters read into yy_ch_buf, not including EOB
                    566:         * characters.
                    567:         */
1.13    ! tedu      568:        yy_size_t yy_n_chars;
1.1       deraadt   569:
                    570:        /* Whether we "own" the buffer - i.e., we know we created it,
                    571:         * and can realloc() it to grow it, and should free() it to
                    572:         * delete it.
                    573:         */
                    574:        int yy_is_our_buffer;
                    575:
                    576:        /* Whether this is an "interactive" input source; if so, and
                    577:         * if we're using stdio for input, then we want to use getc()
                    578:         * instead of fread(), to make sure we stop fetching input after
                    579:         * each newline.
                    580:         */
                    581:        int yy_is_interactive;
                    582:
                    583:        /* Whether we're considered to be at the beginning of a line.
                    584:         * If so, '^' rules will be active on the next match, otherwise
                    585:         * not.
                    586:         */
                    587:        int yy_at_bol;
                    588:
1.13    ! tedu      589:     int yy_bs_lineno; /**< The line count. */
        !           590:     int yy_bs_column; /**< The column count. */
        !           591:
        !           592:
1.1       deraadt   593:        /* Whether to try to fill the input buffer when we reach the
                    594:         * end of it.
                    595:         */
                    596:        int yy_fill_buffer;
                    597:
                    598:        int yy_buffer_status;
1.13    ! tedu      599: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           600: [[
1.1       deraadt   601: #define YY_BUFFER_NEW 0
                    602: #define YY_BUFFER_NORMAL 1
                    603:        /* When an EOF's been seen but there's still some text to process
                    604:         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
                    605:         * shouldn't try reading from the input source any more.  We might
                    606:         * still have a bunch of tokens to match, though, because of
                    607:         * possible backing-up.
                    608:         *
                    609:         * When we actually see the EOF, we change the status to "new"
                    610:         * (via yyrestart()), so that the user can continue scanning by
                    611:         * just pointing yyin at a new input file.
                    612:         */
                    613: #define YY_BUFFER_EOF_PENDING 2
1.13    ! tedu      614: ]])
1.1       deraadt   615:        };
1.13    ! tedu      616: #endif /* !YY_STRUCT_YY_BUFFER_STATE */
1.1       deraadt   617:
1.13    ! tedu      618: %if-c-only Standard (non-C++) definition
        !           619: %not-for-header
        !           620: %if-not-reentrant
        !           621:
        !           622: /* Stack of input buffers. */
        !           623: static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
        !           624: static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
        !           625: static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
        !           626: %endif
        !           627: %ok-for-header
        !           628: %endif
1.1       deraadt   629:
1.13    ! tedu      630: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           631: [[
1.1       deraadt   632: /* We provide macros for accessing buffer states in case in the
                    633:  * future we want to put the buffer states in a more general
                    634:  * "scanner state".
1.13    ! tedu      635:  *
        !           636:  * Returns the top of the stack, or NULL.
        !           637:  */
        !           638: #define YY_CURRENT_BUFFER ( YY_G(yy_buffer_stack) \
        !           639:                           ? YY_G(yy_buffer_stack)[YY_G(yy_buffer_stack_top)] \
        !           640:                           : NULL)
        !           641: ]])
        !           642:
        !           643: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           644: [[
        !           645: /* Same as previous macro, but useful when we know that the buffer stack is not
        !           646:  * NULL or when we need an lvalue. For internal use only.
1.1       deraadt   647:  */
1.13    ! tedu      648: #define YY_CURRENT_BUFFER_LVALUE YY_G(yy_buffer_stack)[YY_G(yy_buffer_stack_top)]
        !           649: ]])
1.1       deraadt   650:
1.13    ! tedu      651: %if-c-only Standard (non-C++) definition
1.1       deraadt   652:
1.13    ! tedu      653: %if-not-reentrant
        !           654: %not-for-header
1.1       deraadt   655: /* yy_hold_char holds the character lost when yytext is formed. */
                    656: static char yy_hold_char;
1.13    ! tedu      657: static yy_size_t yy_n_chars;           /* number of characters read into yy_ch_buf */
        !           658: yy_size_t yyleng;
1.1       deraadt   659:
                    660: /* Points to current character in buffer. */
                    661: static char *yy_c_buf_p = (char *) 0;
1.13    ! tedu      662: static int yy_init = 0;                /* whether we need to initialize */
1.1       deraadt   663: static int yy_start = 0;       /* start state number */
                    664:
                    665: /* Flag which is used to allow yywrap()'s to do buffer switches
                    666:  * instead of setting up a fresh yyin.  A bit of a hack ...
                    667:  */
                    668: static int yy_did_buffer_switch_on_eof;
1.13    ! tedu      669: %ok-for-header
        !           670: %endif
1.1       deraadt   671:
1.13    ! tedu      672: void yyrestart M4_YY_PARAMS( FILE *input_file M4_YY_PROTO_LAST_ARG );
        !           673: void yy_switch_to_buffer M4_YY_PARAMS( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG );
        !           674: YY_BUFFER_STATE yy_create_buffer M4_YY_PARAMS( FILE *file, int size M4_YY_PROTO_LAST_ARG );
        !           675: void yy_delete_buffer M4_YY_PARAMS( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG );
        !           676: void yy_flush_buffer M4_YY_PARAMS( YY_BUFFER_STATE b M4_YY_PROTO_LAST_ARG );
        !           677: void yypush_buffer_state M4_YY_PARAMS( YY_BUFFER_STATE new_buffer M4_YY_PROTO_LAST_ARG );
        !           678: void yypop_buffer_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           679:
        !           680: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           681: [[
        !           682: static void yyensure_buffer_stack M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           683: static void yy_load_buffer_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           684: static void yy_init_buffer M4_YY_PARAMS( YY_BUFFER_STATE b, FILE *file M4_YY_PROTO_LAST_ARG );
        !           685: ]])
        !           686:
        !           687: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           688: [[
        !           689: #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG)
        !           690: ]])
        !           691:
        !           692: YY_BUFFER_STATE yy_scan_buffer M4_YY_PARAMS( char *base, yy_size_t size M4_YY_PROTO_LAST_ARG );
        !           693: YY_BUFFER_STATE yy_scan_string M4_YY_PARAMS( yyconst char *yy_str M4_YY_PROTO_LAST_ARG );
        !           694: YY_BUFFER_STATE yy_scan_bytes M4_YY_PARAMS( yyconst char *bytes, yy_size_t len M4_YY_PROTO_LAST_ARG );
        !           695:
        !           696: %endif
        !           697:
        !           698: void *yyalloc M4_YY_PARAMS( yy_size_t M4_YY_PROTO_LAST_ARG );
        !           699: void *yyrealloc M4_YY_PARAMS( void *, yy_size_t M4_YY_PROTO_LAST_ARG );
        !           700: void yyfree M4_YY_PARAMS( void * M4_YY_PROTO_LAST_ARG );
1.1       deraadt   701:
1.13    ! tedu      702: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           703: [[
1.1       deraadt   704: #define yy_new_buffer yy_create_buffer
1.13    ! tedu      705: ]])
1.1       deraadt   706:
1.13    ! tedu      707: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           708: [[
1.1       deraadt   709: #define yy_set_interactive(is_interactive) \
                    710:        { \
1.13    ! tedu      711:        if ( ! YY_CURRENT_BUFFER ){ \
        !           712:         yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG); \
        !           713:                YY_CURRENT_BUFFER_LVALUE =    \
        !           714:             yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG); \
        !           715:        } \
        !           716:        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
1.1       deraadt   717:        }
1.13    ! tedu      718: ]])
1.1       deraadt   719:
1.13    ! tedu      720: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           721: [[
1.1       deraadt   722: #define yy_set_bol(at_bol) \
                    723:        { \
1.13    ! tedu      724:        if ( ! YY_CURRENT_BUFFER ){\
        !           725:         yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG); \
        !           726:                YY_CURRENT_BUFFER_LVALUE =    \
        !           727:             yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG); \
        !           728:        } \
        !           729:        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
        !           730:        }
        !           731: ]])
        !           732:
        !           733: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           734: [[
        !           735: #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
        !           736: ]])
        !           737:
        !           738: %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here
        !           739:
        !           740: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           741: [[
        !           742: %% [1.5] DFA
        !           743: ]])
        !           744:
        !           745: %if-c-only Standard (non-C++) definition
        !           746:
        !           747: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           748: [[
        !           749: static yy_state_type yy_get_previous_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           750: static yy_state_type yy_try_NUL_trans M4_YY_PARAMS( yy_state_type current_state  M4_YY_PROTO_LAST_ARG);
        !           751: static int yy_get_next_buffer M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           752: static void yy_fatal_error M4_YY_PARAMS( yyconst char msg[] M4_YY_PROTO_LAST_ARG );
        !           753: ]])
1.1       deraadt   754:
1.13    ! tedu      755: %endif
1.1       deraadt   756:
1.13    ! tedu      757: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           758: [[
1.1       deraadt   759: /* Done after the current pattern has been matched and before the
                    760:  * corresponding action - sets up yytext.
                    761:  */
                    762: #define YY_DO_BEFORE_ACTION \
1.13    ! tedu      763:        YY_G(yytext_ptr) = yy_bp; \
        !           764: %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \
        !           765:        YY_G(yy_hold_char) = *yy_cp; \
1.1       deraadt   766:        *yy_cp = '\0'; \
1.13    ! tedu      767: %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \
        !           768:        YY_G(yy_c_buf_p) = yy_cp;
        !           769: ]])
        !           770:
        !           771: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           772: [[
        !           773: %% [4.0] data tables for the DFA and the user's section 1 definitions go here
        !           774: ]])
        !           775:
        !           776: m4_ifdef( [[M4_YY_IN_HEADER]], [[#ifdef YY_HEADER_EXPORT_START_CONDITIONS]])
        !           777: M4_YY_SC_DEFS
        !           778: m4_ifdef( [[M4_YY_IN_HEADER]], [[#endif]])
        !           779:
        !           780: m4_ifdef( [[M4_YY_NO_UNISTD_H]],,
        !           781: [[
        !           782: #ifndef YY_NO_UNISTD_H
        !           783: /* Special case for "unistd.h", since it is non-ANSI. We include it way
        !           784:  * down here because we want the user's section 1 to have been scanned first.
        !           785:  * The user has a chance to override it with an option.
        !           786:  */
        !           787: %if-c-only
        !           788: #include <unistd.h>
        !           789: %endif
        !           790: %if-c++-only
        !           791: #include <unistd.h>
        !           792: %endif
        !           793: #endif
        !           794: ]])
1.1       deraadt   795:
1.13    ! tedu      796: m4_ifdef( [[M4_EXTRA_TYPE_DEFS]],
        !           797: [[
        !           798: #define YY_EXTRA_TYPE M4_EXTRA_TYPE_DEFS
        !           799: ]],
        !           800: [[
        !           801: #ifndef YY_EXTRA_TYPE
        !           802: #define YY_EXTRA_TYPE void *
        !           803: #endif
        !           804: ]]
        !           805: )
        !           806:
        !           807: %if-c-only Reentrant structure and macros (non-C++).
        !           808: %if-reentrant
        !           809:
        !           810: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           811: [[
        !           812: /* Holds the entire state of the reentrant scanner. */
        !           813: struct yyguts_t
        !           814:     {
        !           815:
        !           816:     /* User-defined. Not touched by flex. */
        !           817:     YY_EXTRA_TYPE yyextra_r;
        !           818:
        !           819:     /* The rest are the same as the globals declared in the non-reentrant scanner. */
        !           820:     FILE *yyin_r, *yyout_r;
        !           821:     size_t yy_buffer_stack_top; /**< index of top of stack. */
        !           822:     size_t yy_buffer_stack_max; /**< capacity of stack. */
        !           823:     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
        !           824:     char yy_hold_char;
        !           825:     yy_size_t yy_n_chars;
        !           826:     yy_size_t yyleng_r;
        !           827:     char *yy_c_buf_p;
        !           828:     int yy_init;
        !           829:     int yy_start;
        !           830:     int yy_did_buffer_switch_on_eof;
        !           831:     int yy_start_stack_ptr;
        !           832:     int yy_start_stack_depth;
        !           833:     int *yy_start_stack;
        !           834:     yy_state_type yy_last_accepting_state;
        !           835:     char* yy_last_accepting_cpos;
        !           836:
        !           837:     int yylineno_r;
        !           838:     int yy_flex_debug_r;
        !           839:
        !           840: m4_ifdef( [[M4_YY_USES_REJECT]],
        !           841: [[
        !           842:     yy_state_type *yy_state_buf;
        !           843:     yy_state_type *yy_state_ptr;
        !           844:     char *yy_full_match;
        !           845:     int yy_lp;
        !           846:
        !           847:     /* These are only needed for trailing context rules,
        !           848:      * but there's no conditional variable for that yet. */
        !           849:     int yy_looking_for_trail_begin;
        !           850:     int yy_full_lp;
        !           851:     int *yy_full_state;
        !           852: ]])
        !           853:
        !           854: m4_ifdef( [[M4_YY_TEXT_IS_ARRAY]],
        !           855: [[
        !           856:     char yytext_r[YYLMAX];
        !           857:     char *yytext_ptr;
        !           858:     int yy_more_offset;
        !           859:     int yy_prev_more_offset;
        !           860: ]],
        !           861: [[
        !           862:     char *yytext_r;
        !           863:     int yy_more_flag;
        !           864:     int yy_more_len;
        !           865: ]])
        !           866:
        !           867: m4_ifdef( [[M4_YY_BISON_LVAL]],
        !           868: [[
        !           869:     YYSTYPE * yylval_r;
        !           870: ]])
        !           871:
        !           872: m4_ifdef( [[<M4_YY_BISON_LLOC>]],
        !           873: [[
        !           874:     YYLTYPE * yylloc_r;
        !           875: ]])
        !           876:
        !           877:     }; /* end struct yyguts_t */
        !           878: ]])
        !           879:
        !           880:
        !           881: %if-c-only
        !           882: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           883: [[
        !           884: static int yy_init_globals M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           885: ]])
        !           886: %endif
        !           887:
        !           888: %if-reentrant
        !           889:
        !           890: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !           891: [[
        !           892:     m4_ifdef( [[M4_YY_BISON_LVAL]],
        !           893:     [[
        !           894:     /* This must go here because YYSTYPE and YYLTYPE are included
        !           895:      * from bison output in section 1.*/
        !           896:     #    define yylval YY_G(yylval_r)
        !           897:     ]])
        !           898:
        !           899:     m4_ifdef( [[<M4_YY_BISON_LLOC>]],
        !           900:     [[
        !           901:     #    define yylloc YY_G(yylloc_r)
        !           902:     ]])
        !           903: ]])
        !           904:
        !           905: int yylex_init M4_YY_PARAMS(yyscan_t* scanner);
        !           906:
        !           907: int yylex_init_extra M4_YY_PARAMS( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
        !           908:
        !           909: %endif
        !           910:
        !           911: %endif End reentrant structures and macros.
        !           912:
        !           913: /* Accessor methods to globals.
        !           914:    These are made visible to non-reentrant scanners for convenience. */
        !           915:
        !           916: m4_ifdef( [[M4_YY_NO_DESTROY]],,
        !           917: [[
        !           918: int yylex_destroy M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           919: ]])
        !           920:
        !           921: m4_ifdef( [[M4_YY_NO_GET_DEBUG]],,
        !           922: [[
        !           923: int yyget_debug M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           924: ]])
        !           925:
        !           926: m4_ifdef( [[M4_YY_NO_SET_DEBUG]],,
        !           927: [[
        !           928: void yyset_debug M4_YY_PARAMS( int debug_flag M4_YY_PROTO_LAST_ARG );
        !           929: ]])
        !           930:
        !           931: m4_ifdef( [[M4_YY_NO_GET_EXTRA]],,
        !           932: [[
        !           933: YY_EXTRA_TYPE yyget_extra M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           934: ]])
        !           935:
        !           936: m4_ifdef( [[M4_YY_NO_SET_EXTRA]],,
        !           937: [[
        !           938: void yyset_extra M4_YY_PARAMS( YY_EXTRA_TYPE user_defined M4_YY_PROTO_LAST_ARG );
        !           939: ]])
        !           940:
        !           941: m4_ifdef( [[M4_YY_NO_GET_IN]],,
        !           942: [[
        !           943: FILE *yyget_in M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           944: ]])
        !           945:
        !           946: m4_ifdef( [[M4_YY_NO_SET_IN]],,
        !           947: [[
        !           948: void yyset_in  M4_YY_PARAMS( FILE * in_str M4_YY_PROTO_LAST_ARG );
        !           949: ]])
        !           950:
        !           951: m4_ifdef( [[M4_YY_NO_GET_OUT]],,
        !           952: [[
        !           953: FILE *yyget_out M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           954: ]])
        !           955:
        !           956: m4_ifdef( [[M4_YY_NO_SET_OUT]],,
        !           957: [[
        !           958: void yyset_out  M4_YY_PARAMS( FILE * out_str M4_YY_PROTO_LAST_ARG );
        !           959: ]])
        !           960:
        !           961: m4_ifdef( [[M4_YY_NO_GET_LENG]],,
        !           962: [[
        !           963: yy_size_t yyget_leng M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           964: ]])
        !           965:
        !           966: m4_ifdef( [[M4_YY_NO_GET_TEXT]],,
        !           967: [[
        !           968: char *yyget_text M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           969: ]])
        !           970:
        !           971: m4_ifdef( [[M4_YY_NO_GET_LINENO]],,
        !           972: [[
        !           973: int yyget_lineno M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           974: ]])
        !           975:
        !           976: m4_ifdef( [[M4_YY_NO_SET_LINENO]],,
        !           977: [[
        !           978: void yyset_lineno M4_YY_PARAMS( int line_number M4_YY_PROTO_LAST_ARG );
        !           979: ]])
        !           980:
        !           981: m4_ifdef( [[M4_YY_REENTRANT]],
        !           982: [[
        !           983: m4_ifdef( [[M4_YY_NO_GET_COLUMN]],,
        !           984: [[
        !           985: int yyget_column  M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !           986: ]])
        !           987: ]])
        !           988:
        !           989: m4_ifdef( [[M4_YY_REENTRANT]],
        !           990: [[
        !           991: m4_ifdef( [[M4_YY_NO_SET_COLUMN]],,
        !           992: [[
        !           993: void yyset_column M4_YY_PARAMS( int column_no M4_YY_PROTO_LAST_ARG );
        !           994: ]])
        !           995: ]])
        !           996:
        !           997: %if-bison-bridge
        !           998: m4_ifdef( [[M4_YY_NO_GET_LVAL]],,
        !           999: [[
        !          1000: YYSTYPE * yyget_lval M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !          1001: ]])
        !          1002:
        !          1003: void yyset_lval M4_YY_PARAMS( YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG );
        !          1004:
        !          1005: m4_ifdef( [[<M4_YY_BISON_LLOC>]],
        !          1006: [[
        !          1007:     m4_ifdef( [[M4_YY_NO_GET_LLOC]],,
        !          1008:     [[
        !          1009:        YYLTYPE *yyget_lloc M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !          1010:     ]])
        !          1011:
        !          1012:     m4_ifdef( [[M4_YY_NO_SET_LLOC]],,
        !          1013:     [[
        !          1014:         void yyset_lloc M4_YY_PARAMS( YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG );
        !          1015:     ]])
        !          1016: ]])
        !          1017: %endif
1.1       deraadt  1018:
                   1019: /* Macros after this point can all be overridden by user definitions in
                   1020:  * section 1.
                   1021:  */
                   1022:
                   1023: #ifndef YY_SKIP_YYWRAP
                   1024: #ifdef __cplusplus
1.13    ! tedu     1025: extern "C" int yywrap M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
1.1       deraadt  1026: #else
1.13    ! tedu     1027: extern int yywrap M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
1.1       deraadt  1028: #endif
                   1029: #endif
                   1030:
1.13    ! tedu     1031: %not-for-header
        !          1032:     m4_ifdef( [[M4_YY_NO_UNPUT]],,
        !          1033:     [[
        !          1034:     static void yyunput M4_YY_PARAMS( int c, char *buf_ptr  M4_YY_PROTO_LAST_ARG);
        !          1035:     ]])
        !          1036: %ok-for-header
        !          1037: %endif
1.1       deraadt  1038:
                   1039: #ifndef yytext_ptr
1.13    ! tedu     1040: static void yy_flex_strncpy M4_YY_PARAMS( char *, yyconst char *, int M4_YY_PROTO_LAST_ARG);
1.1       deraadt  1041: #endif
                   1042:
1.3       millert  1043: #ifdef YY_NEED_STRLEN
1.13    ! tedu     1044: static int yy_flex_strlen M4_YY_PARAMS( yyconst char * M4_YY_PROTO_LAST_ARG);
1.3       millert  1045: #endif
                   1046:
1.1       deraadt  1047: #ifndef YY_NO_INPUT
1.13    ! tedu     1048: %if-c-only Standard (non-C++) definition
        !          1049: %not-for-header
1.1       deraadt  1050: #ifdef __cplusplus
1.13    ! tedu     1051: static int yyinput M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
1.1       deraadt  1052: #else
1.13    ! tedu     1053: static int input M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
1.1       deraadt  1054: #endif
1.13    ! tedu     1055: %ok-for-header
        !          1056: %endif
1.1       deraadt  1057: #endif
                   1058:
                   1059:
1.13    ! tedu     1060: %if-c-only
        !          1061: %# TODO: This is messy.
        !          1062: m4_ifdef( [[M4_YY_STACK_USED]],
        !          1063: [[
        !          1064:
        !          1065: m4_ifdef( [[M4_YY_NOT_REENTRANT]],
        !          1066: [[
        !          1067:     m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          1068:     [[
        !          1069:         static int yy_start_stack_ptr = 0;
        !          1070:         static int yy_start_stack_depth = 0;
        !          1071:         static int *yy_start_stack = NULL;
        !          1072:     ]])
        !          1073: ]])
        !          1074:
        !          1075: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          1076: [[
        !          1077:     m4_ifdef( [[M4_YY_NO_PUSH_STATE]],,
        !          1078:     [[
        !          1079:     static void yy_push_state M4_YY_PARAMS( int new_state M4_YY_PROTO_LAST_ARG);
        !          1080:     ]])
        !          1081:     m4_ifdef( [[M4_YY_NO_POP_STATE]],,
        !          1082:     [[
        !          1083:     static void yy_pop_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !          1084:     ]])
        !          1085:     m4_ifdef( [[M4_YY_NO_TOP_STATE]],,
        !          1086:     [[
        !          1087:     static int yy_top_state M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
        !          1088:     ]])
        !          1089: ]])
        !          1090:
        !          1091: ]],
        !          1092: [[
        !          1093: m4_define( [[M4_YY_NO_PUSH_STATE]])
        !          1094: m4_define( [[M4_YY_NO_POP_STATE]])
        !          1095: m4_define( [[M4_YY_NO_TOP_STATE]])
        !          1096: ]])
        !          1097: %endif
1.1       deraadt  1098:
                   1099: /* Amount of stuff to slurp up with each read. */
                   1100: #ifndef YY_READ_BUF_SIZE
                   1101: #define YY_READ_BUF_SIZE 8192
                   1102: #endif
                   1103:
1.13    ! tedu     1104: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          1105: [[
1.1       deraadt  1106: /* Copy whatever the last rule matched to the standard output. */
                   1107: #ifndef ECHO
1.13    ! tedu     1108: %if-c-only Standard (non-C++) definition
1.1       deraadt  1109: /* This used to be an fputs(), but since the string might contain NUL's,
                   1110:  * we now use fwrite().
                   1111:  */
1.13    ! tedu     1112: #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
        !          1113: %endif
        !          1114: %if-c++-only C++ definition
1.1       deraadt  1115: #define ECHO LexerOutput( yytext, yyleng )
1.13    ! tedu     1116: %endif
1.1       deraadt  1117: #endif
1.13    ! tedu     1118: ]])
1.1       deraadt  1119:
1.13    ! tedu     1120: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          1121: [[
1.1       deraadt  1122: /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
                   1123:  * is returned in "result".
                   1124:  */
                   1125: #ifndef YY_INPUT
                   1126: #define YY_INPUT(buf,result,max_size) \
1.13    ! tedu     1127: %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \
        !          1128: \
        !          1129: %if-c++-only C++ definition \
1.1       deraadt  1130:        if ( (result = LexerInput( (char *) buf, max_size )) < 0 ) \
                   1131:                YY_FATAL_ERROR( "input in flex scanner failed" );
1.13    ! tedu     1132: %endif
        !          1133:
1.1       deraadt  1134: #endif
1.13    ! tedu     1135: ]])
1.1       deraadt  1136:
1.13    ! tedu     1137: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          1138: [[
1.1       deraadt  1139: /* No semi-colon after return; correct usage is to write "yyterminate();" -
                   1140:  * we don't want an extra ';' after the "return" because that will cause
                   1141:  * some compilers to complain about unreachable statements.
                   1142:  */
                   1143: #ifndef yyterminate
                   1144: #define yyterminate() return YY_NULL
                   1145: #endif
1.13    ! tedu     1146: ]])
1.1       deraadt  1147:
                   1148: /* Number of entries by which start-condition stack grows. */
                   1149: #ifndef YY_START_STACK_INCR
                   1150: #define YY_START_STACK_INCR 25
                   1151: #endif
                   1152:
1.13    ! tedu     1153: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          1154: [[
1.1       deraadt  1155: /* Report a fatal error. */
                   1156: #ifndef YY_FATAL_ERROR
1.13    ! tedu     1157: %if-c-only
        !          1158: #define YY_FATAL_ERROR(msg) yy_fatal_error( msg M4_YY_CALL_LAST_ARG)
        !          1159: %endif
        !          1160: %if-c++-only
1.1       deraadt  1161: #define YY_FATAL_ERROR(msg) LexerError( msg )
1.13    ! tedu     1162: %endif
1.1       deraadt  1163: #endif
1.13    ! tedu     1164: ]])
        !          1165:
        !          1166: %if-tables-serialization structures and prototypes
        !          1167: m4preproc_include(`tables_shared.h')
        !          1168:
        !          1169: /* Load the DFA tables from the given stream.  */
        !          1170: int yytables_fload M4_YY_PARAMS(FILE * fp M4_YY_PROTO_LAST_ARG);
        !          1171:
        !          1172: /* Unload the tables from memory. */
        !          1173: int yytables_destroy M4_YY_PARAMS(M4_YY_PROTO_ONLY_ARG);
        !          1174: %not-for-header
        !          1175:
        !          1176: /** Describes a mapping from a serialized table id to its deserialized state in
        !          1177:  * this scanner.  This is the bridge between our "generic" deserialization code
        !          1178:  * and the specifics of this scanner.
        !          1179:  */
        !          1180: struct yytbl_dmap {
        !          1181:        enum yytbl_id dm_id;/**< table identifier */
        !          1182:        void  **dm_arr;         /**< address of pointer to store the deserialized table. */
        !          1183:        size_t  dm_sz;          /**< local sizeof() each element in table. */
        !          1184: };
        !          1185:
        !          1186: /** A {0,0,0}-terminated list of structs, forming the map */
        !          1187: static struct yytbl_dmap yydmap[] =
        !          1188: {
        !          1189: %tables-yydmap generated elements
        !          1190:     {0,0,0}
        !          1191: };
        !          1192:
        !          1193: /** A tables-reader object to maintain some state in the read. */
        !          1194: struct yytbl_reader {
        !          1195:     FILE * fp; /**< input stream */
        !          1196:     flex_uint32_t bread; /**< bytes read since beginning of current tableset */
        !          1197: };
        !          1198:
        !          1199: %endif
        !          1200: /* end tables serialization structures and prototypes */
        !          1201:
        !          1202: %ok-for-header
1.1       deraadt  1203:
                   1204: /* Default declaration of generated scanner - a define so the user can
                   1205:  * easily add parameters.
                   1206:  */
                   1207: #ifndef YY_DECL
1.13    ! tedu     1208: #define YY_DECL_IS_OURS 1
        !          1209: %if-c-only Standard (non-C++) definition
        !          1210:
        !          1211:
        !          1212: m4_define( [[M4_YY_LEX_PROTO]], [[M4_YY_PARAMS(M4_YY_PROTO_ONLY_ARG)]])
        !          1213: m4_define( [[M4_YY_LEX_DECLARATION]], [[YYFARGS0(void)]])
        !          1214:
        !          1215: m4_ifdef( [[M4_YY_BISON_LVAL]],
        !          1216: [[
        !          1217:     m4_dnl  The bison pure parser is used. Redefine yylex to
        !          1218:     m4_dnl  accept the lval parameter.
        !          1219:
        !          1220:     m4_define( [[M4_YY_LEX_PROTO]], [[\]]
        !          1221:                [[M4_YY_PARAMS(YYSTYPE * yylval_param M4_YY_PROTO_LAST_ARG)]])
        !          1222:     m4_define( [[M4_YY_LEX_DECLARATION]], [[\]]
        !          1223:                [[YYFARGS1(YYSTYPE *,yylval_param)]])
        !          1224: ]])
        !          1225:
        !          1226: m4_ifdef( [[<M4_YY_BISON_LLOC>]],
        !          1227: [[
        !          1228:     m4_dnl  Locations are used. yylex should also accept the ylloc parameter.
        !          1229:
        !          1230:     m4_define( [[M4_YY_LEX_PROTO]], [[\]]
        !          1231:                [[M4_YY_PARAMS(YYSTYPE * yylval_param, YYLTYPE * yylloc_param M4_YY_PROTO_LAST_ARG)]])
        !          1232:     m4_define( [[M4_YY_LEX_DECLARATION]], [[\]]
        !          1233:                [[YYFARGS2(YYSTYPE *,yylval_param, YYLTYPE *,yylloc_param)]])
        !          1234: ]])
        !          1235:
        !          1236: extern int yylex M4_YY_LEX_PROTO;
        !          1237:
        !          1238: #define YY_DECL int yylex M4_YY_LEX_DECLARATION
        !          1239: %endif
        !          1240: %if-c++-only C++ definition
1.1       deraadt  1241: #define YY_DECL int yyFlexLexer::yylex()
1.13    ! tedu     1242: %endif
        !          1243: #endif /* !YY_DECL */
1.1       deraadt  1244:
1.13    ! tedu     1245: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          1246: [[
1.1       deraadt  1247: /* Code executed at the beginning of each rule, after yytext and yyleng
                   1248:  * have been set up.
                   1249:  */
                   1250: #ifndef YY_USER_ACTION
                   1251: #define YY_USER_ACTION
                   1252: #endif
1.13    ! tedu     1253: ]])
1.1       deraadt  1254:
1.13    ! tedu     1255: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          1256: [[
1.1       deraadt  1257: /* Code executed at the end of each rule. */
                   1258: #ifndef YY_BREAK
                   1259: #define YY_BREAK break;
                   1260: #endif
1.13    ! tedu     1261: ]])
1.1       deraadt  1262:
1.13    ! tedu     1263: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          1264: [[
        !          1265: %% [6.0] YY_RULE_SETUP definition goes here
        !          1266: ]])
1.1       deraadt  1267:
1.13    ! tedu     1268: %not-for-header
        !          1269: /** The main scanner function which does all the work.
        !          1270:  */
1.1       deraadt  1271: YY_DECL
1.13    ! tedu     1272: {
        !          1273:        yy_state_type yy_current_state;
        !          1274:        char *yy_cp, *yy_bp;
        !          1275:        int yy_act;
        !          1276:     M4_YY_DECL_GUTS_VAR();
        !          1277:
        !          1278: m4_ifdef( [[M4_YY_NOT_REENTRANT]],
        !          1279: [[
        !          1280:     m4_ifdef( [[M4_YY_BISON_LVAL]],
        !          1281:     [[
        !          1282:         YYSTYPE * yylval;
        !          1283:     ]])
        !          1284:     m4_ifdef( [[<M4_YY_BISON_LLOC>]],
        !          1285:     [[
        !          1286:         YYLTYPE * yylloc;
        !          1287:     ]])
        !          1288: ]])
        !          1289:
        !          1290: m4_ifdef( [[M4_YY_BISON_LVAL]],
        !          1291: [[
        !          1292:     yylval = yylval_param;
        !          1293: ]])
        !          1294:
        !          1295: m4_ifdef( [[<M4_YY_BISON_LLOC>]],
        !          1296: [[
        !          1297:     yylloc = yylloc_param;
        !          1298: ]])
1.1       deraadt  1299:
1.13    ! tedu     1300:        if ( !YY_G(yy_init) )
1.1       deraadt  1301:                {
1.13    ! tedu     1302:                YY_G(yy_init) = 1;
1.1       deraadt  1303:
                   1304: #ifdef YY_USER_INIT
                   1305:                YY_USER_INIT;
                   1306: #endif
                   1307:
1.13    ! tedu     1308: m4_ifdef( [[M4_YY_USES_REJECT]],
        !          1309: [[
        !          1310:         /* Create the reject buffer large enough to save one state per allowed character. */
        !          1311:         if ( ! YY_G(yy_state_buf) )
        !          1312:             YY_G(yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE  M4_YY_CALL_LAST_ARG);
        !          1313:             if ( ! YY_G(yy_state_buf) )
        !          1314:                 YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
        !          1315: ]])
        !          1316:
        !          1317:                if ( ! YY_G(yy_start) )
        !          1318:                        YY_G(yy_start) = 1;     /* first start state */
1.1       deraadt  1319:
                   1320:                if ( ! yyin )
1.13    ! tedu     1321: %if-c-only
1.1       deraadt  1322:                        yyin = stdin;
1.13    ! tedu     1323: %endif
        !          1324: %if-c++-only
        !          1325:                        yyin = & std::cin;
        !          1326: %endif
1.1       deraadt  1327:
                   1328:                if ( ! yyout )
1.13    ! tedu     1329: %if-c-only
1.1       deraadt  1330:                        yyout = stdout;
1.13    ! tedu     1331: %endif
        !          1332: %if-c++-only
        !          1333:                        yyout = & std::cout;
        !          1334: %endif
        !          1335:
        !          1336:                if ( ! YY_CURRENT_BUFFER ) {
        !          1337:                        yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG);
        !          1338:                        YY_CURRENT_BUFFER_LVALUE =
        !          1339:                                yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG);
        !          1340:                }
1.1       deraadt  1341:
1.13    ! tedu     1342:                yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );
1.1       deraadt  1343:                }
                   1344:
1.13    ! tedu     1345:        {
        !          1346: %% [7.0] user's declarations go here
        !          1347:
1.1       deraadt  1348:        while ( 1 )             /* loops until end-of-file is reached */
                   1349:                {
1.13    ! tedu     1350: %% [8.0] yymore()-related code goes here
        !          1351:                yy_cp = YY_G(yy_c_buf_p);
1.1       deraadt  1352:
                   1353:                /* Support of yytext. */
1.13    ! tedu     1354:                *yy_cp = YY_G(yy_hold_char);
1.1       deraadt  1355:
                   1356:                /* yy_bp points to the position in yy_ch_buf of the start of
                   1357:                 * the current run.
                   1358:                 */
                   1359:                yy_bp = yy_cp;
                   1360:
1.13    ! tedu     1361: %% [9.0] code to set up and find next match goes here
1.1       deraadt  1362:
                   1363: yy_find_action:
1.13    ! tedu     1364: %% [10.0] code to find the action number goes here
1.1       deraadt  1365:
                   1366:                YY_DO_BEFORE_ACTION;
                   1367:
1.13    ! tedu     1368: %% [11.0] code for yylineno update goes here
1.1       deraadt  1369:
                   1370: do_action:     /* This label is used only to access EOF actions. */
                   1371:
1.13    ! tedu     1372: %% [12.0] debug code goes here
1.1       deraadt  1373:
                   1374:                switch ( yy_act )
                   1375:        { /* beginning of action switch */
1.13    ! tedu     1376: %% [13.0] actions go here
1.1       deraadt  1377:
                   1378:        case YY_END_OF_BUFFER:
                   1379:                {
                   1380:                /* Amount of text matched not including the EOB char. */
1.13    ! tedu     1381:                int yy_amount_of_matched_text = (int) (yy_cp - YY_G(yytext_ptr)) - 1;
1.1       deraadt  1382:
                   1383:                /* Undo the effects of YY_DO_BEFORE_ACTION. */
1.13    ! tedu     1384:                *yy_cp = YY_G(yy_hold_char);
1.3       millert  1385:                YY_RESTORE_YY_MORE_OFFSET
1.1       deraadt  1386:
1.13    ! tedu     1387:                if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1.1       deraadt  1388:                        {
                   1389:                        /* We're scanning a new file or input source.  It's
                   1390:                         * possible that this happened because the user
                   1391:                         * just pointed yyin at a new source and called
                   1392:                         * yylex().  If so, then we have to assure
1.13    ! tedu     1393:                         * consistency between YY_CURRENT_BUFFER and our
1.1       deraadt  1394:                         * globals.  Here is the right place to do so, because
                   1395:                         * this is the first action (other than possibly a
                   1396:                         * back-up) that will match for the new input source.
                   1397:                         */
1.13    ! tedu     1398:                        YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
        !          1399:                        YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
        !          1400:                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1.1       deraadt  1401:                        }
                   1402:
                   1403:                /* Note that here we test for yy_c_buf_p "<=" to the position
                   1404:                 * of the first EOB in the buffer, since yy_c_buf_p will
                   1405:                 * already have been incremented past the NUL character
                   1406:                 * (since all states make transitions on EOB to the
                   1407:                 * end-of-buffer state).  Contrast this with the test
                   1408:                 * in input().
                   1409:                 */
1.13    ! tedu     1410:                if ( YY_G(yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)] )
1.1       deraadt  1411:                        { /* This was really a NUL. */
                   1412:                        yy_state_type yy_next_state;
                   1413:
1.13    ! tedu     1414:                        YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + yy_amount_of_matched_text;
1.1       deraadt  1415:
1.13    ! tedu     1416:                        yy_current_state = yy_get_previous_state( M4_YY_CALL_ONLY_ARG );
1.1       deraadt  1417:
                   1418:                        /* Okay, we're now positioned to make the NUL
                   1419:                         * transition.  We couldn't have
                   1420:                         * yy_get_previous_state() go ahead and do it
                   1421:                         * for us because it doesn't know how to deal
                   1422:                         * with the possibility of jamming (and we don't
                   1423:                         * want to build jamming into it because then it
                   1424:                         * will run more slowly).
                   1425:                         */
                   1426:
1.13    ! tedu     1427:                        yy_next_state = yy_try_NUL_trans( yy_current_state M4_YY_CALL_LAST_ARG);
1.1       deraadt  1428:
1.13    ! tedu     1429:                        yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ;
1.1       deraadt  1430:
                   1431:                        if ( yy_next_state )
                   1432:                                {
                   1433:                                /* Consume the NUL. */
1.13    ! tedu     1434:                                yy_cp = ++YY_G(yy_c_buf_p);
1.1       deraadt  1435:                                yy_current_state = yy_next_state;
                   1436:                                goto yy_match;
                   1437:                                }
                   1438:
                   1439:                        else
                   1440:                                {
1.13    ! tedu     1441: %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here
1.1       deraadt  1442:                                goto yy_find_action;
                   1443:                                }
                   1444:                        }
                   1445:
1.13    ! tedu     1446:                else switch ( yy_get_next_buffer( M4_YY_CALL_ONLY_ARG ) )
1.1       deraadt  1447:                        {
                   1448:                        case EOB_ACT_END_OF_FILE:
                   1449:                                {
1.13    ! tedu     1450:                                YY_G(yy_did_buffer_switch_on_eof) = 0;
1.1       deraadt  1451:
1.13    ! tedu     1452:                                if ( yywrap( M4_YY_CALL_ONLY_ARG ) )
1.1       deraadt  1453:                                        {
                   1454:                                        /* Note: because we've taken care in
                   1455:                                         * yy_get_next_buffer() to have set up
                   1456:                                         * yytext, we can now set up
                   1457:                                         * yy_c_buf_p so that if some total
                   1458:                                         * hoser (like flex itself) wants to
                   1459:                                         * call the scanner after we return the
                   1460:                                         * YY_NULL, it'll still work - another
                   1461:                                         * YY_NULL will get returned.
                   1462:                                         */
1.13    ! tedu     1463:                                        YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + YY_MORE_ADJ;
1.1       deraadt  1464:
                   1465:                                        yy_act = YY_STATE_EOF(YY_START);
                   1466:                                        goto do_action;
                   1467:                                        }
                   1468:
                   1469:                                else
                   1470:                                        {
1.13    ! tedu     1471:                                        if ( ! YY_G(yy_did_buffer_switch_on_eof) )
1.1       deraadt  1472:                                                YY_NEW_FILE;
                   1473:                                        }
                   1474:                                break;
                   1475:                                }
                   1476:
                   1477:                        case EOB_ACT_CONTINUE_SCAN:
1.13    ! tedu     1478:                                YY_G(yy_c_buf_p) =
        !          1479:                                        YY_G(yytext_ptr) + yy_amount_of_matched_text;
1.1       deraadt  1480:
1.13    ! tedu     1481:                                yy_current_state = yy_get_previous_state( M4_YY_CALL_ONLY_ARG );
1.1       deraadt  1482:
1.13    ! tedu     1483:                                yy_cp = YY_G(yy_c_buf_p);
        !          1484:                                yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ;
1.1       deraadt  1485:                                goto yy_match;
                   1486:
                   1487:                        case EOB_ACT_LAST_MATCH:
1.13    ! tedu     1488:                                YY_G(yy_c_buf_p) =
        !          1489:                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)];
1.1       deraadt  1490:
1.13    ! tedu     1491:                                yy_current_state = yy_get_previous_state( M4_YY_CALL_ONLY_ARG );
1.1       deraadt  1492:
1.13    ! tedu     1493:                                yy_cp = YY_G(yy_c_buf_p);
        !          1494:                                yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ;
1.1       deraadt  1495:                                goto yy_find_action;
                   1496:                        }
                   1497:                break;
                   1498:                }
                   1499:
                   1500:        default:
                   1501:                YY_FATAL_ERROR(
                   1502:                        "fatal flex scanner internal error--no action found" );
                   1503:        } /* end of action switch */
                   1504:                } /* end of scanning one token */
1.13    ! tedu     1505:        } /* end of user's declarations */
        !          1506: } /* end of yylex */
        !          1507: %ok-for-header
        !          1508:
        !          1509: %if-c++-only
        !          1510: %not-for-header
        !          1511: /* The contents of this function are C++ specific, so the YY_G macro is not used.
        !          1512:  */
1.7       espie    1513: yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout )
1.13    ! tedu     1514: {
1.1       deraadt  1515:        yyin = arg_yyin;
                   1516:        yyout = arg_yyout;
                   1517:        yy_c_buf_p = 0;
1.13    ! tedu     1518:        yy_init = 0;
1.1       deraadt  1519:        yy_start = 0;
                   1520:        yy_flex_debug = 0;
                   1521:        yylineno = 1;   // this will only get updated if %option yylineno
                   1522:
                   1523:        yy_did_buffer_switch_on_eof = 0;
                   1524:
                   1525:        yy_looking_for_trail_begin = 0;
                   1526:        yy_more_flag = 0;
                   1527:        yy_more_len = 0;
1.3       millert  1528:        yy_more_offset = yy_prev_more_offset = 0;
1.1       deraadt  1529:
                   1530:        yy_start_stack_ptr = yy_start_stack_depth = 0;
1.13    ! tedu     1531:        yy_start_stack = NULL;
1.1       deraadt  1532:
1.13    ! tedu     1533:        yy_buffer_stack = 0;
        !          1534:        yy_buffer_stack_top = 0;
        !          1535:        yy_buffer_stack_max = 0;
1.1       deraadt  1536:
1.13    ! tedu     1537:
        !          1538: m4_ifdef( [[M4_YY_USES_REJECT]],
        !          1539: [[
        !          1540:        yy_state_buf = new yy_state_type[YY_STATE_BUF_SIZE];
        !          1541: ]],
        !          1542: [[
1.1       deraadt  1543:        yy_state_buf = 0;
1.13    ! tedu     1544: ]])
        !          1545: }
1.1       deraadt  1546:
1.13    ! tedu     1547: /* The contents of this function are C++ specific, so the YY_G macro is not used.
        !          1548:  */
1.1       deraadt  1549: yyFlexLexer::~yyFlexLexer()
1.13    ! tedu     1550: {
        !          1551:        delete [] yy_state_buf;
        !          1552:        yyfree( yy_start_stack M4_YY_CALL_LAST_ARG );
        !          1553:        yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);
        !          1554:        yyfree( yy_buffer_stack M4_YY_CALL_LAST_ARG );
        !          1555: }
1.1       deraadt  1556:
1.13    ! tedu     1557: /* The contents of this function are C++ specific, so the YY_G macro is not used.
        !          1558:  */
1.7       espie    1559: void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out )
1.13    ! tedu     1560: {
1.1       deraadt  1561:        if ( new_in )
                   1562:                {
1.13    ! tedu     1563:                yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);
        !          1564:                yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE  M4_YY_CALL_LAST_ARG) M4_YY_CALL_LAST_ARG);
1.1       deraadt  1565:                }
                   1566:
                   1567:        if ( new_out )
                   1568:                yyout = new_out;
1.13    ! tedu     1569: }
1.1       deraadt  1570:
                   1571: #ifdef YY_INTERACTIVE
                   1572: int yyFlexLexer::LexerInput( char* buf, int /* max_size */ )
                   1573: #else
                   1574: int yyFlexLexer::LexerInput( char* buf, int max_size )
                   1575: #endif
1.13    ! tedu     1576: {
1.1       deraadt  1577:        if ( yyin->eof() || yyin->fail() )
                   1578:                return 0;
                   1579:
                   1580: #ifdef YY_INTERACTIVE
                   1581:        yyin->get( buf[0] );
                   1582:
                   1583:        if ( yyin->eof() )
                   1584:                return 0;
                   1585:
                   1586:        if ( yyin->bad() )
                   1587:                return -1;
                   1588:
                   1589:        return 1;
                   1590:
                   1591: #else
                   1592:        (void) yyin->read( buf, max_size );
                   1593:
                   1594:        if ( yyin->bad() )
                   1595:                return -1;
                   1596:        else
                   1597:                return yyin->gcount();
                   1598: #endif
1.13    ! tedu     1599: }
1.1       deraadt  1600:
                   1601: void yyFlexLexer::LexerOutput( const char* buf, int size )
1.13    ! tedu     1602: {
1.1       deraadt  1603:        (void) yyout->write( buf, size );
1.13    ! tedu     1604: }
        !          1605: %ok-for-header
        !          1606: %endif
1.1       deraadt  1607:
1.13    ! tedu     1608: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          1609: [[
1.1       deraadt  1610: /* yy_get_next_buffer - try to read in a new buffer
                   1611:  *
                   1612:  * Returns a code representing an action:
                   1613:  *     EOB_ACT_LAST_MATCH -
                   1614:  *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
                   1615:  *     EOB_ACT_END_OF_FILE - end of file
                   1616:  */
1.13    ! tedu     1617: %if-c-only
        !          1618: static int yy_get_next_buffer YYFARGS0(void)
        !          1619: %endif
        !          1620: %if-c++-only
        !          1621: int yyFlexLexer::yy_get_next_buffer()
        !          1622: %endif
        !          1623: {
        !          1624:     M4_YY_DECL_GUTS_VAR();
        !          1625:        char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
        !          1626:        char *source = YY_G(yytext_ptr);
        !          1627:        int number_to_move, i;
1.1       deraadt  1628:        int ret_val;
                   1629:
1.13    ! tedu     1630:        if ( YY_G(yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars) + 1] )
1.1       deraadt  1631:                YY_FATAL_ERROR(
                   1632:                "fatal flex scanner internal error--end of buffer missed" );
                   1633:
1.13    ! tedu     1634:        if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1.1       deraadt  1635:                { /* Don't try to fill the buffer, so this is an EOF. */
1.13    ! tedu     1636:                if ( YY_G(yy_c_buf_p) - YY_G(yytext_ptr) - YY_MORE_ADJ == 1 )
1.1       deraadt  1637:                        {
1.3       millert  1638:                        /* We matched a single character, the EOB, so
1.1       deraadt  1639:                         * treat this as a final EOF.
                   1640:                         */
                   1641:                        return EOB_ACT_END_OF_FILE;
                   1642:                        }
                   1643:
                   1644:                else
                   1645:                        {
                   1646:                        /* We matched some text prior to the EOB, first
                   1647:                         * process it.
                   1648:                         */
                   1649:                        return EOB_ACT_LAST_MATCH;
                   1650:                        }
                   1651:                }
                   1652:
                   1653:        /* Try to read more data. */
                   1654:
                   1655:        /* First move last chars to start of buffer. */
1.13    ! tedu     1656:        number_to_move = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr)) - 1;
1.1       deraadt  1657:
                   1658:        for ( i = 0; i < number_to_move; ++i )
                   1659:                *(dest++) = *(source++);
                   1660:
1.13    ! tedu     1661:        if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1.1       deraadt  1662:                /* don't do the read, it's not guaranteed to return an EOF,
                   1663:                 * just force an EOF
                   1664:                 */
1.13    ! tedu     1665:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars) = 0;
1.1       deraadt  1666:
                   1667:        else
                   1668:                {
1.13    ! tedu     1669:                        yy_size_t num_to_read =
        !          1670:                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1.1       deraadt  1671:
                   1672:                while ( num_to_read <= 0 )
                   1673:                        { /* Not enough room in the buffer - grow it. */
1.13    ! tedu     1674: m4_ifdef( [[M4_YY_USES_REJECT]],
        !          1675: [[
1.1       deraadt  1676:                        YY_FATAL_ERROR(
                   1677: "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1.13    ! tedu     1678: ]],
        !          1679: [[
1.1       deraadt  1680:                        /* just a shorter name for the current buffer */
1.13    ! tedu     1681:                        YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
1.1       deraadt  1682:
                   1683:                        int yy_c_buf_p_offset =
1.13    ! tedu     1684:                                (int) (YY_G(yy_c_buf_p) - b->yy_ch_buf);
1.1       deraadt  1685:
                   1686:                        if ( b->yy_is_our_buffer )
                   1687:                                {
1.13    ! tedu     1688:                                yy_size_t new_size = b->yy_buf_size * 2;
1.1       deraadt  1689:
                   1690:                                if ( new_size <= 0 )
                   1691:                                        b->yy_buf_size += b->yy_buf_size / 8;
                   1692:                                else
                   1693:                                        b->yy_buf_size *= 2;
                   1694:
                   1695:                                b->yy_ch_buf = (char *)
                   1696:                                        /* Include room in for 2 EOB chars. */
1.13    ! tedu     1697:                                        yyrealloc( (void *) b->yy_ch_buf,
        !          1698:                                                         b->yy_buf_size + 2 M4_YY_CALL_LAST_ARG );
1.1       deraadt  1699:                                }
                   1700:                        else
                   1701:                                /* Can't grow it, we don't own it. */
                   1702:                                b->yy_ch_buf = 0;
                   1703:
                   1704:                        if ( ! b->yy_ch_buf )
                   1705:                                YY_FATAL_ERROR(
                   1706:                                "fatal error - scanner input buffer overflow" );
                   1707:
1.13    ! tedu     1708:                        YY_G(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
1.1       deraadt  1709:
1.13    ! tedu     1710:                        num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1.1       deraadt  1711:                                                number_to_move - 1;
1.13    ! tedu     1712: ]])
1.1       deraadt  1713:                        }
                   1714:
                   1715:                if ( num_to_read > YY_READ_BUF_SIZE )
                   1716:                        num_to_read = YY_READ_BUF_SIZE;
                   1717:
                   1718:                /* Read in more data. */
1.13    ! tedu     1719:                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
        !          1720:                        YY_G(yy_n_chars), num_to_read );
1.4       millert  1721:
1.13    ! tedu     1722:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars);
1.1       deraadt  1723:                }
                   1724:
1.13    ! tedu     1725:        if ( YY_G(yy_n_chars) == 0 )
1.1       deraadt  1726:                {
                   1727:                if ( number_to_move == YY_MORE_ADJ )
                   1728:                        {
                   1729:                        ret_val = EOB_ACT_END_OF_FILE;
1.13    ! tedu     1730:                        yyrestart( yyin  M4_YY_CALL_LAST_ARG);
1.1       deraadt  1731:                        }
                   1732:
                   1733:                else
                   1734:                        {
                   1735:                        ret_val = EOB_ACT_LAST_MATCH;
1.13    ! tedu     1736:                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1.1       deraadt  1737:                                YY_BUFFER_EOF_PENDING;
                   1738:                        }
                   1739:                }
                   1740:
                   1741:        else
                   1742:                ret_val = EOB_ACT_CONTINUE_SCAN;
                   1743:
1.13    ! tedu     1744:        if ((yy_size_t) (YY_G(yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
        !          1745:                /* Extend the array by 50%, plus the number we really need. */
        !          1746:                yy_size_t new_size = YY_G(yy_n_chars) + number_to_move + (YY_G(yy_n_chars) >> 1);
        !          1747:                YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
        !          1748:                        (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, new_size M4_YY_CALL_LAST_ARG );
        !          1749:                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
        !          1750:                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
        !          1751:        }
        !          1752:
        !          1753:        YY_G(yy_n_chars) += number_to_move;
        !          1754:        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
        !          1755:        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
1.1       deraadt  1756:
1.13    ! tedu     1757:        YY_G(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1.1       deraadt  1758:
                   1759:        return ret_val;
1.13    ! tedu     1760: }
        !          1761: ]])
1.1       deraadt  1762:
                   1763: /* yy_get_previous_state - get the state just before the EOB char was reached */
                   1764:
1.13    ! tedu     1765: %if-c-only
        !          1766: %not-for-header
        !          1767:     static yy_state_type yy_get_previous_state YYFARGS0(void)
        !          1768: %endif
        !          1769: %if-c++-only
        !          1770:     yy_state_type yyFlexLexer::yy_get_previous_state()
        !          1771: %endif
        !          1772: {
        !          1773:        yy_state_type yy_current_state;
        !          1774:        char *yy_cp;
        !          1775:     M4_YY_DECL_GUTS_VAR();
1.1       deraadt  1776:
1.13    ! tedu     1777: %% [15.0] code to get the start state into yy_current_state goes here
1.1       deraadt  1778:
1.13    ! tedu     1779:        for ( yy_cp = YY_G(yytext_ptr) + YY_MORE_ADJ; yy_cp < YY_G(yy_c_buf_p); ++yy_cp )
1.1       deraadt  1780:                {
1.13    ! tedu     1781: %% [16.0] code to find the next state goes here
1.1       deraadt  1782:                }
                   1783:
                   1784:        return yy_current_state;
1.13    ! tedu     1785: }
1.1       deraadt  1786:
                   1787:
                   1788: /* yy_try_NUL_trans - try to make a transition on the NUL character
                   1789:  *
                   1790:  * synopsis
                   1791:  *     next_state = yy_try_NUL_trans( current_state );
                   1792:  */
1.13    ! tedu     1793: %if-c-only
        !          1794:     static yy_state_type yy_try_NUL_trans  YYFARGS1( yy_state_type, yy_current_state)
        !          1795: %endif
        !          1796: %if-c++-only
        !          1797:     yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state )
        !          1798: %endif
        !          1799: {
        !          1800:        int yy_is_jam;
        !          1801:     M4_YY_DECL_GUTS_VAR(); /* This var may be unused depending upon options. */
        !          1802: %% [17.0] code to find the next state, and perhaps do backing up, goes here
1.1       deraadt  1803:
1.13    ! tedu     1804:        M4_YY_NOOP_GUTS_VAR();
        !          1805:        return yy_is_jam ? 0 : yy_current_state;
        !          1806: }
1.1       deraadt  1807:
                   1808:
1.13    ! tedu     1809: %if-c-only
        !          1810: m4_ifdef( [[M4_YY_NO_UNPUT]],,
        !          1811: [[
        !          1812:     static void yyunput YYFARGS2( int,c, char *,yy_bp)
        !          1813: %endif
        !          1814: %if-c++-only
        !          1815:     void yyFlexLexer::yyunput( int c, char* yy_bp)
        !          1816: %endif
        !          1817: {
        !          1818:        char *yy_cp;
        !          1819:     M4_YY_DECL_GUTS_VAR();
1.1       deraadt  1820:
1.13    ! tedu     1821:     yy_cp = YY_G(yy_c_buf_p);
1.1       deraadt  1822:
                   1823:        /* undo effects of setting up yytext */
1.13    ! tedu     1824:        *yy_cp = YY_G(yy_hold_char);
1.1       deraadt  1825:
1.13    ! tedu     1826:        if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1.1       deraadt  1827:                { /* need to shift things up to make room */
                   1828:                /* +2 for EOB chars. */
1.13    ! tedu     1829:                yy_size_t number_to_move = YY_G(yy_n_chars) + 2;
        !          1830:                char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
        !          1831:                                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
        !          1832:                char *source =
        !          1833:                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
1.1       deraadt  1834:
1.13    ! tedu     1835:                while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1.1       deraadt  1836:                        *--dest = *--source;
                   1837:
                   1838:                yy_cp += (int) (dest - source);
                   1839:                yy_bp += (int) (dest - source);
1.13    ! tedu     1840:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
        !          1841:                        YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
1.1       deraadt  1842:
1.13    ! tedu     1843:                if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1.1       deraadt  1844:                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
                   1845:                }
                   1846:
                   1847:        *--yy_cp = (char) c;
                   1848:
1.13    ! tedu     1849: %% [18.0] update yylineno here
        !          1850: m4_ifdef( [[M4_YY_USE_LINENO]],
        !          1851: [[
        !          1852:     if ( c == '\n' ){
        !          1853:         --yylineno;
        !          1854:     }
        !          1855: ]])
        !          1856:
        !          1857:        YY_G(yytext_ptr) = yy_bp;
        !          1858:        YY_G(yy_hold_char) = *yy_cp;
        !          1859:        YY_G(yy_c_buf_p) = yy_cp;
        !          1860: }
        !          1861: %if-c-only
        !          1862: ]])
        !          1863: %endif
1.1       deraadt  1864:
1.13    ! tedu     1865: %if-c-only
1.11      millert  1866: #ifndef YY_NO_INPUT
1.1       deraadt  1867: #ifdef __cplusplus
1.13    ! tedu     1868:     static int yyinput YYFARGS0(void)
1.1       deraadt  1869: #else
1.13    ! tedu     1870:     static int input  YYFARGS0(void)
1.1       deraadt  1871: #endif
1.13    ! tedu     1872:
        !          1873: %endif
        !          1874: %if-c++-only
        !          1875:     int yyFlexLexer::yyinput()
        !          1876: %endif
        !          1877: {
1.1       deraadt  1878:        int c;
1.13    ! tedu     1879:     M4_YY_DECL_GUTS_VAR();
1.1       deraadt  1880:
1.13    ! tedu     1881:        *YY_G(yy_c_buf_p) = YY_G(yy_hold_char);
1.1       deraadt  1882:
1.13    ! tedu     1883:        if ( *YY_G(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
1.1       deraadt  1884:                {
                   1885:                /* yy_c_buf_p now points to the character we want to return.
                   1886:                 * If this occurs *before* the EOB characters, then it's a
                   1887:                 * valid NUL; if not, then we've hit the end of the buffer.
                   1888:                 */
1.13    ! tedu     1889:                if ( YY_G(yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[YY_G(yy_n_chars)] )
1.1       deraadt  1890:                        /* This was really a NUL. */
1.13    ! tedu     1891:                        *YY_G(yy_c_buf_p) = '\0';
1.1       deraadt  1892:
                   1893:                else
                   1894:                        { /* need more input */
1.13    ! tedu     1895:                        yy_size_t offset = YY_G(yy_c_buf_p) - YY_G(yytext_ptr);
        !          1896:                        ++YY_G(yy_c_buf_p);
1.1       deraadt  1897:
1.13    ! tedu     1898:                        switch ( yy_get_next_buffer( M4_YY_CALL_ONLY_ARG ) )
1.1       deraadt  1899:                                {
1.4       millert  1900:                                case EOB_ACT_LAST_MATCH:
                   1901:                                        /* This happens because yy_g_n_b()
                   1902:                                         * sees that we've accumulated a
                   1903:                                         * token and flags that we need to
                   1904:                                         * try matching the token before
                   1905:                                         * proceeding.  But for input(),
                   1906:                                         * there's no matching to consider.
                   1907:                                         * So convert the EOB_ACT_LAST_MATCH
                   1908:                                         * to EOB_ACT_END_OF_FILE.
                   1909:                                         */
                   1910:
                   1911:                                        /* Reset buffer status. */
1.13    ! tedu     1912:                                        yyrestart( yyin M4_YY_CALL_LAST_ARG);
1.4       millert  1913:
1.13    ! tedu     1914:                                        /*FALLTHROUGH*/
1.4       millert  1915:
1.1       deraadt  1916:                                case EOB_ACT_END_OF_FILE:
                   1917:                                        {
1.13    ! tedu     1918:                                        if ( yywrap( M4_YY_CALL_ONLY_ARG ) )
1.1       deraadt  1919:                                                return EOF;
                   1920:
1.13    ! tedu     1921:                                        if ( ! YY_G(yy_did_buffer_switch_on_eof) )
1.1       deraadt  1922:                                                YY_NEW_FILE;
                   1923: #ifdef __cplusplus
1.13    ! tedu     1924:                                        return yyinput(M4_YY_CALL_ONLY_ARG);
1.1       deraadt  1925: #else
1.13    ! tedu     1926:                                        return input(M4_YY_CALL_ONLY_ARG);
1.1       deraadt  1927: #endif
                   1928:                                        }
                   1929:
                   1930:                                case EOB_ACT_CONTINUE_SCAN:
1.13    ! tedu     1931:                                        YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + offset;
1.1       deraadt  1932:                                        break;
                   1933:                                }
                   1934:                        }
                   1935:                }
                   1936:
1.13    ! tedu     1937:        c = *(unsigned char *) YY_G(yy_c_buf_p);        /* cast for 8-bit char's */
        !          1938:        *YY_G(yy_c_buf_p) = '\0';       /* preserve yytext */
        !          1939:        YY_G(yy_hold_char) = *++YY_G(yy_c_buf_p);
1.1       deraadt  1940:
1.13    ! tedu     1941: %% [19.0] update BOL and yylineno
1.1       deraadt  1942:
                   1943:        return c;
1.13    ! tedu     1944: }
        !          1945: %if-c-only
1.11      millert  1946: #endif /* ifndef YY_NO_INPUT */
1.13    ! tedu     1947: %endif
1.1       deraadt  1948:
1.13    ! tedu     1949: /** Immediately switch to a different input stream.
        !          1950:  * @param input_file A readable stream.
        !          1951:  * M4_YY_DOC_PARAM
        !          1952:  * @note This function does not reset the start condition to @c INITIAL .
        !          1953:  */
        !          1954: %if-c-only
        !          1955:     void yyrestart  YYFARGS1( FILE *,input_file)
        !          1956: %endif
        !          1957: %if-c++-only
        !          1958:     void yyFlexLexer::yyrestart( std::istream* input_file )
        !          1959: %endif
        !          1960: {
        !          1961:     M4_YY_DECL_GUTS_VAR();
        !          1962:
        !          1963:        if ( ! YY_CURRENT_BUFFER ){
        !          1964:         yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG);
        !          1965:                YY_CURRENT_BUFFER_LVALUE =
        !          1966:             yy_create_buffer( yyin, YY_BUF_SIZE M4_YY_CALL_LAST_ARG);
        !          1967:        }
        !          1968:
        !          1969:        yy_init_buffer( YY_CURRENT_BUFFER, input_file M4_YY_CALL_LAST_ARG);
        !          1970:        yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );
        !          1971: }
        !          1972:
        !          1973: /** Switch to a different input buffer.
        !          1974:  * @param new_buffer The new input buffer.
        !          1975:  * M4_YY_DOC_PARAM
        !          1976:  */
        !          1977: %if-c-only
        !          1978:     void yy_switch_to_buffer  YYFARGS1( YY_BUFFER_STATE ,new_buffer)
        !          1979: %endif
        !          1980: %if-c++-only
        !          1981:     void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
        !          1982: %endif
        !          1983: {
        !          1984:     M4_YY_DECL_GUTS_VAR();
        !          1985:
        !          1986:        /* TODO. We should be able to replace this entire function body
        !          1987:         * with
        !          1988:         *              yypop_buffer_state();
        !          1989:         *              yypush_buffer_state(new_buffer);
        !          1990:      */
        !          1991:        yyensure_buffer_stack (M4_YY_CALL_ONLY_ARG);
        !          1992:        if ( YY_CURRENT_BUFFER == new_buffer )
1.1       deraadt  1993:                return;
                   1994:
1.13    ! tedu     1995:        if ( YY_CURRENT_BUFFER )
1.1       deraadt  1996:                {
                   1997:                /* Flush out information for old buffer. */
1.13    ! tedu     1998:                *YY_G(yy_c_buf_p) = YY_G(yy_hold_char);
        !          1999:                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = YY_G(yy_c_buf_p);
        !          2000:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars);
1.1       deraadt  2001:                }
                   2002:
1.13    ! tedu     2003:        YY_CURRENT_BUFFER_LVALUE = new_buffer;
        !          2004:        yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );
1.1       deraadt  2005:
                   2006:        /* We don't actually know whether we did this switch during
                   2007:         * EOF (yywrap()) processing, but the only time this flag
                   2008:         * is looked at is after yywrap() is called, so it's safe
                   2009:         * to go ahead and always set it.
                   2010:         */
1.13    ! tedu     2011:        YY_G(yy_did_buffer_switch_on_eof) = 1;
        !          2012: }
1.1       deraadt  2013:
                   2014:
1.13    ! tedu     2015: %if-c-only
        !          2016: static void yy_load_buffer_state  YYFARGS0(void)
        !          2017: %endif
        !          2018: %if-c++-only
        !          2019:     void yyFlexLexer::yy_load_buffer_state()
        !          2020: %endif
        !          2021: {
        !          2022:     M4_YY_DECL_GUTS_VAR();
        !          2023:        YY_G(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
        !          2024:        YY_G(yytext_ptr) = YY_G(yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
        !          2025:        yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
        !          2026:        YY_G(yy_hold_char) = *YY_G(yy_c_buf_p);
        !          2027: }
        !          2028:
        !          2029: /** Allocate and initialize an input buffer state.
        !          2030:  * @param file A readable stream.
        !          2031:  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
        !          2032:  * M4_YY_DOC_PARAM
        !          2033:  * @return the allocated buffer state.
        !          2034:  */
        !          2035: %if-c-only
        !          2036:     YY_BUFFER_STATE yy_create_buffer  YYFARGS2( FILE *,file, int ,size)
        !          2037: %endif
        !          2038: %if-c++-only
        !          2039:     YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size )
        !          2040: %endif
        !          2041: {
1.1       deraadt  2042:        YY_BUFFER_STATE b;
1.13    ! tedu     2043:     m4_dnl M4_YY_DECL_GUTS_VAR();
1.1       deraadt  2044:
1.13    ! tedu     2045:        b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) M4_YY_CALL_LAST_ARG );
1.1       deraadt  2046:        if ( ! b )
                   2047:                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
                   2048:
                   2049:        b->yy_buf_size = size;
                   2050:
                   2051:        /* yy_ch_buf has to be 2 characters longer than the size given because
                   2052:         * we need to put in 2 end-of-buffer characters.
                   2053:         */
1.13    ! tedu     2054:        b->yy_ch_buf = (char *) yyalloc( b->yy_buf_size + 2 M4_YY_CALL_LAST_ARG );
1.1       deraadt  2055:        if ( ! b->yy_ch_buf )
                   2056:                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
                   2057:
                   2058:        b->yy_is_our_buffer = 1;
                   2059:
1.13    ! tedu     2060:        yy_init_buffer( b, file M4_YY_CALL_LAST_ARG);
1.1       deraadt  2061:
                   2062:        return b;
1.13    ! tedu     2063: }
1.1       deraadt  2064:
1.13    ! tedu     2065: /** Destroy the buffer.
        !          2066:  * @param b a buffer created with yy_create_buffer()
        !          2067:  * M4_YY_DOC_PARAM
        !          2068:  */
        !          2069: %if-c-only
        !          2070:     void yy_delete_buffer YYFARGS1( YY_BUFFER_STATE ,b)
        !          2071: %endif
        !          2072: %if-c++-only
        !          2073:     void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b )
        !          2074: %endif
        !          2075: {
        !          2076:     M4_YY_DECL_GUTS_VAR();
1.1       deraadt  2077:
                   2078:        if ( ! b )
                   2079:                return;
                   2080:
1.13    ! tedu     2081:        if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
        !          2082:                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
1.1       deraadt  2083:
                   2084:        if ( b->yy_is_our_buffer )
1.13    ! tedu     2085:                yyfree( (void *) b->yy_ch_buf M4_YY_CALL_LAST_ARG );
1.1       deraadt  2086:
1.13    ! tedu     2087:        yyfree( (void *) b M4_YY_CALL_LAST_ARG );
        !          2088: }
1.1       deraadt  2089:
                   2090:
1.13    ! tedu     2091: /* Initializes or reinitializes a buffer.
        !          2092:  * This function is sometimes called more than once on the same buffer,
        !          2093:  * such as during a yyrestart() or at EOF.
        !          2094:  */
        !          2095: %if-c-only
        !          2096:     static void yy_init_buffer  YYFARGS2( YY_BUFFER_STATE ,b, FILE *,file)
        !          2097: %endif
        !          2098: %if-c++-only
        !          2099:     void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file )
        !          2100: %endif
1.1       deraadt  2101:
1.13    ! tedu     2102: {
1.6       millert  2103:        int oerrno = errno;
1.13    ! tedu     2104:     M4_YY_DECL_GUTS_VAR();
1.6       millert  2105:
1.13    ! tedu     2106:        yy_flush_buffer( b M4_YY_CALL_LAST_ARG);
1.1       deraadt  2107:
                   2108:        b->yy_input_file = file;
                   2109:        b->yy_fill_buffer = 1;
                   2110:
1.13    ! tedu     2111:     /* If b is the current buffer, then yy_init_buffer was _probably_
        !          2112:      * called from yyrestart() or through yy_get_next_buffer.
        !          2113:      * In that case, we don't want to reset the lineno or column.
        !          2114:      */
        !          2115:     if (b != YY_CURRENT_BUFFER){
        !          2116:         b->yy_bs_lineno = 1;
        !          2117:         b->yy_bs_column = 0;
        !          2118:     }
        !          2119:
        !          2120: %if-c-only
        !          2121: m4_ifdef( [[M4_YY_ALWAYS_INTERACTIVE]],
        !          2122: [[
1.1       deraadt  2123:        b->yy_is_interactive = 1;
1.13    ! tedu     2124: ]],
        !          2125: [[
        !          2126:     m4_ifdef( [[M4_YY_NEVER_INTERACTIVE]],
        !          2127:     [[
        !          2128:         b->yy_is_interactive = 0;
        !          2129:     ]],
        !          2130:     [[
        !          2131:         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
        !          2132:     ]])
        !          2133: ]])
        !          2134: %endif
        !          2135: %if-c++-only
1.1       deraadt  2136:        b->yy_is_interactive = 0;
1.13    ! tedu     2137: %endif
1.6       millert  2138:        errno = oerrno;
1.13    ! tedu     2139: }
1.1       deraadt  2140:
1.13    ! tedu     2141: /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
        !          2142:  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
        !          2143:  * M4_YY_DOC_PARAM
        !          2144:  */
        !          2145: %if-c-only
        !          2146:     void yy_flush_buffer YYFARGS1( YY_BUFFER_STATE ,b)
        !          2147: %endif
        !          2148: %if-c++-only
        !          2149:     void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b )
        !          2150: %endif
        !          2151: {
        !          2152:     M4_YY_DECL_GUTS_VAR();
1.4       millert  2153:        if ( ! b )
                   2154:                return;
                   2155:
1.1       deraadt  2156:        b->yy_n_chars = 0;
                   2157:
                   2158:        /* We always need two end-of-buffer characters.  The first causes
                   2159:         * a transition to the end-of-buffer state.  The second causes
                   2160:         * a jam in that state.
                   2161:         */
                   2162:        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
                   2163:        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
                   2164:
                   2165:        b->yy_buf_pos = &b->yy_ch_buf[0];
                   2166:
                   2167:        b->yy_at_bol = 1;
                   2168:        b->yy_buffer_status = YY_BUFFER_NEW;
                   2169:
1.13    ! tedu     2170:        if ( b == YY_CURRENT_BUFFER )
        !          2171:                yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );
        !          2172: }
        !          2173:
        !          2174: %if-c-or-c++
        !          2175: /** Pushes the new state onto the stack. The new state becomes
        !          2176:  *  the current state. This function will allocate the stack
        !          2177:  *  if necessary.
        !          2178:  *  @param new_buffer The new state.
        !          2179:  *  M4_YY_DOC_PARAM
        !          2180:  */
        !          2181: %if-c-only
        !          2182: void yypush_buffer_state YYFARGS1(YY_BUFFER_STATE,new_buffer)
        !          2183: %endif
        !          2184: %if-c++-only
        !          2185: void yyFlexLexer::yypush_buffer_state (YY_BUFFER_STATE new_buffer)
        !          2186: %endif
        !          2187: {
        !          2188:     M4_YY_DECL_GUTS_VAR();
        !          2189:        if (new_buffer == NULL)
        !          2190:                return;
        !          2191:
        !          2192:        yyensure_buffer_stack(M4_YY_CALL_ONLY_ARG);
        !          2193:
        !          2194:        /* This block is copied from yy_switch_to_buffer. */
        !          2195:        if ( YY_CURRENT_BUFFER )
        !          2196:                {
        !          2197:                /* Flush out information for old buffer. */
        !          2198:                *YY_G(yy_c_buf_p) = YY_G(yy_hold_char);
        !          2199:                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = YY_G(yy_c_buf_p);
        !          2200:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = YY_G(yy_n_chars);
        !          2201:                }
        !          2202:
        !          2203:        /* Only push if top exists. Otherwise, replace top. */
        !          2204:        if (YY_CURRENT_BUFFER)
        !          2205:                YY_G(yy_buffer_stack_top)++;
        !          2206:        YY_CURRENT_BUFFER_LVALUE = new_buffer;
        !          2207:
        !          2208:        /* copied from yy_switch_to_buffer. */
        !          2209:        yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );
        !          2210:        YY_G(yy_did_buffer_switch_on_eof) = 1;
        !          2211: }
        !          2212: %endif
        !          2213:
        !          2214:
        !          2215: %if-c-or-c++
        !          2216: /** Removes and deletes the top of the stack, if present.
        !          2217:  *  The next element becomes the new top.
        !          2218:  *  M4_YY_DOC_PARAM
        !          2219:  */
        !          2220: %if-c-only
        !          2221: void yypop_buffer_state YYFARGS0(void)
        !          2222: %endif
        !          2223: %if-c++-only
        !          2224: void yyFlexLexer::yypop_buffer_state (void)
        !          2225: %endif
        !          2226: {
        !          2227:     M4_YY_DECL_GUTS_VAR();
        !          2228:        if (!YY_CURRENT_BUFFER)
        !          2229:                return;
        !          2230:
        !          2231:        yy_delete_buffer(YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG);
        !          2232:        YY_CURRENT_BUFFER_LVALUE = NULL;
        !          2233:        if (YY_G(yy_buffer_stack_top) > 0)
        !          2234:                --YY_G(yy_buffer_stack_top);
        !          2235:
        !          2236:        if (YY_CURRENT_BUFFER) {
        !          2237:                yy_load_buffer_state( M4_YY_CALL_ONLY_ARG );
        !          2238:                YY_G(yy_did_buffer_switch_on_eof) = 1;
        !          2239:        }
        !          2240: }
        !          2241: %endif
        !          2242:
        !          2243:
        !          2244: %if-c-or-c++
        !          2245: /* Allocates the stack if it does not exist.
        !          2246:  *  Guarantees space for at least one push.
        !          2247:  */
        !          2248: %if-c-only
        !          2249: static void yyensure_buffer_stack YYFARGS0(void)
        !          2250: %endif
        !          2251: %if-c++-only
        !          2252: void yyFlexLexer::yyensure_buffer_stack(void)
        !          2253: %endif
        !          2254: {
        !          2255:        yy_size_t num_to_alloc;
        !          2256:     M4_YY_DECL_GUTS_VAR();
        !          2257:
        !          2258:        if (!YY_G(yy_buffer_stack)) {
        !          2259:
        !          2260:                /* First allocation is just for 2 elements, since we don't know if this
        !          2261:                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
        !          2262:                 * immediate realloc on the next call.
        !          2263:          */
        !          2264:                num_to_alloc = 1;
        !          2265:                YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
        !          2266:                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
        !          2267:                                                                M4_YY_CALL_LAST_ARG);
        !          2268:                if ( ! YY_G(yy_buffer_stack) )
        !          2269:                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
        !          2270:
        !          2271:
        !          2272:                memset(YY_G(yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
        !          2273:
        !          2274:                YY_G(yy_buffer_stack_max) = num_to_alloc;
        !          2275:                YY_G(yy_buffer_stack_top) = 0;
        !          2276:                return;
1.1       deraadt  2277:        }
                   2278:
1.13    ! tedu     2279:        if (YY_G(yy_buffer_stack_top) >= (YY_G(yy_buffer_stack_max)) - 1){
1.1       deraadt  2280:
1.13    ! tedu     2281:                /* Increase the buffer to prepare for a possible push. */
        !          2282:                int grow_size = 8 /* arbitrary grow size */;
        !          2283:
        !          2284:                num_to_alloc = YY_G(yy_buffer_stack_max) + grow_size;
        !          2285:                YY_G(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
        !          2286:                                                                (YY_G(yy_buffer_stack),
        !          2287:                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
        !          2288:                                                                M4_YY_CALL_LAST_ARG);
        !          2289:                if ( ! YY_G(yy_buffer_stack) )
        !          2290:                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
        !          2291:
        !          2292:                /* zero only the new slots.*/
        !          2293:                memset(YY_G(yy_buffer_stack) + YY_G(yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
        !          2294:                YY_G(yy_buffer_stack_max) = num_to_alloc;
        !          2295:        }
        !          2296: }
        !          2297: %endif
        !          2298:
        !          2299:
        !          2300:
        !          2301:
        !          2302: m4_ifdef( [[M4_YY_NO_SCAN_BUFFER]],,
        !          2303: [[
        !          2304: %if-c-only
        !          2305: /** Setup the input buffer state to scan directly from a user-specified character buffer.
        !          2306:  * @param base the character buffer
        !          2307:  * @param size the size in bytes of the character buffer
        !          2308:  * M4_YY_DOC_PARAM
        !          2309:  * @return the newly allocated buffer state object.
        !          2310:  */
        !          2311: YY_BUFFER_STATE yy_scan_buffer  YYFARGS2( char *,base, yy_size_t ,size)
        !          2312: {
1.1       deraadt  2313:        YY_BUFFER_STATE b;
1.13    ! tedu     2314:     m4_dnl M4_YY_DECL_GUTS_VAR();
1.1       deraadt  2315:
                   2316:        if ( size < 2 ||
                   2317:             base[size-2] != YY_END_OF_BUFFER_CHAR ||
                   2318:             base[size-1] != YY_END_OF_BUFFER_CHAR )
                   2319:                /* They forgot to leave room for the EOB's. */
                   2320:                return 0;
                   2321:
1.13    ! tedu     2322:        b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) M4_YY_CALL_LAST_ARG );
1.1       deraadt  2323:        if ( ! b )
                   2324:                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
                   2325:
                   2326:        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
                   2327:        b->yy_buf_pos = b->yy_ch_buf = base;
                   2328:        b->yy_is_our_buffer = 0;
                   2329:        b->yy_input_file = 0;
                   2330:        b->yy_n_chars = b->yy_buf_size;
                   2331:        b->yy_is_interactive = 0;
                   2332:        b->yy_at_bol = 1;
                   2333:        b->yy_fill_buffer = 0;
                   2334:        b->yy_buffer_status = YY_BUFFER_NEW;
                   2335:
1.13    ! tedu     2336:        yy_switch_to_buffer( b M4_YY_CALL_LAST_ARG );
1.1       deraadt  2337:
                   2338:        return b;
1.13    ! tedu     2339: }
        !          2340: %endif
        !          2341: ]])
1.1       deraadt  2342:
                   2343:
1.13    ! tedu     2344: m4_ifdef( [[M4_YY_NO_SCAN_STRING]],,
        !          2345: [[
        !          2346: %if-c-only
        !          2347: /** Setup the input buffer state to scan a string. The next call to yylex() will
        !          2348:  * scan from a @e copy of @a str.
        !          2349:  * @param yystr a NUL-terminated string to scan
        !          2350:  * M4_YY_DOC_PARAM
        !          2351:  * @return the newly allocated buffer state object.
        !          2352:  * @note If you want to scan bytes that may contain NUL values, then use
        !          2353:  *       yy_scan_bytes() instead.
        !          2354:  */
        !          2355: YY_BUFFER_STATE yy_scan_string YYFARGS1( yyconst char *, yystr)
        !          2356: {
        !          2357:     m4_dnl M4_YY_DECL_GUTS_VAR();
        !          2358:
        !          2359:        return yy_scan_bytes( yystr, strlen(yystr) M4_YY_CALL_LAST_ARG);
        !          2360: }
        !          2361: %endif
        !          2362: ]])
        !          2363:
        !          2364:
        !          2365: m4_ifdef( [[M4_YY_NO_SCAN_BYTES]],,
        !          2366: [[
        !          2367: %if-c-only
        !          2368: /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
        !          2369:  * scan from a @e copy of @a bytes.
        !          2370:  * @param yybytes the byte buffer to scan
        !          2371:  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
        !          2372:  * M4_YY_DOC_PARAM
        !          2373:  * @return the newly allocated buffer state object.
        !          2374:  */
        !          2375: YY_BUFFER_STATE yy_scan_bytes  YYFARGS2( yyconst char *,yybytes, yy_size_t ,_yybytes_len)
        !          2376: {
1.1       deraadt  2377:        YY_BUFFER_STATE b;
                   2378:        char *buf;
                   2379:        yy_size_t n;
1.13    ! tedu     2380:        yy_size_t i;
        !          2381:     m4_dnl M4_YY_DECL_GUTS_VAR();
1.1       deraadt  2382:
                   2383:        /* Get memory for full buffer, including space for trailing EOB's. */
1.13    ! tedu     2384:        n = _yybytes_len + 2;
        !          2385:        buf = (char *) yyalloc( n M4_YY_CALL_LAST_ARG );
1.1       deraadt  2386:        if ( ! buf )
                   2387:                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
                   2388:
1.13    ! tedu     2389:        for ( i = 0; i < _yybytes_len; ++i )
        !          2390:                buf[i] = yybytes[i];
1.1       deraadt  2391:
1.13    ! tedu     2392:        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
1.1       deraadt  2393:
1.13    ! tedu     2394:        b = yy_scan_buffer( buf, n M4_YY_CALL_LAST_ARG);
1.1       deraadt  2395:        if ( ! b )
                   2396:                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
                   2397:
                   2398:        /* It's okay to grow etc. this buffer, and we should throw it
                   2399:         * away when we're done.
                   2400:         */
                   2401:        b->yy_is_our_buffer = 1;
                   2402:
                   2403:        return b;
1.13    ! tedu     2404: }
        !          2405: %endif
        !          2406: ]])
        !          2407:
        !          2408:
        !          2409: m4_ifdef( [[M4_YY_NO_PUSH_STATE]],,
        !          2410: [[
        !          2411: %if-c-only
        !          2412:     static void yy_push_state YYFARGS1( int ,new_state)
        !          2413: %endif
        !          2414: %if-c++-only
        !          2415:     void yyFlexLexer::yy_push_state( int new_state )
        !          2416: %endif
        !          2417: {
        !          2418:     M4_YY_DECL_GUTS_VAR();
        !          2419:        if ( YY_G(yy_start_stack_ptr) >= YY_G(yy_start_stack_depth) )
1.1       deraadt  2420:                {
                   2421:                yy_size_t new_size;
                   2422:
1.13    ! tedu     2423:                YY_G(yy_start_stack_depth) += YY_START_STACK_INCR;
        !          2424:                new_size = YY_G(yy_start_stack_depth) * sizeof( int );
1.1       deraadt  2425:
1.13    ! tedu     2426:                if ( ! YY_G(yy_start_stack) )
        !          2427:                        YY_G(yy_start_stack) = (int *) yyalloc( new_size M4_YY_CALL_LAST_ARG );
1.1       deraadt  2428:
                   2429:                else
1.13    ! tedu     2430:                        YY_G(yy_start_stack) = (int *) yyrealloc(
        !          2431:                                        (void *) YY_G(yy_start_stack), new_size M4_YY_CALL_LAST_ARG );
1.1       deraadt  2432:
1.13    ! tedu     2433:                if ( ! YY_G(yy_start_stack) )
        !          2434:                        YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
1.1       deraadt  2435:                }
                   2436:
1.13    ! tedu     2437:        YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr)++] = YY_START;
1.1       deraadt  2438:
                   2439:        BEGIN(new_state);
1.13    ! tedu     2440: }
        !          2441: ]])
1.1       deraadt  2442:
                   2443:
1.13    ! tedu     2444: m4_ifdef( [[M4_YY_NO_POP_STATE]],,
        !          2445: [[
        !          2446: %if-c-only
        !          2447:     static void yy_pop_state  YYFARGS0(void)
        !          2448: %endif
        !          2449: %if-c++-only
        !          2450:     void yyFlexLexer::yy_pop_state()
        !          2451: %endif
        !          2452: {
        !          2453:     M4_YY_DECL_GUTS_VAR();
        !          2454:        if ( --YY_G(yy_start_stack_ptr) < 0 )
1.1       deraadt  2455:                YY_FATAL_ERROR( "start-condition stack underflow" );
                   2456:
1.13    ! tedu     2457:        BEGIN(YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr)]);
        !          2458: }
        !          2459: ]])
        !          2460:
        !          2461:
        !          2462: m4_ifdef( [[M4_YY_NO_TOP_STATE]],,
        !          2463: [[
        !          2464: %if-c-only
        !          2465:     static int yy_top_state  YYFARGS0(void)
        !          2466: %endif
        !          2467: %if-c++-only
        !          2468:     int yyFlexLexer::yy_top_state()
        !          2469: %endif
        !          2470: {
        !          2471:     M4_YY_DECL_GUTS_VAR();
        !          2472:        return YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr) - 1];
        !          2473: }
        !          2474: ]])
1.1       deraadt  2475:
                   2476: #ifndef YY_EXIT_FAILURE
                   2477: #define YY_EXIT_FAILURE 2
                   2478: #endif
                   2479:
1.13    ! tedu     2480: %if-c-only
        !          2481: static void yy_fatal_error YYFARGS1(yyconst char*, msg)
        !          2482: {
        !          2483:     m4_dnl M4_YY_DECL_GUTS_VAR();
1.1       deraadt  2484:        (void) fprintf( stderr, "%s\n", msg );
                   2485:        exit( YY_EXIT_FAILURE );
1.13    ! tedu     2486: }
        !          2487: %endif
        !          2488: %if-c++-only
1.1       deraadt  2489: void yyFlexLexer::LexerError( yyconst char msg[] )
1.13    ! tedu     2490: {
        !          2491:     M4_YY_DECL_GUTS_VAR();
        !          2492:        std::cerr << msg << std::endl;
1.1       deraadt  2493:        exit( YY_EXIT_FAILURE );
1.13    ! tedu     2494: }
        !          2495: %endif
1.1       deraadt  2496:
                   2497: /* Redefine yyless() so it works in section 3 code. */
                   2498:
                   2499: #undef yyless
                   2500: #define yyless(n) \
                   2501:        do \
                   2502:                { \
                   2503:                /* Undo effects of setting up yytext. */ \
1.13    ! tedu     2504:         int yyless_macro_arg = (n); \
        !          2505:         YY_LESS_LINENO(yyless_macro_arg);\
        !          2506:                yytext[yyleng] = YY_G(yy_hold_char); \
        !          2507:                YY_G(yy_c_buf_p) = yytext + yyless_macro_arg; \
        !          2508:                YY_G(yy_hold_char) = *YY_G(yy_c_buf_p); \
        !          2509:                *YY_G(yy_c_buf_p) = '\0'; \
        !          2510:                yyleng = yyless_macro_arg; \
1.1       deraadt  2511:                } \
                   2512:        while ( 0 )
                   2513:
                   2514:
                   2515:
1.13    ! tedu     2516: /* Accessor  methods (get/set functions) to struct members. */
        !          2517:
        !          2518: %if-c-only
        !          2519: %if-reentrant
        !          2520: m4_ifdef( [[M4_YY_NO_GET_EXTRA]],,
        !          2521: [[
        !          2522: /** Get the user-defined data for this scanner.
        !          2523:  * M4_YY_DOC_PARAM
        !          2524:  */
        !          2525: YY_EXTRA_TYPE yyget_extra  YYFARGS0(void)
        !          2526: {
        !          2527:     M4_YY_DECL_GUTS_VAR();
        !          2528:     return yyextra;
        !          2529: }
        !          2530: ]])
        !          2531: %endif
        !          2532:
        !          2533: m4_ifdef( [[M4_YY_NO_GET_LINENO]],,
        !          2534: [[
        !          2535: /** Get the current line number.
        !          2536:  * M4_YY_DOC_PARAM
        !          2537:  */
        !          2538: int yyget_lineno  YYFARGS0(void)
        !          2539: {
        !          2540:     M4_YY_DECL_GUTS_VAR();
        !          2541:
        !          2542:     m4_ifdef( [[M4_YY_REENTRANT]],
        !          2543:     [[
        !          2544:         if (! YY_CURRENT_BUFFER)
        !          2545:             return 0;
        !          2546:     ]])
        !          2547:     return yylineno;
        !          2548: }
        !          2549: ]])
        !          2550:
        !          2551: m4_ifdef( [[M4_YY_REENTRANT]],
        !          2552: [[
        !          2553: m4_ifdef( [[M4_YY_NO_GET_COLUMN]],,
        !          2554: [[
        !          2555: /** Get the current column number.
        !          2556:  * M4_YY_DOC_PARAM
        !          2557:  */
        !          2558: int yyget_column  YYFARGS0(void)
        !          2559: {
        !          2560:     M4_YY_DECL_GUTS_VAR();
        !          2561:
        !          2562:     m4_ifdef( [[M4_YY_REENTRANT]],
        !          2563:     [[
        !          2564:         if (! YY_CURRENT_BUFFER)
        !          2565:             return 0;
        !          2566:     ]])
        !          2567:     return yycolumn;
        !          2568: }
        !          2569: ]])
        !          2570: ]])
        !          2571:
        !          2572: m4_ifdef( [[M4_YY_NO_GET_IN]],,
        !          2573: [[
        !          2574: /** Get the input stream.
        !          2575:  * M4_YY_DOC_PARAM
        !          2576:  */
        !          2577: FILE *yyget_in  YYFARGS0(void)
        !          2578: {
        !          2579:     M4_YY_DECL_GUTS_VAR();
        !          2580:     return yyin;
        !          2581: }
        !          2582: ]])
        !          2583:
        !          2584: m4_ifdef( [[M4_YY_NO_GET_OUT]],,
        !          2585: [[
        !          2586: /** Get the output stream.
        !          2587:  * M4_YY_DOC_PARAM
        !          2588:  */
        !          2589: FILE *yyget_out  YYFARGS0(void)
        !          2590: {
        !          2591:     M4_YY_DECL_GUTS_VAR();
        !          2592:     return yyout;
        !          2593: }
        !          2594: ]])
        !          2595:
        !          2596: m4_ifdef( [[M4_YY_NO_GET_LENG]],,
        !          2597: [[
        !          2598: /** Get the length of the current token.
        !          2599:  * M4_YY_DOC_PARAM
        !          2600:  */
        !          2601: yy_size_t yyget_leng  YYFARGS0(void)
        !          2602: {
        !          2603:     M4_YY_DECL_GUTS_VAR();
        !          2604:     return yyleng;
        !          2605: }
        !          2606: ]])
        !          2607:
        !          2608: /** Get the current token.
        !          2609:  * M4_YY_DOC_PARAM
        !          2610:  */
        !          2611: m4_ifdef( [[M4_YY_NO_GET_TEXT]],,
        !          2612: [[
        !          2613: char *yyget_text  YYFARGS0(void)
        !          2614: {
        !          2615:     M4_YY_DECL_GUTS_VAR();
        !          2616:     return yytext;
        !          2617: }
        !          2618: ]])
        !          2619:
        !          2620: %if-reentrant
        !          2621: m4_ifdef( [[M4_YY_NO_SET_EXTRA]],,
        !          2622: [[
        !          2623: /** Set the user-defined data. This data is never touched by the scanner.
        !          2624:  * @param user_defined The data to be associated with this scanner.
        !          2625:  * M4_YY_DOC_PARAM
        !          2626:  */
        !          2627: void yyset_extra YYFARGS1( YY_EXTRA_TYPE ,user_defined)
        !          2628: {
        !          2629:     M4_YY_DECL_GUTS_VAR();
        !          2630:     yyextra = user_defined ;
        !          2631: }
        !          2632: ]])
        !          2633: %endif
        !          2634:
        !          2635: m4_ifdef( [[M4_YY_NO_SET_LINENO]],,
        !          2636: [[
        !          2637: /** Set the current line number.
        !          2638:  * @param line_number
        !          2639:  * M4_YY_DOC_PARAM
        !          2640:  */
        !          2641: void yyset_lineno YYFARGS1( int ,line_number)
        !          2642: {
        !          2643:     M4_YY_DECL_GUTS_VAR();
        !          2644:
        !          2645:     m4_ifdef( [[M4_YY_REENTRANT]],
        !          2646:     [[
        !          2647:         /* lineno is only valid if an input buffer exists. */
        !          2648:         if (! YY_CURRENT_BUFFER )
        !          2649:            YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
        !          2650:     ]])
        !          2651:     yylineno = line_number;
        !          2652: }
        !          2653: ]])
        !          2654:
        !          2655: m4_ifdef( [[M4_YY_REENTRANT]],
        !          2656: [[
        !          2657: m4_ifdef( [[M4_YY_NO_SET_COLUMN]],,
        !          2658: [[
        !          2659: /** Set the current column.
        !          2660:  * @param line_number
        !          2661:  * M4_YY_DOC_PARAM
        !          2662:  */
        !          2663: void yyset_column YYFARGS1( int , column_no)
        !          2664: {
        !          2665:     M4_YY_DECL_GUTS_VAR();
        !          2666:
        !          2667:     m4_ifdef( [[M4_YY_REENTRANT]],
        !          2668:     [[
        !          2669:         /* column is only valid if an input buffer exists. */
        !          2670:         if (! YY_CURRENT_BUFFER )
        !          2671:            YY_FATAL_ERROR( "yyset_column called with no buffer" );
        !          2672:     ]])
        !          2673:     yycolumn = column_no;
        !          2674: }
        !          2675: ]])
        !          2676: ]])
        !          2677:
        !          2678:
        !          2679: m4_ifdef( [[M4_YY_NO_SET_IN]],,
        !          2680: [[
        !          2681: /** Set the input stream. This does not discard the current
        !          2682:  * input buffer.
        !          2683:  * @param in_str A readable stream.
        !          2684:  * M4_YY_DOC_PARAM
        !          2685:  * @see yy_switch_to_buffer
        !          2686:  */
        !          2687: void yyset_in YYFARGS1( FILE * ,in_str)
        !          2688: {
        !          2689:     M4_YY_DECL_GUTS_VAR();
        !          2690:     yyin = in_str ;
        !          2691: }
        !          2692: ]])
        !          2693:
        !          2694: m4_ifdef( [[M4_YY_NO_SET_OUT]],,
        !          2695: [[
        !          2696: void yyset_out YYFARGS1( FILE * ,out_str)
        !          2697: {
        !          2698:     M4_YY_DECL_GUTS_VAR();
        !          2699:     yyout = out_str ;
        !          2700: }
        !          2701: ]])
        !          2702:
        !          2703:
        !          2704: m4_ifdef( [[M4_YY_NO_GET_DEBUG]],,
        !          2705: [[
        !          2706: int yyget_debug  YYFARGS0(void)
        !          2707: {
        !          2708:     M4_YY_DECL_GUTS_VAR();
        !          2709:     return yy_flex_debug;
        !          2710: }
        !          2711: ]])
        !          2712:
        !          2713: m4_ifdef( [[M4_YY_NO_SET_DEBUG]],,
        !          2714: [[
        !          2715: void yyset_debug YYFARGS1( int ,bdebug)
        !          2716: {
        !          2717:     M4_YY_DECL_GUTS_VAR();
        !          2718:     yy_flex_debug = bdebug ;
        !          2719: }
        !          2720: ]])
        !          2721: %endif
        !          2722:
        !          2723: %if-reentrant
        !          2724: /* Accessor methods for yylval and yylloc */
        !          2725:
        !          2726: %if-bison-bridge
        !          2727: m4_ifdef( [[M4_YY_NO_GET_LVAL]],,
        !          2728: [[
        !          2729: YYSTYPE * yyget_lval  YYFARGS0(void)
        !          2730: {
        !          2731:     M4_YY_DECL_GUTS_VAR();
        !          2732:     return yylval;
        !          2733: }
        !          2734: ]])
        !          2735:
        !          2736: m4_ifdef( [[M4_YY_NO_SET_LVAL]],,
        !          2737: [[
        !          2738: void yyset_lval YYFARGS1( YYSTYPE * ,yylval_param)
        !          2739: {
        !          2740:     M4_YY_DECL_GUTS_VAR();
        !          2741:     yylval = yylval_param;
        !          2742: }
        !          2743: ]])
        !          2744:
        !          2745: m4_ifdef( [[<M4_YY_BISON_LLOC>]],
        !          2746: [[
        !          2747:     m4_ifdef( [[M4_YY_NO_GET_LLOC]],,
        !          2748:     [[
        !          2749: YYLTYPE *yyget_lloc  YYFARGS0(void)
        !          2750: {
        !          2751:     M4_YY_DECL_GUTS_VAR();
        !          2752:     return yylloc;
        !          2753: }
        !          2754:     ]])
        !          2755:
        !          2756:     m4_ifdef( [[M4_YY_NO_SET_LLOC]],,
        !          2757:     [[
        !          2758: void yyset_lloc YYFARGS1( YYLTYPE * ,yylloc_param)
        !          2759: {
        !          2760:     M4_YY_DECL_GUTS_VAR();
        !          2761:     yylloc = yylloc_param;
        !          2762: }
        !          2763:     ]])
        !          2764: ]])
        !          2765:
        !          2766: %endif
        !          2767:
        !          2768:
        !          2769: /* User-visible API */
        !          2770:
        !          2771: /* yylex_init is special because it creates the scanner itself, so it is
        !          2772:  * the ONLY reentrant function that doesn't take the scanner as the last argument.
        !          2773:  * That's why we explicitly handle the declaration, instead of using our macros.
        !          2774:  */
        !          2775: m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],
        !          2776: [[
        !          2777: int yylex_init( ptr_yy_globals )
        !          2778:     yyscan_t* ptr_yy_globals;
        !          2779: ]],
        !          2780: [[
        !          2781: int yylex_init(yyscan_t* ptr_yy_globals)
        !          2782: ]])
        !          2783: {
        !          2784:     if (ptr_yy_globals == NULL){
        !          2785:         errno = EINVAL;
        !          2786:         return 1;
        !          2787:     }
        !          2788:
        !          2789:     *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
        !          2790:
        !          2791:     if (*ptr_yy_globals == NULL){
        !          2792:         errno = ENOMEM;
        !          2793:         return 1;
        !          2794:     }
        !          2795:
        !          2796:     /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
        !          2797:     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
        !          2798:
        !          2799:     return yy_init_globals ( *ptr_yy_globals );
        !          2800: }
        !          2801:
        !          2802:
        !          2803: /* yylex_init_extra has the same functionality as yylex_init, but follows the
        !          2804:  * convention of taking the scanner as the last argument. Note however, that
        !          2805:  * this is a *pointer* to a scanner, as it will be allocated by this call (and
        !          2806:  * is the reason, too, why this function also must handle its own declaration).
        !          2807:  * The user defined value in the first argument will be available to yyalloc in
        !          2808:  * the yyextra field.
        !          2809:  */
        !          2810: m4_ifdef( [[M4_YY_NO_ANSI_FUNC_DEFS]],
        !          2811: [[
        !          2812: int yylex_init_extra( yy_user_defined, ptr_yy_globals )
        !          2813:     YY_EXTRA_TYPE yy_user_defined;
        !          2814:     yyscan_t* ptr_yy_globals;
        !          2815: ]],
        !          2816: [[
        !          2817: int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
        !          2818: ]])
        !          2819: {
        !          2820:     struct yyguts_t dummy_yyguts;
        !          2821:
        !          2822:     yyset_extra (yy_user_defined, &dummy_yyguts);
        !          2823:
        !          2824:     if (ptr_yy_globals == NULL){
        !          2825:         errno = EINVAL;
        !          2826:         return 1;
        !          2827:     }
        !          2828:
        !          2829:     *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
        !          2830:
        !          2831:     if (*ptr_yy_globals == NULL){
        !          2832:         errno = ENOMEM;
        !          2833:         return 1;
        !          2834:     }
        !          2835:
        !          2836:     /* By setting to 0xAA, we expose bugs in
        !          2837:     yy_init_globals. Leave at 0x00 for releases. */
        !          2838:     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
        !          2839:
        !          2840:     yyset_extra (yy_user_defined, *ptr_yy_globals);
        !          2841:
        !          2842:     return yy_init_globals ( *ptr_yy_globals );
        !          2843: }
        !          2844:
        !          2845: %endif if-c-only
        !          2846:
        !          2847:
        !          2848: %if-c-only
        !          2849: static int yy_init_globals YYFARGS0(void)
        !          2850: {
        !          2851:     M4_YY_DECL_GUTS_VAR();
        !          2852:     /* Initialization is the same as for the non-reentrant scanner.
        !          2853:      * This function is called from yylex_destroy(), so don't allocate here.
        !          2854:      */
        !          2855:
        !          2856: m4_ifdef( [[M4_YY_USE_LINENO]],
        !          2857: [[
        !          2858:     m4_ifdef( [[M4_YY_NOT_REENTRANT]],
        !          2859:     [[
        !          2860:     /* We do not touch yylineno unless the option is enabled. */
        !          2861:     yylineno =  1;
        !          2862:     ]])
        !          2863: ]])
        !          2864:     YY_G(yy_buffer_stack) = 0;
        !          2865:     YY_G(yy_buffer_stack_top) = 0;
        !          2866:     YY_G(yy_buffer_stack_max) = 0;
        !          2867:     YY_G(yy_c_buf_p) = (char *) 0;
        !          2868:     YY_G(yy_init) = 0;
        !          2869:     YY_G(yy_start) = 0;
        !          2870:
        !          2871: m4_ifdef( [[M4_YY_HAS_START_STACK_VARS]],
        !          2872: [[
        !          2873:     YY_G(yy_start_stack_ptr) = 0;
        !          2874:     YY_G(yy_start_stack_depth) = 0;
        !          2875:     YY_G(yy_start_stack) =  NULL;
        !          2876: ]])
        !          2877:
        !          2878: m4_ifdef( [[M4_YY_USES_REJECT]],
        !          2879: [[
        !          2880:     YY_G(yy_state_buf) = 0;
        !          2881:     YY_G(yy_state_ptr) = 0;
        !          2882:     YY_G(yy_full_match) = 0;
        !          2883:     YY_G(yy_lp) = 0;
        !          2884: ]])
        !          2885:
        !          2886: m4_ifdef( [[M4_YY_TEXT_IS_ARRAY]],
        !          2887: [[
        !          2888:     YY_G(yytext_ptr) = 0;
        !          2889:     YY_G(yy_more_offset) = 0;
        !          2890:     YY_G(yy_prev_more_offset) = 0;
        !          2891: ]])
        !          2892:
        !          2893: /* Defined in main.c */
        !          2894: #ifdef YY_STDINIT
        !          2895:     yyin = stdin;
        !          2896:     yyout = stdout;
        !          2897: #else
        !          2898:     yyin = (FILE *) 0;
        !          2899:     yyout = (FILE *) 0;
        !          2900: #endif
        !          2901:
        !          2902:     /* For future reference: Set errno on error, since we are called by
        !          2903:      * yylex_init()
        !          2904:      */
        !          2905:     return 0;
        !          2906: }
        !          2907: %endif
        !          2908:
        !          2909:
        !          2910: %if-c-only SNIP! this currently causes conflicts with the c++ scanner
        !          2911: /* yylex_destroy is for both reentrant and non-reentrant scanners. */
        !          2912: int yylex_destroy  YYFARGS0(void)
        !          2913: {
        !          2914:     M4_YY_DECL_GUTS_VAR();
        !          2915:
        !          2916:     /* Pop the buffer stack, destroying each element. */
        !          2917:        while(YY_CURRENT_BUFFER){
        !          2918:                yy_delete_buffer( YY_CURRENT_BUFFER M4_YY_CALL_LAST_ARG );
        !          2919:                YY_CURRENT_BUFFER_LVALUE = NULL;
        !          2920:                yypop_buffer_state(M4_YY_CALL_ONLY_ARG);
        !          2921:        }
        !          2922:
        !          2923:        /* Destroy the stack itself. */
        !          2924:        yyfree(YY_G(yy_buffer_stack) M4_YY_CALL_LAST_ARG);
        !          2925:        YY_G(yy_buffer_stack) = NULL;
        !          2926:
        !          2927: m4_ifdef( [[M4_YY_HAS_START_STACK_VARS]],
        !          2928: [[
        !          2929:     /* Destroy the start condition stack. */
        !          2930:         yyfree( YY_G(yy_start_stack) M4_YY_CALL_LAST_ARG );
        !          2931:         YY_G(yy_start_stack) = NULL;
        !          2932: ]])
        !          2933:
        !          2934: m4_ifdef( [[M4_YY_USES_REJECT]],
        !          2935: [[
        !          2936:     yyfree ( YY_G(yy_state_buf) M4_YY_CALL_LAST_ARG);
        !          2937:     YY_G(yy_state_buf)  = NULL;
        !          2938: ]])
        !          2939:
        !          2940:     /* Reset the globals. This is important in a non-reentrant scanner so the next time
        !          2941:      * yylex() is called, initialization will occur. */
        !          2942:     yy_init_globals( M4_YY_CALL_ONLY_ARG);
        !          2943:
        !          2944: %if-reentrant
        !          2945:     /* Destroy the main struct (reentrant only). */
        !          2946:     yyfree ( yyscanner M4_YY_CALL_LAST_ARG );
        !          2947:     yyscanner = NULL;
        !          2948: %endif
        !          2949:     return 0;
        !          2950: }
        !          2951: %endif
        !          2952:
        !          2953:
        !          2954: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          2955: [[
        !          2956: /*
        !          2957:  * Internal utility routines.
        !          2958:  */
        !          2959: ]])
        !          2960:
        !          2961: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          2962: [[
1.1       deraadt  2963: #ifndef yytext_ptr
1.13    ! tedu     2964: static void yy_flex_strncpy YYFARGS3( char*,s1, yyconst char *,s2, int,n)
        !          2965: {
        !          2966:        int i;
1.1       deraadt  2967:        for ( i = 0; i < n; ++i )
                   2968:                s1[i] = s2[i];
1.13    ! tedu     2969: }
1.3       millert  2970: #endif
1.13    ! tedu     2971: ]])
1.3       millert  2972:
1.13    ! tedu     2973: m4_ifdef( [[M4_YY_NOT_IN_HEADER]],
        !          2974: [[
1.3       millert  2975: #ifdef YY_NEED_STRLEN
1.13    ! tedu     2976: static int yy_flex_strlen YYFARGS1( yyconst char *,s)
        !          2977: {
        !          2978:        int n;
1.3       millert  2979:        for ( n = 0; s[n]; ++n )
                   2980:                ;
                   2981:
                   2982:        return n;
1.13    ! tedu     2983: }
1.1       deraadt  2984: #endif
1.13    ! tedu     2985: ]])
1.1       deraadt  2986:
1.13    ! tedu     2987: m4_ifdef( [[M4_YY_NO_FLEX_ALLOC]],,
        !          2988: [[
        !          2989: void *yyalloc YYFARGS1( yy_size_t ,size)
        !          2990: {
1.1       deraadt  2991:        return (void *) malloc( size );
1.13    ! tedu     2992: }
        !          2993: ]])
1.1       deraadt  2994:
1.13    ! tedu     2995: m4_ifdef( [[M4_YY_NO_FLEX_REALLOC]],,
        !          2996: [[
        !          2997: void *yyrealloc  YYFARGS2( void *,ptr, yy_size_t ,size)
        !          2998: {
1.1       deraadt  2999:        /* The cast to (char *) in the following accommodates both
                   3000:         * implementations that use char* generic pointers, and those
                   3001:         * that use void* generic pointers.  It works with the latter
                   3002:         * because both ANSI C and C++ allow castless assignment from
                   3003:         * any pointer type to void*, and deal with argument conversions
                   3004:         * as though doing an assignment.
                   3005:         */
                   3006:        return (void *) realloc( (char *) ptr, size );
1.13    ! tedu     3007: }
        !          3008: ]])
1.1       deraadt  3009:
1.13    ! tedu     3010: m4_ifdef( [[M4_YY_NO_FLEX_FREE]],,
        !          3011: [[
        !          3012: void yyfree YYFARGS1( void *,ptr)
        !          3013: {
        !          3014:        free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
        !          3015: }
        !          3016: ]])
        !          3017:
        !          3018: %if-tables-serialization definitions
        !          3019: m4preproc_include(`tables_shared.c')
        !          3020:
        !          3021: static int yytbl_read8 (void *v, struct yytbl_reader * rd)
        !          3022: {
        !          3023:     errno = 0;
        !          3024:     if (fread (v, sizeof (flex_uint8_t), 1, rd->fp) != 1){
        !          3025:         errno = EIO;
        !          3026:         return -1;
        !          3027:     }
        !          3028:     rd->bread += sizeof(flex_uint8_t);
        !          3029:     return 0;
        !          3030: }
        !          3031:
        !          3032: static int yytbl_read16 (void *v, struct yytbl_reader * rd)
        !          3033: {
        !          3034:     errno = 0;
        !          3035:     if (fread (v, sizeof (flex_uint16_t), 1, rd->fp) != 1){
        !          3036:         errno = EIO;
        !          3037:         return -1;
        !          3038:     }
        !          3039:     *((flex_uint16_t *) v) = ntohs (*((flex_uint16_t *) v));
        !          3040:     rd->bread += sizeof(flex_uint16_t);
        !          3041:     return 0;
        !          3042: }
        !          3043:
        !          3044: static int yytbl_read32 (void *v, struct yytbl_reader * rd)
        !          3045: {
        !          3046:     errno = 0;
        !          3047:     if (fread (v, sizeof (flex_uint32_t), 1, rd->fp) != 1){
        !          3048:         errno = EIO;
        !          3049:         return -1;
        !          3050:     }
        !          3051:     *((flex_uint32_t *) v) = ntohl (*((flex_uint32_t *) v));
        !          3052:     rd->bread += sizeof(flex_uint32_t);
        !          3053:     return 0;
        !          3054: }
        !          3055:
        !          3056: /** Read the header */
        !          3057: static int yytbl_hdr_read YYFARGS2(struct yytbl_hdr *, th, struct yytbl_reader *, rd)
        !          3058: {
        !          3059:     int     bytes;
        !          3060:     memset (th, 0, sizeof (struct yytbl_hdr));
        !          3061:
        !          3062:     if (yytbl_read32 (&(th->th_magic), rd) != 0)
        !          3063:         return -1;
        !          3064:
        !          3065:     if (th->th_magic != YYTBL_MAGIC){
        !          3066:         YY_FATAL_ERROR( "bad magic number" );   /* TODO: not fatal. */
        !          3067:         return -1;
        !          3068:     }
        !          3069:
        !          3070:     if (yytbl_read32 (&(th->th_hsize), rd) != 0
        !          3071:         || yytbl_read32 (&(th->th_ssize), rd) != 0
        !          3072:         || yytbl_read16 (&(th->th_flags), rd) != 0)
        !          3073:         return -1;
        !          3074:
        !          3075:     /* Sanity check on header size. Greater than 1k suggests some funny business. */
        !          3076:     if (th->th_hsize < 16 || th->th_hsize > 1024){
        !          3077:         YY_FATAL_ERROR( "insane header size detected" );   /* TODO: not fatal. */
        !          3078:         return -1;
        !          3079:     }
        !          3080:
        !          3081:     /* Allocate enough space for the version and name fields */
        !          3082:     bytes = th->th_hsize - 14;
        !          3083:     th->th_version = (char *) yyalloc (bytes M4_YY_CALL_LAST_ARG);
        !          3084:     if ( ! th->th_version )
        !          3085:         YY_FATAL_ERROR( "out of dynamic memory in yytbl_hdr_read()" );
        !          3086:
        !          3087:     /* we read it all into th_version, and point th_name into that data */
        !          3088:     if (fread (th->th_version, 1, bytes, rd->fp) != bytes){
        !          3089:         errno = EIO;
        !          3090:         yyfree(th->th_version M4_YY_CALL_LAST_ARG);
        !          3091:         th->th_version = NULL;
        !          3092:         return -1;
        !          3093:     }
        !          3094:     else
        !          3095:         rd->bread += bytes;
        !          3096:
        !          3097:     th->th_name = th->th_version + strlen (th->th_version) + 1;
        !          3098:     return 0;
        !          3099: }
        !          3100:
        !          3101: /** lookup id in the dmap list.
        !          3102:  *  @param dmap pointer to first element in list
        !          3103:  *  @return NULL if not found.
        !          3104:  */
        !          3105: static struct yytbl_dmap *yytbl_dmap_lookup YYFARGS2(struct yytbl_dmap *, dmap,
        !          3106:                                                       int, id)
        !          3107: {
        !          3108:     while (dmap->dm_id)
        !          3109:         if (dmap->dm_id == id)
        !          3110:             return dmap;
        !          3111:         else
        !          3112:             dmap++;
        !          3113:     return NULL;
        !          3114: }
        !          3115:
        !          3116: /** Read a table while mapping its contents to the local array.
        !          3117:  *  @param dmap used to performing mapping
        !          3118:  *  @return 0 on success
        !          3119:  */
        !          3120: static int yytbl_data_load YYFARGS2(struct yytbl_dmap *, dmap, struct yytbl_reader*, rd)
        !          3121: {
        !          3122:     struct yytbl_data td;
        !          3123:     struct yytbl_dmap *transdmap=0;
        !          3124:     int     len, i, rv, inner_loop_count;
        !          3125:     void   *p=0;
        !          3126:
        !          3127:     memset (&td, 0, sizeof (struct yytbl_data));
        !          3128:
        !          3129:     if (yytbl_read16 (&td.td_id, rd) != 0
        !          3130:         || yytbl_read16 (&td.td_flags, rd) != 0
        !          3131:         || yytbl_read32 (&td.td_hilen, rd) != 0
        !          3132:         || yytbl_read32 (&td.td_lolen, rd) != 0)
        !          3133:         return -1;
        !          3134:
        !          3135:     /* Lookup the map for the transition table so we have it in case we need it
        !          3136:      * inside the loop below. This scanner might not even have a transition
        !          3137:      * table, which is ok.
        !          3138:      */
        !          3139:     transdmap = yytbl_dmap_lookup (dmap, YYTD_ID_TRANSITION M4_YY_CALL_LAST_ARG);
        !          3140:
        !          3141:     if ((dmap = yytbl_dmap_lookup (dmap, td.td_id M4_YY_CALL_LAST_ARG)) == NULL){
        !          3142:         YY_FATAL_ERROR( "table id not found in map." );   /* TODO: not fatal. */
        !          3143:         return -1;
        !          3144:     }
        !          3145:
        !          3146:     /* Allocate space for table.
        !          3147:      * The --full yy_transition table is a special case, since we
        !          3148:      * need the dmap.dm_sz entry to tell us the sizeof the individual
        !          3149:      * struct members.
        !          3150:      */
        !          3151:     {
        !          3152:     size_t  bytes;
        !          3153:
        !          3154:     if ((td.td_flags & YYTD_STRUCT))
        !          3155:         bytes = sizeof(struct yy_trans_info) * td.td_lolen * (td.td_hilen ? td.td_hilen : 1);
        !          3156:     else
        !          3157:         bytes = td.td_lolen * (td.td_hilen ? td.td_hilen : 1) * dmap->dm_sz;
        !          3158:
        !          3159:     if(M4_YY_TABLES_VERIFY)
        !          3160:         /* We point to the array itself */
        !          3161:         p = dmap->dm_arr;
        !          3162:     else
        !          3163:         /* We point to the address of a pointer. */
        !          3164:         *dmap->dm_arr = p = (void *) yyalloc (bytes M4_YY_CALL_LAST_ARG);
        !          3165:         if ( ! p )
        !          3166:             YY_FATAL_ERROR( "out of dynamic memory in yytbl_data_load()" );
        !          3167:     }
        !          3168:
        !          3169:     /* If it's a struct, we read 2 integers to get one element */
        !          3170:     if ((td.td_flags & YYTD_STRUCT) != 0)
        !          3171:         inner_loop_count = 2;
        !          3172:     else
        !          3173:         inner_loop_count = 1;
        !          3174:
        !          3175:     /* read and map each element.
        !          3176:      * This loop iterates once for each element of the td_data array.
        !          3177:      * Notice that we increment 'i' in the inner loop.
        !          3178:      */
        !          3179:     len = yytbl_calc_total_len (&td);
        !          3180:     for (i = 0; i < len; ){
        !          3181:         int    j;
        !          3182:
        !          3183:
        !          3184:         /* This loop really executes exactly 1 or 2 times.
        !          3185:          * The second time is to handle the second member of the
        !          3186:          * YYTD_STRUCT for the yy_transition array.
        !          3187:          */
        !          3188:         for (j = 0; j < inner_loop_count; j++, i++) {
        !          3189:             flex_int32_t t32;
        !          3190:
        !          3191:             /* read into t32 no matter what the real size is. */
        !          3192:             {
        !          3193:             flex_int16_t t16;
        !          3194:             flex_int8_t  t8;
        !          3195:
        !          3196:             switch (YYTDFLAGS2BYTES (td.td_flags)) {
        !          3197:             case sizeof (flex_int32_t):
        !          3198:                 rv = yytbl_read32 (&t32, rd);
        !          3199:                 break;
        !          3200:             case sizeof (flex_int16_t):
        !          3201:                 rv = yytbl_read16 (&t16, rd);
        !          3202:                 t32 = t16;
        !          3203:                 break;
        !          3204:             case sizeof (flex_int8_t):
        !          3205:                 rv = yytbl_read8 (&t8, rd);
        !          3206:                 t32 = t8;
        !          3207:                 break;
        !          3208:             default:
        !          3209:                 YY_FATAL_ERROR( "invalid td_flags" );   /* TODO: not fatal. */
        !          3210:                 return -1;
        !          3211:             }
        !          3212:             }
        !          3213:             if (rv != 0)
        !          3214:                 return -1;
        !          3215:
        !          3216:             /* copy into the deserialized array... */
        !          3217:
        !          3218:             if ((td.td_flags & YYTD_STRUCT)) {
        !          3219:                 /* t32 is the j'th member of a two-element struct. */
        !          3220:                 void   *v;
        !          3221:
        !          3222:                 v = j == 0 ? &(((struct yy_trans_info *) p)->yy_verify)
        !          3223:                     : &(((struct yy_trans_info *) p)->yy_nxt);
        !          3224:
        !          3225:                 switch (dmap->dm_sz) {
        !          3226:                 case sizeof (flex_int32_t):
        !          3227:                     if (M4_YY_TABLES_VERIFY){
        !          3228:                         if( ((flex_int32_t *) v)[0] != (flex_int32_t) t32)
        !          3229:                            YY_FATAL_ERROR( "tables verification failed at YYTD_STRUCT flex_int32_t" );
        !          3230:                     }else
        !          3231:                         ((flex_int32_t *) v)[0] = (flex_int32_t) t32;
        !          3232:                     break;
        !          3233:                 case sizeof (flex_int16_t):
        !          3234:                     if (M4_YY_TABLES_VERIFY ){
        !          3235:                         if(((flex_int16_t *) v)[0] != (flex_int16_t) t32)
        !          3236:                         YY_FATAL_ERROR( "tables verification failed at YYTD_STRUCT flex_int16_t" );
        !          3237:                     }else
        !          3238:                         ((flex_int16_t *) v)[0] = (flex_int16_t) t32;
        !          3239:                     break;
        !          3240:                 case sizeof(flex_int8_t):
        !          3241:                     if (M4_YY_TABLES_VERIFY ){
        !          3242:                          if( ((flex_int8_t *) v)[0] != (flex_int8_t) t32)
        !          3243:                         YY_FATAL_ERROR( "tables verification failed at YYTD_STRUCT flex_int8_t" );
        !          3244:                     }else
        !          3245:                         ((flex_int8_t *) v)[0] = (flex_int8_t) t32;
        !          3246:                     break;
        !          3247:                 default:
        !          3248:                     YY_FATAL_ERROR( "invalid dmap->dm_sz for struct" );   /* TODO: not fatal. */
        !          3249:                     return -1;
        !          3250:                 }
        !          3251:
        !          3252:                 /* if we're done with j, increment p */
        !          3253:                 if (j == 1)
        !          3254:                     p = (struct yy_trans_info *) p + 1;
        !          3255:             }
        !          3256:             else if ((td.td_flags & YYTD_PTRANS)) {
        !          3257:                 /* t32 is an index into the transition array. */
        !          3258:                 struct yy_trans_info *v;
        !          3259:
        !          3260:
        !          3261:                 if (!transdmap){
        !          3262:                     YY_FATAL_ERROR( "transition table not found" );   /* TODO: not fatal. */
        !          3263:                     return -1;
        !          3264:                 }
        !          3265:
        !          3266:                 if( M4_YY_TABLES_VERIFY)
        !          3267:                     v = &(((struct yy_trans_info *) (transdmap->dm_arr))[t32]);
        !          3268:                 else
        !          3269:                     v = &((*((struct yy_trans_info **) (transdmap->dm_arr)))[t32]);
        !          3270:
        !          3271:                 if(M4_YY_TABLES_VERIFY ){
        !          3272:                     if( ((struct yy_trans_info **) p)[0] != v)
        !          3273:                         YY_FATAL_ERROR( "tables verification failed at YYTD_PTRANS" );
        !          3274:                 }else
        !          3275:                     ((struct yy_trans_info **) p)[0] = v;
        !          3276:
        !          3277:                 /* increment p */
        !          3278:                 p = (struct yy_trans_info **) p + 1;
        !          3279:             }
        !          3280:             else {
        !          3281:                 /* t32 is a plain int. copy data, then incrememnt p. */
        !          3282:                 switch (dmap->dm_sz) {
        !          3283:                 case sizeof (flex_int32_t):
        !          3284:                     if(M4_YY_TABLES_VERIFY ){
        !          3285:                         if( ((flex_int32_t *) p)[0] != (flex_int32_t) t32)
        !          3286:                         YY_FATAL_ERROR( "tables verification failed at flex_int32_t" );
        !          3287:                     }else
        !          3288:                         ((flex_int32_t *) p)[0] = (flex_int32_t) t32;
        !          3289:                     p = ((flex_int32_t *) p) + 1;
        !          3290:                     break;
        !          3291:                 case sizeof (flex_int16_t):
        !          3292:                     if(M4_YY_TABLES_VERIFY ){
        !          3293:                         if( ((flex_int16_t *) p)[0] != (flex_int16_t) t32)
        !          3294:                         YY_FATAL_ERROR( "tables verification failed at flex_int16_t" );
        !          3295:                     }else
        !          3296:                         ((flex_int16_t *) p)[0] = (flex_int16_t) t32;
        !          3297:                     p = ((flex_int16_t *) p) + 1;
        !          3298:                     break;
        !          3299:                 case sizeof (flex_int8_t):
        !          3300:                     if(M4_YY_TABLES_VERIFY ){
        !          3301:                         if( ((flex_int8_t *) p)[0] != (flex_int8_t) t32)
        !          3302:                         YY_FATAL_ERROR( "tables verification failed at flex_int8_t" );
        !          3303:                     }else
        !          3304:                         ((flex_int8_t *) p)[0] = (flex_int8_t) t32;
        !          3305:                     p = ((flex_int8_t *) p) + 1;
        !          3306:                     break;
        !          3307:                 default:
        !          3308:                     YY_FATAL_ERROR( "invalid dmap->dm_sz for plain int" );   /* TODO: not fatal. */
        !          3309:                     return -1;
        !          3310:                 }
        !          3311:             }
        !          3312:         }
        !          3313:
        !          3314:     }
        !          3315:
        !          3316:     /* Now eat padding. */
        !          3317:     {
        !          3318:         int pad;
        !          3319:         pad = yypad64(rd->bread);
        !          3320:         while(--pad >= 0){
        !          3321:             flex_int8_t t8;
        !          3322:             if(yytbl_read8(&t8,rd) != 0)
        !          3323:                 return -1;
        !          3324:         }
        !          3325:     }
        !          3326:
        !          3327:     return 0;
        !          3328: }
        !          3329:
        !          3330: %define-yytables   The name for this specific scanner's tables.
        !          3331:
        !          3332: /* Find the key and load the DFA tables from the given stream.  */
        !          3333: static int yytbl_fload YYFARGS2(FILE *, fp, const char *, key)
        !          3334: {
        !          3335:     int rv=0;
        !          3336:     struct yytbl_hdr th;
        !          3337:     struct yytbl_reader rd;
        !          3338:
        !          3339:     rd.fp = fp;
        !          3340:     th.th_version = NULL;
        !          3341:
        !          3342:     /* Keep trying until we find the right set of tables or end of file. */
        !          3343:     while (!feof(rd.fp)) {
        !          3344:         rd.bread = 0;
        !          3345:         if (yytbl_hdr_read (&th, &rd M4_YY_CALL_LAST_ARG) != 0){
        !          3346:             rv = -1;
        !          3347:             goto return_rv;
        !          3348:         }
        !          3349:
        !          3350:         /* A NULL key means choose the first set of tables. */
        !          3351:         if (key == NULL)
        !          3352:             break;
        !          3353:
        !          3354:         if (strcmp(th.th_name,key) != 0){
        !          3355:             /* Skip ahead to next set */
        !          3356:             fseek(rd.fp, th.th_ssize - th.th_hsize, SEEK_CUR);
        !          3357:             yyfree(th.th_version M4_YY_CALL_LAST_ARG);
        !          3358:             th.th_version = NULL;
        !          3359:         }
        !          3360:         else
        !          3361:             break;
        !          3362:     }
        !          3363:
        !          3364:     while (rd.bread < th.th_ssize){
        !          3365:         /* Load the data tables */
        !          3366:         if(yytbl_data_load (yydmap,&rd M4_YY_CALL_LAST_ARG) != 0){
        !          3367:             rv = -1;
        !          3368:             goto return_rv;
        !          3369:         }
        !          3370:     }
        !          3371:
        !          3372: return_rv:
        !          3373:     if(th.th_version){
        !          3374:         yyfree(th.th_version M4_YY_CALL_LAST_ARG);
        !          3375:         th.th_version = NULL;
        !          3376:     }
        !          3377:
        !          3378:     return rv;
        !          3379: }
        !          3380:
        !          3381: /** Load the DFA tables for this scanner from the given stream.  */
        !          3382: int yytables_fload YYFARGS1(FILE *, fp)
        !          3383: {
        !          3384:
        !          3385:     if( yytbl_fload(fp, YYTABLES_NAME M4_YY_CALL_LAST_ARG) != 0)
        !          3386:         return -1;
        !          3387:     return 0;
        !          3388: }
        !          3389:
        !          3390: /** Destroy the loaded tables, freeing memory, etc.. */
        !          3391: int yytables_destroy YYFARGS0(void)
        !          3392: {
        !          3393:     struct yytbl_dmap *dmap=0;
        !          3394:
        !          3395:     if(!M4_YY_TABLES_VERIFY){
        !          3396:         /* Walk the dmap, freeing the pointers */
        !          3397:         for(dmap=yydmap; dmap->dm_id; dmap++) {
        !          3398:             void * v;
        !          3399:             v = dmap->dm_arr;
        !          3400:             if(v && *(char**)v){
        !          3401:                     yyfree(*(char**)v M4_YY_CALL_LAST_ARG);
        !          3402:                     *(char**)v = NULL;
        !          3403:             }
        !          3404:         }
        !          3405:     }
        !          3406:
        !          3407:     return 0;
        !          3408: }
        !          3409:
        !          3410: /* end table serialization code definitions */
        !          3411: %endif
        !          3412:
        !          3413:
        !          3414: m4_ifdef([[M4_YY_MAIN]], [[
        !          3415: int main M4_YY_PARAMS(void);
        !          3416:
        !          3417: int main ()
        !          3418: {
        !          3419:
        !          3420: %if-reentrant
        !          3421:     yyscan_t lexer;
        !          3422:     yylex_init(&lexer);
        !          3423:     yylex( lexer );
        !          3424:     yylex_destroy( lexer);
1.1       deraadt  3425:
1.13    ! tedu     3426: %endif
        !          3427: %if-not-reentrant
1.1       deraadt  3428:        yylex();
1.13    ! tedu     3429: %endif
        !          3430:
1.1       deraadt  3431:        return 0;
1.13    ! tedu     3432: }
        !          3433: ]])
        !          3434:
        !          3435: %ok-for-header
        !          3436: m4_ifdef( [[M4_YY_IN_HEADER]],
        !          3437: [[
        !          3438: #undef YY_NEW_FILE
        !          3439: #undef YY_FLUSH_BUFFER
        !          3440: #undef yy_set_bol
        !          3441: #undef yy_new_buffer
        !          3442: #undef yy_set_interactive
        !          3443: #undef YY_DO_BEFORE_ACTION
        !          3444:
        !          3445: #ifdef YY_DECL_IS_OURS
        !          3446: #undef YY_DECL_IS_OURS
        !          3447: #undef YY_DECL
1.1       deraadt  3448: #endif
1.13    ! tedu     3449: ]])