105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 2 "scan-code.c"
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 4 "scan-code.c"
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define  YY_INT_ALIGNED short int
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A lexical scanner generated by flex */
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_create_buffer code__create_buffer
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_delete_buffer code__delete_buffer
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_flex_debug code__flex_debug
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_init_buffer code__init_buffer
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_flush_buffer code__flush_buffer
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_load_buffer_state code__load_buffer_state
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_switch_to_buffer code__switch_to_buffer
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyin code_in
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyleng code_leng
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylex code_lex
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylineno code_lineno
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyout code_out
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyrestart code_restart
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yytext code_text
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yywrap code_wrap
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyalloc code_alloc
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyrealloc code_realloc
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyfree code_free
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define FLEX_SCANNER
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_FLEX_MAJOR_VERSION 2
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_FLEX_MINOR_VERSION 5
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_FLEX_SUBMINOR_VERSION 37
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if YY_FLEX_SUBMINOR_VERSION > 0
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define FLEX_BETA
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* First, we deal with  platform-specific or compiler-specific issues. */
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* begin standard C headers. */
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <stdio.h>
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <string.h>
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <errno.h>
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <stdlib.h>
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-tables-serialization */
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* end standard C headers. */
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-or-c++ */
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* flex integer type definitions */
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef FLEXINT_H
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define FLEXINT_H
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * if you want the limit (max/min) macros for int types.
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef __STDC_LIMIT_MACROS
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define __STDC_LIMIT_MACROS 1
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <inttypes.h>
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int8_t flex_int8_t;
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef uint8_t flex_uint8_t;
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int16_t flex_int16_t;
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef uint16_t flex_uint16_t;
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int32_t flex_int32_t;
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef uint32_t flex_uint32_t;
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef signed char flex_int8_t;
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef short int flex_int16_t;
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int flex_int32_t;
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned char flex_uint8_t;
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned short int flex_uint16_t;
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned int flex_uint32_t;
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Limits of integral types. */
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT8_MIN
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT8_MIN               (-128)
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT16_MIN
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT16_MIN              (-32767-1)
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT32_MIN
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT32_MIN              (-2147483647-1)
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT8_MAX
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT8_MAX               (127)
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT16_MAX
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT16_MAX              (32767)
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT32_MAX
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT32_MAX              (2147483647)
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef UINT8_MAX
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT8_MAX              (255U)
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef UINT16_MAX
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT16_MAX             (65535U)
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef UINT32_MAX
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT32_MAX             (4294967295U)
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* ! C99 */
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* ! FLEXINT_H */
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __cplusplus
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The "const" storage-class-modifier is valid. */
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_USE_CONST
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else	/* ! __cplusplus */
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* C99 requires __STDC__ to be defined as 1. */
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined (__STDC__)
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_USE_CONST
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif	/* defined (__STDC__) */
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif	/* ! __cplusplus */
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef YY_USE_CONST
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyconst const
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyconst
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Returned upon end-of-file. */
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_NULL 0
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Promotes a possibly negative, possibly signed char to an unsigned
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * integer for use as an array index.  If the signed char is negative,
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * we want to instead treat it as an 8-bit unsigned char, hence the
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * double cast.
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Enter a start condition.  This macro really ought to take a parameter,
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * but we do it the disgusting crufty way forced on us by the ()-less
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * definition of BEGIN.
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define BEGIN (yy_start) = 1 + 2 *
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Translate the current start state into a value that can be later handed
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * to BEGIN to return to the state.  The YYSTATE alias is for lex
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * compatibility.
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_START (((yy_start) - 1) / 2)
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYSTATE YY_START
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Action number for EOF rule of a given start state. */
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special action meaning "start processing a new file". */
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_NEW_FILE code_restart(code_in  )
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_END_OF_BUFFER_CHAR 0
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Size of default input buffer. */
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_BUF_SIZE
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_BUF_SIZE 16384
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The state buf must be large enough to hold one state per character in the main buffer.
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_TYPEDEF_YY_BUFFER_STATE
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_TYPEDEF_YY_BUFFER_STATE
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef struct yy_buffer_state *YY_BUFFER_STATE;
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_TYPEDEF_YY_SIZE_T
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_TYPEDEF_YY_SIZE_T
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef size_t yy_size_t;
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern yy_size_t code_leng;
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern FILE *code_in, *code_out;
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define EOB_ACT_CONTINUE_SCAN 0
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define EOB_ACT_END_OF_FILE 1
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define EOB_ACT_LAST_MATCH 2
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    #define YY_LESS_LINENO(n)
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return all but the first "n" matched characters back to the input stream. */
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyless(n) \
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	do \
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{ \
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Undo effects of setting up code_text. */ \
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        int yyless_macro_arg = (n); \
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YY_LESS_LINENO(yyless_macro_arg);\
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*yy_cp = (yy_hold_char); \
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_RESTORE_YY_MORE_OFFSET \
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_DO_BEFORE_ACTION; /* set up code_text again */ \
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		} \
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	while ( 0 )
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define unput(c) yyunput( c, (yytext_ptr)  )
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_STRUCT_YY_BUFFER_STATE
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_STRUCT_YY_BUFFER_STATE
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstruct yy_buffer_state
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	FILE *yy_input_file;
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	char *yy_ch_buf;		/* input buffer */
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	char *yy_buf_pos;		/* current position in input buffer */
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Size of input buffer in bytes, not including room for EOB
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * characters.
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_size_t yy_buf_size;
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Number of characters read into yy_ch_buf, not including EOB
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * characters.
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_size_t yy_n_chars;
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Whether we "own" the buffer - i.e., we know we created it,
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * and can realloc() it to grow it, and should free() it to
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * delete it.
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int yy_is_our_buffer;
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Whether this is an "interactive" input source; if so, and
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * if we're using stdio for input, then we want to use getc()
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * instead of fread(), to make sure we stop fetching input after
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * each newline.
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int yy_is_interactive;
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Whether we're considered to be at the beginning of a line.
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * If so, '^' rules will be active on the next match, otherwise
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * not.
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int yy_at_bol;
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yy_bs_lineno; /**< The line count. */
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yy_bs_column; /**< The column count. */
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Whether to try to fill the input buffer when we reach the
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * end of it.
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int yy_fill_buffer;
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int yy_buffer_status;
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_BUFFER_NEW 0
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_BUFFER_NORMAL 1
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* When an EOF's been seen but there's still some text to process
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * shouldn't try reading from the input source any more.  We might
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * still have a bunch of tokens to match, though, because of
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * possible backing-up.
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 *
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * When we actually see the EOF, we change the status to "new"
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * (via code_restart()), so that the user can continue scanning by
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * just pointing code_in at a new input file.
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_BUFFER_EOF_PENDING 2
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	};
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !YY_STRUCT_YY_BUFFER_STATE */
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Stack of input buffers. */
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* We provide macros for accessing buffer states in case in the
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * future we want to put the buffer states in a more general
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * "scanner state".
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * Returns the top of the stack, or NULL.
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                          : NULL)
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Same as previous macro, but useful when we know that the buffer stack is not
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * NULL or when we need an lvalue. For internal use only.
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* yy_hold_char holds the character lost when code_text is formed. */
36005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char yy_hold_char;
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_size_t code_leng;
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Points to current character in buffer. */
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char *yy_c_buf_p = (char *) 0;
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_init = 0;		/* whether we need to initialize */
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_start = 0;	/* start state number */
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Flag which is used to allow code_wrap()'s to do buffer switches
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * instead of setting up a fresh code_in.  A bit of a hack ...
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
37205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_did_buffer_switch_on_eof;
37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_restart (FILE *input_file  );
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
37905436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE code__create_buffer (FILE *file,int size  );
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code__delete_buffer (YY_BUFFER_STATE b  );
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code__flush_buffer (YY_BUFFER_STATE b  );
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_push_buffer_state (YY_BUFFER_STATE new_buffer  );
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_pop_buffer_state (void );
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void code_ensure_buffer_stack (void );
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void code__load_buffer_state (void );
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void code__init_buffer (YY_BUFFER_STATE b,FILE *file  );
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_FLUSH_BUFFER code__flush_buffer(YY_CURRENT_BUFFER )
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE code__scan_buffer (char *base,yy_size_t size  );
39205436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE code__scan_string (yyconst char *yy_str  );
39305436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE code__scan_bytes (yyconst char *bytes,yy_size_t len  );
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid *code_alloc (yy_size_t  );
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid *code_realloc (void *,yy_size_t  );
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_free (void *  );
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_new_buffer code__create_buffer
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_set_interactive(is_interactive) \
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{ \
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! YY_CURRENT_BUFFER ){ \
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        code_ensure_buffer_stack (); \
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE =    \
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang            code__create_buffer(code_in,YY_BUF_SIZE ); \
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	} \
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_set_bol(at_bol) \
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{ \
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! YY_CURRENT_BUFFER ){\
41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        code_ensure_buffer_stack (); \
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE =    \
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang            code__create_buffer(code_in,YY_BUF_SIZE ); \
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	} \
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [1.0] code_text/code_in/code_out/yy_state_type/code_lineno etc. def's & init go here */
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Begin user sect3 */
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define code_wrap() 1
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_SKIP_YYWRAP
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define FLEX_DEBUG
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned char YY_CHAR;
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43505436638acc7c010349a69c3395f1a57c642dc62Ying WangFILE *code_in = (FILE *) 0, *code_out = (FILE *) 0;
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int yy_state_type;
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern int code_lineno;
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wangint code_lineno = 1;
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern char *code_text;
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yytext_ptr code_text
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yy_state_type yy_get_previous_state (void );
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_get_next_buffer (void );
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_fatal_error (yyconst char msg[]  );
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Done after the current pattern has been matched and before the
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang * corresponding action - sets up code_text.
45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_DO_BEFORE_ACTION \
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yytext_ptr) = yy_bp; \
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [2.0] code to fiddle code_text and code_leng for yymore() goes here \ */\
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code_leng = (size_t) (yy_cp - yy_bp); \
46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_hold_char) = *yy_cp; \
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	*yy_cp = '\0'; \
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [3.0] code to copy yytext_ptr to code_text[] goes here, if %array \ */\
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_c_buf_p) = yy_cp;
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_NUM_RULES 29
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_END_OF_BUFFER 30
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This struct is not used in this scanner,
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but its presence is necessary. */
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstruct yy_trans_info
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{
47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	flex_int32_t yy_verify;
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	flex_int32_t yy_nxt;
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	};
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_accept[101] =
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        0,    0,    0,    0,    3,    3,    4,    4,    4,    4,
48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       19,   19,    0,    0,   30,   28,   27,   28,    2,   28,
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        6,   28,    5,   24,   21,   20,   20,    8,   18,   11,
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        7,   24,   15,   11,   23,   23,   12,   24,   16,   17,
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        8,   11,    7,   28,   11,   12,    1,    0,    0,    3,
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        4,    4,    4,    4,   13,    0,   13,   13,    0,    0,
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        9,   10,    0,   14,    0,   14,   14,    0,   23,   23,
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        0,   19,   25,    0,   26,    0,    0,    0,    0,    0,
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        0,    0,   13,    0,    0,    0,    0,   14,    0,   23,
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        0,    0,    0,    0,    0,   23,    0,   23,   22,    0
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int32_t yy_ec[256] =
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        4,    2,    5,    1,    1,    1,    1,    1,    1,    1,
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    2,    1,    6,    7,    8,    1,    1,    9,    1,
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,   10,    1,    1,   11,   12,   13,   14,   14,   14,
49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       14,   14,   14,   14,   14,   14,   14,    1,   15,   16,
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,   17,    1,   18,   19,   20,   20,   20,   20,   21,
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       20,   20,   22,   20,   20,   23,   20,   20,   20,   20,
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       20,   20,   20,   20,   20,   20,   20,   20,   24,   20,
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       25,   26,   27,    1,   20,    1,   20,   20,   20,   20,
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       20,   20,   28,    1,   29,    1,    1,    1,    1,    1,
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int32_t yy_meta[31] =
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    2,    1,    1,    1,    1,    3,    1,    1,
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        4,    5,    1,    6,    1,    1,    2,    1,    7,    7,
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        7,    7,    7,    7,    3,    1,    8,    1,    1,    2
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_base[113] =
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        0,    1,   21,   41,   66,    0,    4,    8,   12,   14,
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       93,    0,  118,    0,  242,  243,  243,    7,  243,    0,
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      243,   39,  243,  243,  243,  243,  243,  243,  243,  138,
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      243,   34,  243,   42,    0,  217,  243,   33,  243,  243,
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      243,    8,  243,   44,  232,  243,  243,   59,   69,  213,
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      243,   73,  212,   76,  243,  223,    0,  222,    0,    0,
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      243,  243,   79,  243,  205,    0,  202,    0,    0,  188,
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       83,  175,  243,    0,  243,   86,   19,  126,  130,  135,
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      138,  122,    0,  151,  140,  162,  143,    0,  128,  132,
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      168,  130,  128,  108,   37,   36,   47,   29,    0,  243,
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      172,  180,  186,  188,  192,  199,  203,  207,  210,  217,
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      222,  227
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_def[113] =
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      101,  101,  101,  101,  101,    5,    5,    5,    5,    5,
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,   11,  101,   13,  100,  100,  100,  100,  100,  100,
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  102,  100,  100,  100,  100,  100,  100,  100,  100,
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100,  103,  104,  104,  100,  100,  100,  100,
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100,  100,  100,  100,  105,  100,  106,  107,
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100,  100,  100,  108,  100,  109,  104,  104,
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100,  110,  100,  100,  100,  100,  100,  100,
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  102,  105,  106,  111,  100,  100,  108,  112,  104,
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  110,   30,  111,  112,  104,  100,  104,  104,    0,
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_nxt[274] =
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,   49,   50,   49,  100,  100,   16,   17,   17,   21,
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       16,  100,  100,   21,   16,   73,   16,   17,   17,   47,
56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       23,  100,   23,   74,   17,   17,   17,   17,   17,   22,
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       18,   47,   48,   22,   71,   72,   71,   22,   17,   22,
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       52,   53,   52,   61,   48,   17,   62,   17,   17,   64,
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       18,   99,   65,   61,   73,   67,   62,   98,   17,   63,
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       76,   77,   76,   64,   54,   17,   68,   17,   19,   63,
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       49,   50,   49,   17,   79,   53,   79,   81,   82,   81,
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       86,   87,   86,   17,   71,   72,   71,   76,   77,   76,
57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       17,   20,   17,   24,   25,   26,   24,   27,   28,   29,
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       30,   31,   24,   24,   24,   32,   24,   33,   24,   24,
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       34,   35,   35,   35,   35,   35,   36,   37,   38,   37,
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       39,   40,   24,   41,  100,   42,   43,   49,   50,   49,
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       44,   79,   53,   79,   55,   45,   79,   53,   79,   81,
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       82,   81,   46,  100,   46,   55,   97,   54,   56,   57,
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       96,   58,   61,   59,   64,   62,   57,   57,   57,   57,
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       57,   57,   60,   86,   87,   86,   55,   93,   63,   71,
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       72,   71,   16,   16,   16,   16,   16,   16,   16,   16,
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       51,   51,   51,   51,   51,   51,   51,   51,   66,   66,
58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       66,   66,   66,   69,   69,   83,   83,   83,   83,   84,
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       91,   84,   84,   84,   84,   84,   84,   85,   90,   85,
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       88,   88,   88,   88,   89,   67,   89,   92,   67,   92,
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       92,   92,   92,   92,   92,   94,   94,   94,   94,   94,
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       95,   95,   95,   95,   95,   58,   58,   80,   78,   75,
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       70,  100,   15,  100,  100,  100,  100,  100,  100,  100,
59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_chk[274] =
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        0,   20,   20,   20,    0,    0,    7,    1,    2,    7,
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        8,    0,    0,    8,    9,   42,   10,    1,    2,   18,
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        9,    0,   10,   42,    1,    2,    1,    2,    3,    7,
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        3,   77,   18,    8,   38,   38,   38,    9,    3,   10,
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       22,   22,   22,   32,   77,    3,   32,    3,    4,   34,
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        4,   98,   34,   44,   97,   34,   44,   96,    4,   32,
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       48,   48,   48,   95,   22,    4,   34,    4,    5,   44,
60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       49,   49,   49,    5,   52,   52,   52,   54,   54,   54,
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       63,   63,   63,    5,   71,   71,   71,   76,   76,   76,
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        5,    5,    5,   11,   11,   11,   11,   11,   11,   11,
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       11,   11,   11,   13,   82,   13,   13,   78,   78,   78,
61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       13,   79,   79,   79,   94,   13,   80,   80,   80,   81,
61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       81,   81,   13,   93,   13,   30,   92,   82,   30,   30,
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       90,   30,   87,   30,   89,   87,   30,   30,   30,   30,
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       30,   30,   30,   86,   86,   86,   85,   84,   87,   91,
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       91,   91,  101,  101,  101,  101,  101,  101,  101,  101,
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      102,  102,  102,  102,  102,  102,  102,  102,  103,  103,
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      103,  103,  103,  104,  104,  105,  105,  105,  105,  106,
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       72,  106,  106,  106,  106,  106,  106,  107,   70,  107,
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      108,  108,  108,  108,  109,   67,  109,  110,   65,  110,
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      110,  110,  110,  110,  110,  111,  111,  111,  111,  111,
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      112,  112,  112,  112,  112,   58,   56,   53,   50,   45,
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       36,   15,  100,  100,  100,  100,  100,  100,  100,  100,
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      100,  100,  100
63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yy_state_type yy_last_accepting_state;
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char *yy_last_accepting_cpos;
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern int code__flex_debug;
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wangint code__flex_debug = 1;
63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63905436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_rule_linenum[29] =
64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      132,  142,  143,  153,  158,  163,  169,  174,  179,  183,
64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      187,  192,  200,  207,  215,  216,  217,  244,  246,  247,
64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      248,  252,  260,  262,  267,  275,  285,  288
64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The intent behind this definition is that it'll catch
64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang * any uses of REJECT which flex missed.
64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define REJECT reject_used_but_not_detected
65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yymore() yymore_used_but_not_detected
65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_MORE_ADJ 0
65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_RESTORE_YY_MORE_OFFSET
65305436638acc7c010349a69c3395f1a57c642dc62Ying Wangchar *code_text;
65405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 1 "scan-code.l"
65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Bison Action Scanner                             -*- C -*-
65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Copyright (C) 2006-2012 Free Software Foundation, Inc.
65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This file is part of Bison, the GNU Compiler Compiler.
66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is free software: you can redistribute it and/or modify
66205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   it under the terms of the GNU General Public License as published by
66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the Free Software Foundation, either version 3 of the License, or
66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   (at your option) any later version.
66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is distributed in the hope that it will be useful,
66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but WITHOUT ANY WARRANTY; without even the implied warranty of
66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNU General Public License for more details.
67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   You should have received a copy of the GNU General Public License
67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_NO_INPUT 1
67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 24 "scan-code.l"
67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Work around a bug in flex 2.5.31.  See Debian bug 333231
67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>.  */
67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef code_wrap
67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define code_wrap() 1
67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define FLEX_PREFIX(Id) code_ ## Id
68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include "flex-scanner.h"
68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include "complain.h"
68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include "reader.h"
68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include "getargs.h"
68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include "scan-code.h"
68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include "symlist.h"
68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <c-ctype.h>
69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <get-errno.h>
69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <quote.h>
69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The current calling start condition: SC_RULE_ACTION or
69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   SC_SYMBOL_ACTION. */
69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_DECL static char *code_lex (code_props *self, int sc_context)
69605436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_DECL;
69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_USER_ACTION  location_compute (loc, &loc->end, code_text, code_leng);
69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char *fetch_type_name (char *cp, char const **type_name,
70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                              location dollar_loc);
70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void handle_action_dollar (symbol_list *rule, char *cp,
70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				  location dollar_loc);
70505436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void handle_action_at (symbol_list *rule, char *cp, location at_loc);
70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A string to be pushed to obstack after dollar/at has been handled. */
70805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char *ref_tail_fields;
70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
71005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic location the_location;
71105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic location *loc = &the_location;
71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A string representing the most recent translation.  */
71405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char *last_string;
71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* True if an untyped $$ or $n was seen.  */
71705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic bool untyped_var_seen;
71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* C and C++ comments in code. */
72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Strings and characters in code. */
72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Whether in a rule or symbol action.  Specifies the translation
72405436638acc7c010349a69c3395f1a57c642dc62Ying Wangof $ and @.  */
72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* POSIX says that a tag must be both an id and a C union member, but
72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   historically almost any character is allowed in a tag.  We disallow
72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   NUL and newline, as this simplifies our implementation.  */
72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Zero or more instances of backslash-newline.  Following GCC, allow
73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   white space between the backslash and the newline.  */
73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* C style identifier. Must start with letter. Will be used for
73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   named symbol references. Shall be kept synchronized with
73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   scan-gram.l "letter" and "id". */
73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 735 "scan-code.c"
73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INITIAL 0
73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define SC_COMMENT 1
73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define SC_LINE_COMMENT 2
73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define SC_STRING 3
74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define SC_CHARACTER 4
74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define SC_RULE_ACTION 5
74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define SC_SYMBOL_ACTION 6
74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_NO_UNISTD_H
74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special case for "unistd.h", since it is non-ANSI. We include it way
74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang * down here because we want the user's section 1 to have been scanned first.
74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang * The user has a chance to override it with an option.
74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <unistd.h>
75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_EXTRA_TYPE
75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_EXTRA_TYPE void *
75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Reentrant structure and macros (non-C++). */
76105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
76205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_init_globals (void );
76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif End reentrant structures and macros. */
77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Accessor methods to globals.
77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   These are made visible to non-reentrant scanners for convenience. */
77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77405436638acc7c010349a69c3395f1a57c642dc62Ying Wangint code_lex_destroy (void );
77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77605436638acc7c010349a69c3395f1a57c642dc62Ying Wangint code_get_debug (void );
77705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77805436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_set_debug (int debug_flag  );
77905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78005436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_EXTRA_TYPE code_get_extra (void );
78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78205436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_set_extra (YY_EXTRA_TYPE user_defined  );
78305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78405436638acc7c010349a69c3395f1a57c642dc62Ying WangFILE *code_get_in (void );
78505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78605436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_set_in  (FILE * in_str  );
78705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78805436638acc7c010349a69c3395f1a57c642dc62Ying WangFILE *code_get_out (void );
78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79005436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_set_out  (FILE * out_str  );
79105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79205436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_size_t code_get_leng (void );
79305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79405436638acc7c010349a69c3395f1a57c642dc62Ying Wangchar *code_get_text (void );
79505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79605436638acc7c010349a69c3395f1a57c642dc62Ying Wangint code_get_lineno (void );
79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79805436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_set_lineno (int line_number  );
79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-bison-bridge */
80105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
80205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Macros after this point can all be overridden by user definitions in
80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * section 1.
80505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_SKIP_YYWRAP
80805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __cplusplus
80905436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern "C" int code_wrap (void );
81005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
81105436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern int code_wrap (void );
81205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
81305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
81405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
81605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
81805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
82005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef yytext_ptr
82205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_flex_strncpy (char *,yyconst char *,int );
82305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
82405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef YY_NEED_STRLEN
82605436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_flex_strlen (yyconst char * );
82705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
82805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_NO_INPUT
83005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
83105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
83305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __cplusplus
83405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yyinput (void );
83505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
83605436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int input (void );
83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
83905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
84105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
84205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
84405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
84605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Amount of stuff to slurp up with each read. */
84805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_READ_BUF_SIZE
84905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_READ_BUF_SIZE 8192
85005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
85105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy whatever the last rule matched to the standard output. */
85305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef ECHO
85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
85505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This used to be an fputs(), but since the string might contain NUL's,
85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang * we now use fwrite().
85705436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define ECHO do { if (fwrite( code_text, code_leng, 1, code_out )) {} } while (0)
85905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
86005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only C++ definition */
86105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
86305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
86405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
86505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * is returned in "result".
86605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
86705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_INPUT
86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_INPUT(buf,result,max_size) \
86905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
87005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
87105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{ \
87205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		int c = '*'; \
87305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		size_t n; \
87405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		for ( n = 0; n < max_size && \
87505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			     (c = getc( code_in )) != EOF && c != '\n'; ++n ) \
87605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			buf[n] = (char) c; \
87705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( c == '\n' ) \
87805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			buf[n++] = (char) c; \
87905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( c == EOF && ferror( code_in ) ) \
88005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_FATAL_ERROR( "input in flex scanner failed" ); \
88105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		result = n; \
88205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		} \
88305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	else \
88405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{ \
88505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		errno=0; \
88605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		while ( (result = fread(buf, 1, max_size, code_in))==0 && ferror(code_in)) \
88705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{ \
88805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if( errno != EINTR) \
88905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{ \
89005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				YY_FATAL_ERROR( "input in flex scanner failed" ); \
89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				break; \
89205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				} \
89305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			errno=0; \
89405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			clearerr(code_in); \
89505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			} \
89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}\
89705436638acc7c010349a69c3395f1a57c642dc62Ying Wang\
89805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only C++ definition \ */\
89905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
90005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
90105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
90205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
90305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* No semi-colon after return; correct usage is to write "yyterminate();" -
90405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * we don't want an extra ';' after the "return" because that will cause
90505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * some compilers to complain about unreachable statements.
90605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
90705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef yyterminate
90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyterminate() return YY_NULL
90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Number of entries by which start-condition stack grows. */
91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_START_STACK_INCR
91305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_START_STACK_INCR 25
91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Report a fatal error. */
91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_FATAL_ERROR
91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
92105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-tables-serialization structures and prototypes */
92605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %tables-yydmap generated elements */
93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* end tables serialization structures and prototypes */
93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Default declaration of generated scanner - a define so the user can
93905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * easily add parameters.
94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
94105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_DECL
94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_DECL_IS_OURS 1
94305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
94405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
94505436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern int code_lex (void);
94605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_DECL int code_lex (void)
94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only C++ definition */
95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
95105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !YY_DECL */
95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Code executed at the beginning of each rule, after code_text and code_leng
95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * have been set up.
95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_USER_ACTION
95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_USER_ACTION
95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
96005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Code executed at the end of each rule. */
96105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_BREAK
96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_BREAK break;
96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
96505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [6.0] YY_RULE_SETUP definition goes here */
96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_RULE_SETUP \
96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_USER_ACTION
96805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
96905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
97005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
97105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** The main scanner function which does all the work.
97205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
97305436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_DECL
97405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
97505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register yy_state_type yy_current_state;
97605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register char *yy_cp, *yy_bp;
97705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register int yy_act;
97805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
97905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [7.0] user's declarations go here */
98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 94 "scan-code.l"
98105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Nesting level of the current code in braces.  */
98505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int braces_level = 0;
98605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Whether a semicolon is probably needed.
98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     The heuristic is that a semicolon is not needed after '{', '}',
99005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     ';', or a C preprocessor directive, and that whitespaces and
99105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     comments do not affect this flag.  Note that '{' does not need a
99205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     semicolon because of '{}'.  A semicolon may be needed before a
99305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     cpp directive, but don't bother.
99405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     While it is maintained in several start-conditions (factoring
99605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     opportunities), it is meaningful only for SC_RULE_ACTION. */
99705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  bool need_semicolon = false;
99805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Whether in a C preprocessor directive.  Don't use a start condition
100005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     for this because, at the end of strings and comments, we still need
100105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     to know whether we're in a directive.  */
100205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  bool in_cpp = false;
100305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
100405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* This scanner is special: it is invoked only once, henceforth
100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     is expected to return only once.  This initialization is
100605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     therefore done once per action to translate. */
100705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  aver (sc_context == SC_SYMBOL_ACTION
100805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	|| sc_context == SC_RULE_ACTION
100905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	|| sc_context == INITIAL);
101005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  BEGIN sc_context;
101105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /*------------------------------------------------------------.
101405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | Scanning a C comment.  The initial '/ *' is already eaten.  |
101505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  `------------------------------------------------------------*/
101605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 1018 "scan-code.c"
101805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( !(yy_init) )
102005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
102105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_init) = 1;
102205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef YY_USER_INIT
102405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_USER_INIT;
102505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
102605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! (yy_start) )
102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_start) = 1;	/* first start state */
102905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! code_in )
103105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
103205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			code_in = stdin;
103305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
103405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
103505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
103605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! code_out )
103805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
103905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			code_out = stdout;
104005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
104105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
104205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
104305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
104405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! YY_CURRENT_BUFFER ) {
104505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			code_ensure_buffer_stack ();
104605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_CURRENT_BUFFER_LVALUE =
104705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				code__create_buffer(code_in,YY_BUF_SIZE );
104805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
104905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		code__load_buffer_state( );
105105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
105205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	while ( 1 )		/* loops until end-of-file is reached */
105405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
105505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [8.0] yymore()-related code goes here */
105605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_cp = (yy_c_buf_p);
105705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Support of code_text. */
105905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*yy_cp = (yy_hold_char);
106005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* yy_bp points to the position in yy_ch_buf of the start of
106205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * the current run.
106305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 */
106405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_bp = yy_cp;
106505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [9.0] code to set up and find next match goes here */
106705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_current_state = (yy_start);
106805436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_match:
106905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		do
107005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
107105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
107205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( yy_accept[yy_current_state] )
107305436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
107405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(yy_last_accepting_state) = yy_current_state;
107505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(yy_last_accepting_cpos) = yy_cp;
107605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
107705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
107805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
107905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_current_state = (int) yy_def[yy_current_state];
108005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				if ( yy_current_state >= 101 )
108105436638acc7c010349a69c3395f1a57c642dc62Ying Wang					yy_c = yy_meta[(unsigned int) yy_c];
108205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
108305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
108405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			++yy_cp;
108505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
108605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		while ( yy_current_state != 100 );
108705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_cp = (yy_last_accepting_cpos);
108805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_current_state = (yy_last_accepting_state);
108905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109005436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_find_action:
109105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [10.0] code to find the action number goes here */
109205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_act = yy_accept[yy_current_state];
109305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_DO_BEFORE_ACTION;
109505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [11.0] code for code_lineno update goes here */
109705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109805436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo_action:	/* This label is used only to access EOF actions. */
109905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
110005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [12.0] debug code goes here */
110105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( code__flex_debug )
110205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
110305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( yy_act == 0 )
110405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				fprintf( stderr, "--scanner backing up\n" );
110505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else if ( yy_act < 29 )
110605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
110705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				         (long)yy_rule_linenum[yy_act], code_text );
110805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else if ( yy_act == 29 )
110905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				fprintf( stderr, "--accepting default rule (\"%s\")\n",
111005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				         code_text );
111105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else if ( yy_act == 30 )
111205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				fprintf( stderr, "--(end of buffer or a NUL)\n" );
111305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else
111405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
111505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
111605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		switch ( yy_act )
111805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{ /* beginning of action switch */
111905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [13.0] actions go here */
112005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			case 0: /* must back up */
112105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* undo the effects of YY_DO_BEFORE_ACTION */
112205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			*yy_cp = (yy_hold_char);
112305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_cp = (yy_last_accepting_cpos);
112405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_current_state = (yy_last_accepting_state);
112505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			goto yy_find_action;
112605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
112705436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 1:
112805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* rule 1 can match eol */
112905436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
113005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 132 "scan-code.l"
113105436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW; BEGIN sc_context;
113205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
113305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
113405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*--------------------------------------------------------------.
113505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | Scanning a line comment.  The initial '//' is already eaten.  |
113605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  `--------------------------------------------------------------*/
113705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
113805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
113905436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 2:
114005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* rule 2 can match eol */
114105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
114205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 142 "scan-code.l"
114305436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW; BEGIN sc_context;
114405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
114505436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 3:
114605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* rule 3 can match eol */
114705436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
114805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 143 "scan-code.l"
114905436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW;
115005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
115105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*--------------------------------------------.
115305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | Scanning user-code characters and strings.  |
115405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  `--------------------------------------------*/
115505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115705436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 4:
115805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* rule 4 can match eol */
115905436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
116005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 153 "scan-code.l"
116105436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW;
116205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
116305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116605436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 5:
116705436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
116805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 158 "scan-code.l"
116905436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW; BEGIN sc_context;
117005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
117105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
117205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
117305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
117405436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 6:
117505436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
117605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 163 "scan-code.l"
117705436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW; BEGIN sc_context;
117805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
117905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118205436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 7:
118305436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
118405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 169 "scan-code.l"
118505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
118605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    STRING_GROW;
118705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    BEGIN SC_CHARACTER;
118805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    need_semicolon = true;
118905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
119005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
119105436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 8:
119205436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
119305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 174 "scan-code.l"
119405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
119505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    STRING_GROW;
119605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    BEGIN SC_STRING;
119705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    need_semicolon = true;
119805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
119905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
120005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 9:
120105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* rule 9 can match eol */
120205436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
120305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 179 "scan-code.l"
120405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
120505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    STRING_GROW;
120605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    BEGIN SC_COMMENT;
120705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
120805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
120905436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 10:
121005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* rule 10 can match eol */
121105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
121205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 183 "scan-code.l"
121305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
121405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    STRING_GROW;
121505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    BEGIN SC_LINE_COMMENT;
121605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
121705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
121805436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 11:
121905436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
122005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 187 "scan-code.l"
122105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
122205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    warn_at (*loc, _("stray '%s'"), code_text);
122305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    obstack_escape (&obstack_for_string, code_text);
122405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    need_semicolon = true;
122505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
122605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
122705436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 12:
122805436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
122905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 192 "scan-code.l"
123005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
123105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    obstack_escape (&obstack_for_string, code_text);
123205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    need_semicolon = true;
123305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
123405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
123505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
123605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
123705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
123805436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 13:
123905436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
124005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 200 "scan-code.l"
124105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
124205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ref_tail_fields = NULL;
124305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    handle_action_dollar (self->rule, code_text, *loc);
124405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (ref_tail_fields)
124505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_sgrow (&obstack_for_string, ref_tail_fields);
124605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    need_semicolon = true;
124705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
124805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
124905436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 14:
125005436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
125105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 207 "scan-code.l"
125205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
125305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ref_tail_fields = NULL;
125405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    handle_action_at (self->rule, code_text, *loc);
125505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (ref_tail_fields)
125605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_sgrow (&obstack_for_string, ref_tail_fields);
125705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    need_semicolon = true;
125805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
125905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
126005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 15:
126105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
126205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 215 "scan-code.l"
126305436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW;                 need_semicolon = false;
126405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
126505436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 16:
126605436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
126705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 216 "scan-code.l"
126805436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW; ++braces_level; need_semicolon = false;
126905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
127005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 17:
127105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
127205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 217 "scan-code.l"
127305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
127405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    bool outer_brace = --braces_level == 0;
127505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
127605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* As an undocumented Bison extension, append ';' before the last
127705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       brace in braced code, so that the user code can omit trailing
127805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ';'.  But do not append ';' if emulating Yacc, since Yacc does
127905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       not append one.  This is deprecated since release 2.4.1.  */
128005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (outer_brace && !yacc_flag && language_prio == default_prio
128105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        && skeleton_prio == default_prio && need_semicolon && ! in_cpp)
128205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
128305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        unsigned int indent = 0;
128405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        warn_at_indent (*loc, &indent,
128505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                       _("a ';' might be needed at the end of action code"));
128605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        indent += SUB_INDENT;
128705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        warn_at_indent (*loc, &indent,
128805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                       _("future versions of Bison will not add the ';'"));
128905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        obstack_1grow (&obstack_for_string, ';');
129005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
129105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
129205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    STRING_GROW;
129305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    need_semicolon = false;
129405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
129505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
129605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Preprocessing directives should only be recognized at the beginning
129705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     of lines, allowing whitespace including comments, but in C/C++,
129805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     '#' can only be the start of preprocessor directives or within
129905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     '#define' directives anyway, so don't bother with begin of line.  */
130005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 18:
130105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
130205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 244 "scan-code.l"
130305436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW; in_cpp = true;
130405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
130505436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 19:
130605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* rule 19 can match eol */
130705436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
130805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 246 "scan-code.l"
130905436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW;
131005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
131105436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 20:
131205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* rule 20 can match eol */
131305436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
131405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 247 "scan-code.l"
131505436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW; if (in_cpp) in_cpp = need_semicolon = false;
131605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
131705436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 21:
131805436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
131905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 248 "scan-code.l"
132005436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW;
132105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
132205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* YYFAIL is undocumented and was formally deprecated in Bison
132305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     2.4.2.  */
132405436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 22:
132505436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
132605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 252 "scan-code.l"
132705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
132805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    STRING_GROW; need_semicolon = true;
132905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    warn_at (*loc, _("use of YYFAIL, which is deprecated and will be"
133005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     " removed"));
133105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
133205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
133305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The sole purpose of this is to make sure identifiers that merely
133405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     contain YYFAIL don't produce the above warning.  */
133505436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 23:
133605436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
133705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 260 "scan-code.l"
133805436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW; need_semicolon = true;
133905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
134005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 24:
134105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
134205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 262 "scan-code.l"
134305436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW; need_semicolon = true;
134405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
134505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
134605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
134705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
134805436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 25:
134905436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
135005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 267 "scan-code.l"
135105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
135205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    const char *type_name = NULL;
135305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    fetch_type_name (code_text + 1, &type_name, *loc)[-1] = 0;
135405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    obstack_sgrow (&obstack_for_string, "]b4_dollar_dollar(");
135505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    obstack_quote (&obstack_for_string, type_name);
135605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    obstack_sgrow (&obstack_for_string, ")[");
135705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    self->is_value_used = true;
135805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
135905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
136005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 26:
136105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
136205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 275 "scan-code.l"
136305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
136405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    obstack_sgrow (&obstack_for_string, "]b4_at_dollar[");
136505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    locations_flag = true;
136605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
136705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
136805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
136905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
137005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
137105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Escape M4 quoting characters in C code.  */
137205436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 27:
137305436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
137405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 285 "scan-code.l"
137505436638acc7c010349a69c3395f1a57c642dc62Ying Wangobstack_escape (&obstack_for_string, code_text);
137605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
137705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* By default, grow the string obstack with the input.  */
137805436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 28:
137905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* rule 28 can match eol */
138005436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
138105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 288 "scan-code.l"
138205436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_GROW;
138305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
138405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* End of processing. */
138505436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase YY_STATE_EOF(INITIAL):
138605436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase YY_STATE_EOF(SC_COMMENT):
138705436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase YY_STATE_EOF(SC_LINE_COMMENT):
138805436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase YY_STATE_EOF(SC_STRING):
138905436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase YY_STATE_EOF(SC_CHARACTER):
139005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase YY_STATE_EOF(SC_RULE_ACTION):
139105436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase YY_STATE_EOF(SC_SYMBOL_ACTION):
139205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 291 "scan-code.l"
139305436638acc7c010349a69c3395f1a57c642dc62Ying WangSTRING_FINISH; return last_string;
139405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
139505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
139605436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 29:
139705436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
139805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 294 "scan-code.l"
139905436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_FATAL_ERROR( "flex scanner jammed" );
140005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
140105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 1402 "scan-code.c"
140205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
140305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	case YY_END_OF_BUFFER:
140405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
140505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Amount of text matched not including the EOB char. */
140605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
140705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
140805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Undo the effects of YY_DO_BEFORE_ACTION. */
140905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*yy_cp = (yy_hold_char);
141005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_RESTORE_YY_MORE_OFFSET
141105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
141305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
141405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* We're scanning a new file or input source.  It's
141505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * possible that this happened because the user
141605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * just pointed code_in at a new source and called
141705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * code_lex().  If so, then we have to assure
141805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * consistency between YY_CURRENT_BUFFER and our
141905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * globals.  Here is the right place to do so, because
142005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * this is the first action (other than possibly a
142105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * back-up) that will match for the new input source.
142205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 */
142305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
142405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_CURRENT_BUFFER_LVALUE->yy_input_file = code_in;
142505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
142605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
142705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
142805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Note that here we test for yy_c_buf_p "<=" to the position
142905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * of the first EOB in the buffer, since yy_c_buf_p will
143005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * already have been incremented past the NUL character
143105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * (since all states make transitions on EOB to the
143205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * end-of-buffer state).  Contrast this with the test
143305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * in input().
143405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 */
143505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
143605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{ /* This was really a NUL. */
143705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_state_type yy_next_state;
143805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
143905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
144005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
144105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_current_state = yy_get_previous_state(  );
144205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
144305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* Okay, we're now positioned to make the NUL
144405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * transition.  We couldn't have
144505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * yy_get_previous_state() go ahead and do it
144605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * for us because it doesn't know how to deal
144705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * with the possibility of jamming (and we don't
144805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * want to build jamming into it because then it
144905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * will run more slowly).
145005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 */
145105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
145205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_next_state = yy_try_NUL_trans( yy_current_state );
145305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
145405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
145505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
145605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( yy_next_state )
145705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
145805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				/* Consume the NUL. */
145905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_cp = ++(yy_c_buf_p);
146005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_current_state = yy_next_state;
146105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				goto yy_match;
146205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
146305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else
146505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
146605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
146705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_cp = (yy_last_accepting_cpos);
146805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_current_state = (yy_last_accepting_state);
146905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				goto yy_find_action;
147005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
147105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
147205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
147305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		else switch ( yy_get_next_buffer(  ) )
147405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
147505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			case EOB_ACT_END_OF_FILE:
147605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
147705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(yy_did_buffer_switch_on_eof) = 0;
147805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
147905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				if ( code_wrap( ) )
148005436638acc7c010349a69c3395f1a57c642dc62Ying Wang					{
148105436638acc7c010349a69c3395f1a57c642dc62Ying Wang					/* Note: because we've taken care in
148205436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * yy_get_next_buffer() to have set up
148305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * code_text, we can now set up
148405436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * yy_c_buf_p so that if some total
148505436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * hoser (like flex itself) wants to
148605436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * call the scanner after we return the
148705436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * YY_NULL, it'll still work - another
148805436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * YY_NULL will get returned.
148905436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 */
149005436638acc7c010349a69c3395f1a57c642dc62Ying Wang					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
149105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149205436638acc7c010349a69c3395f1a57c642dc62Ying Wang					yy_act = YY_STATE_EOF(YY_START);
149305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					goto do_action;
149405436638acc7c010349a69c3395f1a57c642dc62Ying Wang					}
149505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				else
149705436638acc7c010349a69c3395f1a57c642dc62Ying Wang					{
149805436638acc7c010349a69c3395f1a57c642dc62Ying Wang					if ( ! (yy_did_buffer_switch_on_eof) )
149905436638acc7c010349a69c3395f1a57c642dc62Ying Wang						YY_NEW_FILE;
150005436638acc7c010349a69c3395f1a57c642dc62Ying Wang					}
150105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				break;
150205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
150305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
150405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			case EOB_ACT_CONTINUE_SCAN:
150505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(yy_c_buf_p) =
150605436638acc7c010349a69c3395f1a57c642dc62Ying Wang					(yytext_ptr) + yy_amount_of_matched_text;
150705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
150805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_current_state = yy_get_previous_state(  );
150905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
151005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_cp = (yy_c_buf_p);
151105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
151205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				goto yy_match;
151305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
151405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			case EOB_ACT_LAST_MATCH:
151505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(yy_c_buf_p) =
151605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
151705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
151805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_current_state = yy_get_previous_state(  );
151905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_cp = (yy_c_buf_p);
152105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
152205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				goto yy_find_action;
152305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
152405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		break;
152505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
152605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	default:
152805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR(
152905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			"fatal flex scanner internal error--no action found" );
153005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	} /* end of action switch */
153105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		} /* end of scanning one token */
153205436638acc7c010349a69c3395f1a57c642dc62Ying Wang} /* end of code_lex */
153305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
153405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
153505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
153605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
153705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
153805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
153905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
154005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
154105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
154205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* yy_get_next_buffer - try to read in a new buffer
154305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
154405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * Returns a code representing an action:
154505436638acc7c010349a69c3395f1a57c642dc62Ying Wang *	EOB_ACT_LAST_MATCH -
154605436638acc7c010349a69c3395f1a57c642dc62Ying Wang *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
154705436638acc7c010349a69c3395f1a57c642dc62Ying Wang *	EOB_ACT_END_OF_FILE - end of file
154805436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
154905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
155005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_get_next_buffer (void)
155105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
155205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
155305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
155405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
155505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
155605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register char *source = (yytext_ptr);
155705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register int number_to_move, i;
155805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int ret_val;
155905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
156005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
156105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR(
156205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		"fatal flex scanner internal error--end of buffer missed" );
156305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
156405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
156505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{ /* Don't try to fill the buffer, so this is an EOF. */
156605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
156705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
156805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* We matched a single character, the EOB, so
156905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * treat this as a final EOF.
157005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 */
157105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			return EOB_ACT_END_OF_FILE;
157205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
157305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
157405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		else
157505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
157605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* We matched some text prior to the EOB, first
157705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * process it.
157805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 */
157905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			return EOB_ACT_LAST_MATCH;
158005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
158105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
158205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Try to read more data. */
158405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* First move last chars to start of buffer. */
158605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
158705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	for ( i = 0; i < number_to_move; ++i )
158905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*(dest++) = *(source++);
159005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
159105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
159205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* don't do the read, it's not guaranteed to return an EOF,
159305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * just force an EOF
159405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 */
159505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
159605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
159705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	else
159805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
159905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_size_t num_to_read =
160005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
160105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		while ( num_to_read <= 0 )
160305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{ /* Not enough room in the buffer - grow it. */
160405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* just a shorter name for the current buffer */
160605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
160705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			int yy_c_buf_p_offset =
160905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(int) ((yy_c_buf_p) - b->yy_ch_buf);
161005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
161105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( b->yy_is_our_buffer )
161205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
161305436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_size_t new_size = b->yy_buf_size * 2;
161405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
161505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				if ( new_size <= 0 )
161605436638acc7c010349a69c3395f1a57c642dc62Ying Wang					b->yy_buf_size += b->yy_buf_size / 8;
161705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				else
161805436638acc7c010349a69c3395f1a57c642dc62Ying Wang					b->yy_buf_size *= 2;
161905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				b->yy_ch_buf = (char *)
162105436638acc7c010349a69c3395f1a57c642dc62Ying Wang					/* Include room in for 2 EOB chars. */
162205436638acc7c010349a69c3395f1a57c642dc62Ying Wang					code_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
162305436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
162405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else
162505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				/* Can't grow it, we don't own it. */
162605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				b->yy_ch_buf = 0;
162705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( ! b->yy_ch_buf )
162905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				YY_FATAL_ERROR(
163005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				"fatal error - scanner input buffer overflow" );
163105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
163305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
163505436638acc7c010349a69c3395f1a57c642dc62Ying Wang						number_to_move - 1;
163605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
163805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( num_to_read > YY_READ_BUF_SIZE )
164005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			num_to_read = YY_READ_BUF_SIZE;
164105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
164205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Read in more data. */
164305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
164405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_n_chars), num_to_read );
164505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
164605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
164705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
164805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
164905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( (yy_n_chars) == 0 )
165005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
165105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( number_to_move == YY_MORE_ADJ )
165205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
165305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			ret_val = EOB_ACT_END_OF_FILE;
165405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			code_restart(code_in  );
165505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
165605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		else
165805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
165905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			ret_val = EOB_ACT_LAST_MATCH;
166005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
166105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				YY_BUFFER_EOF_PENDING;
166205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
166305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
166405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
166505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	else
166605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		ret_val = EOB_ACT_CONTINUE_SCAN;
166705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
166805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
166905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Extend the array by 50%, plus the number we really need. */
167005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
167105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) code_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
167205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
167305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
167405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
167505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
167605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_n_chars) += number_to_move;
167705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
167805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
167905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
168005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
168105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
168205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return ret_val;
168305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
168405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
168505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* yy_get_previous_state - get the state just before the EOB char was reached */
168605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
168705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
168805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
168905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
169005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static yy_state_type yy_get_previous_state (void)
169105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
169205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
169305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
169405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
169505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register yy_state_type yy_current_state;
169605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register char *yy_cp;
169705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
169805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [15.0] code to get the start state into yy_current_state goes here */
169905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_current_state = (yy_start);
170005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
170105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
170205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
170305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [16.0] code to find the next state goes here */
170405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 30);
170505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( yy_accept[yy_current_state] )
170605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
170705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_last_accepting_state) = yy_current_state;
170805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_last_accepting_cpos) = yy_cp;
170905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
171005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
171105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
171205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_current_state = (int) yy_def[yy_current_state];
171305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( yy_current_state >= 101 )
171405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_c = yy_meta[(unsigned int) yy_c];
171505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
171605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
171705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
171805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
171905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return yy_current_state;
172005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
172105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
172205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* yy_try_NUL_trans - try to make a transition on the NUL character
172305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
172405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * synopsis
172505436638acc7c010349a69c3395f1a57c642dc62Ying Wang *	next_state = yy_try_NUL_trans( current_state );
172605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
172705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
172805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
172905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
173005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
173105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
173205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
173305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register int yy_is_jam;
173405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
173505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register char *yy_cp = (yy_c_buf_p);
173605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
173705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register YY_CHAR yy_c = 30;
173805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( yy_accept[yy_current_state] )
173905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
174005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_last_accepting_state) = yy_current_state;
174105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_last_accepting_cpos) = yy_cp;
174205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
174305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
174405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
174505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_current_state = (int) yy_def[yy_current_state];
174605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( yy_current_state >= 101 )
174705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_c = yy_meta[(unsigned int) yy_c];
174805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
174905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
175005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_is_jam = (yy_current_state == 100);
175105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
175205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return yy_is_jam ? 0 : yy_current_state;
175305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
175405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
175505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
175605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
175705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
175805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
175905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
176005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_NO_INPUT
176105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __cplusplus
176205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static int yyinput (void)
176305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
176405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static int input  (void)
176505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
176605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
176705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
176805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
176905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
177005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
177105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int c;
177205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
177305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	*(yy_c_buf_p) = (yy_hold_char);
177405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
177505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
177605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
177705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* yy_c_buf_p now points to the character we want to return.
177805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * If this occurs *before* the EOB characters, then it's a
177905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * valid NUL; if not, then we've hit the end of the buffer.
178005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 */
178105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
178205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* This was really a NUL. */
178305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			*(yy_c_buf_p) = '\0';
178405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
178505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		else
178605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{ /* need more input */
178705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
178805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			++(yy_c_buf_p);
178905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
179005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			switch ( yy_get_next_buffer(  ) )
179105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
179205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				case EOB_ACT_LAST_MATCH:
179305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					/* This happens because yy_g_n_b()
179405436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * sees that we've accumulated a
179505436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * token and flags that we need to
179605436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * try matching the token before
179705436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * proceeding.  But for input(),
179805436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * there's no matching to consider.
179905436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * So convert the EOB_ACT_LAST_MATCH
180005436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * to EOB_ACT_END_OF_FILE.
180105436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 */
180205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
180305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					/* Reset buffer status. */
180405436638acc7c010349a69c3395f1a57c642dc62Ying Wang					code_restart(code_in );
180505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
180605436638acc7c010349a69c3395f1a57c642dc62Ying Wang					/*FALLTHROUGH*/
180705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
180805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				case EOB_ACT_END_OF_FILE:
180905436638acc7c010349a69c3395f1a57c642dc62Ying Wang					{
181005436638acc7c010349a69c3395f1a57c642dc62Ying Wang					if ( code_wrap( ) )
181105436638acc7c010349a69c3395f1a57c642dc62Ying Wang						return EOF;
181205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
181305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					if ( ! (yy_did_buffer_switch_on_eof) )
181405436638acc7c010349a69c3395f1a57c642dc62Ying Wang						YY_NEW_FILE;
181505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __cplusplus
181605436638acc7c010349a69c3395f1a57c642dc62Ying Wang					return yyinput();
181705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
181805436638acc7c010349a69c3395f1a57c642dc62Ying Wang					return input();
181905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
182005436638acc7c010349a69c3395f1a57c642dc62Ying Wang					}
182105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
182205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				case EOB_ACT_CONTINUE_SCAN:
182305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					(yy_c_buf_p) = (yytext_ptr) + offset;
182405436638acc7c010349a69c3395f1a57c642dc62Ying Wang					break;
182505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
182605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
182705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
182805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
182905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
183005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	*(yy_c_buf_p) = '\0';	/* preserve code_text */
183105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_hold_char) = *++(yy_c_buf_p);
183205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
183305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [19.0] update BOL and code_lineno */
183405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
183505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return c;
183605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
183705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
183805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif	/* ifndef YY_NO_INPUT */
183905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
184005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
184105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Immediately switch to a different input stream.
184205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param input_file A readable stream.
184305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
184405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @note This function does not reset the start condition to @c INITIAL .
184505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
184605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
184705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void code_restart  (FILE * input_file )
184805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
184905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
185005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
185105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
185205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
185305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! YY_CURRENT_BUFFER ){
185405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        code_ensure_buffer_stack ();
185505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE =
185605436638acc7c010349a69c3395f1a57c642dc62Ying Wang            code__create_buffer(code_in,YY_BUF_SIZE );
185705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
185805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
185905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code__init_buffer(YY_CURRENT_BUFFER,input_file );
186005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code__load_buffer_state( );
186105436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
186205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
186305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Switch to a different input buffer.
186405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param new_buffer The new input buffer.
186505436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
186605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
186705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
186805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void code__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
186905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
187005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
187105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
187205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
187305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
187405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* TODO. We should be able to replace this entire function body
187505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * with
187605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 *		code_pop_buffer_state();
187705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 *		code_push_buffer_state(new_buffer);
187805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     */
187905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code_ensure_buffer_stack ();
188005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER == new_buffer )
188105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
188205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
188305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER )
188405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
188505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Flush out information for old buffer. */
188605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*(yy_c_buf_p) = (yy_hold_char);
188705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
188805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
188905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
189005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
189105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE = new_buffer;
189205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code__load_buffer_state( );
189305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
189405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* We don't actually know whether we did this switch during
189505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * EOF (code_wrap()) processing, but the only time this flag
189605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * is looked at is after code_wrap() is called, so it's safe
189705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * to go ahead and always set it.
189805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
189905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_did_buffer_switch_on_eof) = 1;
190005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
190105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
190205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
190305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void code__load_buffer_state  (void)
190405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
190505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
190605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
190705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
190805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
190905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
191005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
191105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_hold_char) = *(yy_c_buf_p);
191205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
191305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
191405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Allocate and initialize an input buffer state.
191505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param file A readable stream.
191605436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
191705436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
191805436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @return the allocated buffer state.
191905436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
192005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
192105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YY_BUFFER_STATE code__create_buffer  (FILE * file, int  size )
192205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
192305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
192405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
192505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
192605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BUFFER_STATE b;
192705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
192805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b = (YY_BUFFER_STATE) code_alloc(sizeof( struct yy_buffer_state )  );
192905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! b )
193005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR( "out of dynamic memory in code__create_buffer()" );
193105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
193205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buf_size = size;
193305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
193405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* yy_ch_buf has to be 2 characters longer than the size given because
193505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * we need to put in 2 end-of-buffer characters.
193605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
193705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_ch_buf = (char *) code_alloc(b->yy_buf_size + 2  );
193805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! b->yy_ch_buf )
193905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR( "out of dynamic memory in code__create_buffer()" );
194005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
194105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_is_our_buffer = 1;
194205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
194305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code__init_buffer(b,file );
194405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
194505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return b;
194605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
194705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
194805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Destroy the buffer.
194905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param b a buffer created with code__create_buffer()
195005436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
195105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
195205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
195305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void code__delete_buffer (YY_BUFFER_STATE  b )
195405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
195505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
195605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
195705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
195805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
195905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! b )
196005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
196105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
196205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
196305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
196405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
196505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( b->yy_is_our_buffer )
196605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		code_free((void *) b->yy_ch_buf  );
196705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
196805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code_free((void *) b  );
196905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
197005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
197105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Initializes or reinitializes a buffer.
197205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * This function is sometimes called more than once on the same buffer,
197305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * such as during a code_restart() or at EOF.
197405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
197505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
197605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static void code__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
197705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
197805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
197905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
198005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
198105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
198205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int oerrno = errno;
198305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
198405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code__flush_buffer(b );
198505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
198605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_input_file = file;
198705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_fill_buffer = 1;
198805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
198905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* If b is the current buffer, then code__init_buffer was _probably_
199005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     * called from code_restart() or through yy_get_next_buffer.
199105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     * In that case, we don't want to reset the lineno or column.
199205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     */
199305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (b != YY_CURRENT_BUFFER){
199405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        b->yy_bs_lineno = 1;
199505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        b->yy_bs_column = 0;
199605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
199705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
199805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
199905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
200005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        b->yy_is_interactive = 0;
200105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
200205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
200305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
200405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
200505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	errno = oerrno;
200605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
200705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
200805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
200905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
201005436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
201105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
201205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
201305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void code__flush_buffer (YY_BUFFER_STATE  b )
201405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
201505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
201605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
201705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
201805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	if ( ! b )
201905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
202005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
202105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_n_chars = 0;
202205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
202305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* We always need two end-of-buffer characters.  The first causes
202405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * a transition to the end-of-buffer state.  The second causes
202505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * a jam in that state.
202605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
202705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
202805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
202905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
203005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buf_pos = &b->yy_ch_buf[0];
203105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
203205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_at_bol = 1;
203305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buffer_status = YY_BUFFER_NEW;
203405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
203505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( b == YY_CURRENT_BUFFER )
203605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		code__load_buffer_state( );
203705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
203805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
203905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-or-c++ */
204005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Pushes the new state onto the stack. The new state becomes
204105436638acc7c010349a69c3395f1a57c642dc62Ying Wang *  the current state. This function will allocate the stack
204205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *  if necessary.
204305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *  @param new_buffer The new state.
204405436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
204505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
204605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
204705436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_push_buffer_state (YY_BUFFER_STATE new_buffer )
204805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
204905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
205005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
205105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
205205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	if (new_buffer == NULL)
205305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
205405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
205505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code_ensure_buffer_stack();
205605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
205705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* This block is copied from code__switch_to_buffer. */
205805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER )
205905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
206005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Flush out information for old buffer. */
206105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*(yy_c_buf_p) = (yy_hold_char);
206205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
206305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
206405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
206505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
206605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Only push if top exists. Otherwise, replace top. */
206705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (YY_CURRENT_BUFFER)
206805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack_top)++;
206905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE = new_buffer;
207005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
207105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* copied from code__switch_to_buffer. */
207205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code__load_buffer_state( );
207305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_did_buffer_switch_on_eof) = 1;
207405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
207505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
207605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
207705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-or-c++ */
207805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Removes and deletes the top of the stack, if present.
207905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *  The next element becomes the new top.
208005436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
208105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
208205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
208305436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_pop_buffer_state (void)
208405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
208505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
208605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
208705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
208805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	if (!YY_CURRENT_BUFFER)
208905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
209005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
209105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code__delete_buffer(YY_CURRENT_BUFFER );
209205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE = NULL;
209305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ((yy_buffer_stack_top) > 0)
209405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		--(yy_buffer_stack_top);
209505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
209605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (YY_CURRENT_BUFFER) {
209705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		code__load_buffer_state( );
209805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_did_buffer_switch_on_eof) = 1;
209905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
210005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
210105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
210205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
210305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-or-c++ */
210405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Allocates the stack if it does not exist.
210505436638acc7c010349a69c3395f1a57c642dc62Ying Wang *  Guarantees space for at least one push.
210605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
210705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
210805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void code_ensure_buffer_stack (void)
210905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
211005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
211105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
211205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
211305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_size_t num_to_alloc;
211405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
211505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (!(yy_buffer_stack)) {
211605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
211705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* First allocation is just for 2 elements, since we don't know if this
211805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
211905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * immediate realloc on the next call.
212005436638acc7c010349a69c3395f1a57c642dc62Ying Wang         */
212105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		num_to_alloc = 1;
212205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack) = (struct yy_buffer_state**)code_alloc
212305436638acc7c010349a69c3395f1a57c642dc62Ying Wang								(num_to_alloc * sizeof(struct yy_buffer_state*)
212405436638acc7c010349a69c3395f1a57c642dc62Ying Wang								);
212505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! (yy_buffer_stack) )
212605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_FATAL_ERROR( "out of dynamic memory in code_ensure_buffer_stack()" );
212705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
212805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
212905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
213005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack_max) = num_to_alloc;
213105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack_top) = 0;
213205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
213305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
213405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
213505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
213605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
213705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Increase the buffer to prepare for a possible push. */
213805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		int grow_size = 8 /* arbitrary grow size */;
213905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
214005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		num_to_alloc = (yy_buffer_stack_max) + grow_size;
214105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack) = (struct yy_buffer_state**)code_realloc
214205436638acc7c010349a69c3395f1a57c642dc62Ying Wang								((yy_buffer_stack),
214305436638acc7c010349a69c3395f1a57c642dc62Ying Wang								num_to_alloc * sizeof(struct yy_buffer_state*)
214405436638acc7c010349a69c3395f1a57c642dc62Ying Wang								);
214505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! (yy_buffer_stack) )
214605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_FATAL_ERROR( "out of dynamic memory in code_ensure_buffer_stack()" );
214705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
214805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* zero only the new slots.*/
214905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
215005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack_max) = num_to_alloc;
215105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
215205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
215305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
215405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
215505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
215605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Setup the input buffer state to scan directly from a user-specified character buffer.
215705436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param base the character buffer
215805436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param size the size in bytes of the character buffer
215905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
216005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @return the newly allocated buffer state object.
216105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
216205436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE code__scan_buffer  (char * base, yy_size_t  size )
216305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
216405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BUFFER_STATE b;
216505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
216605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( size < 2 ||
216705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
216805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	     base[size-1] != YY_END_OF_BUFFER_CHAR )
216905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* They forgot to leave room for the EOB's. */
217005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return 0;
217105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
217205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b = (YY_BUFFER_STATE) code_alloc(sizeof( struct yy_buffer_state )  );
217305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! b )
217405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR( "out of dynamic memory in code__scan_buffer()" );
217505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
217605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
217705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buf_pos = b->yy_ch_buf = base;
217805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_is_our_buffer = 0;
217905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_input_file = 0;
218005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_n_chars = b->yy_buf_size;
218105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_is_interactive = 0;
218205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_at_bol = 1;
218305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_fill_buffer = 0;
218405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buffer_status = YY_BUFFER_NEW;
218505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
218605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code__switch_to_buffer(b  );
218705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
218805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return b;
218905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
219005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
219105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
219205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
219305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Setup the input buffer state to scan a string. The next call to code_lex() will
219405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * scan from a @e copy of @a str.
219505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param yystr a NUL-terminated string to scan
219605436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
219705436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @return the newly allocated buffer state object.
219805436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @note If you want to scan bytes that may contain NUL values, then use
219905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *       code__scan_bytes() instead.
220005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
220105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE code__scan_string (yyconst char * yystr )
220205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
220305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
220405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return code__scan_bytes(yystr,strlen(yystr) );
220505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
220605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
220705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
220805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
220905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Setup the input buffer state to scan the given bytes. The next call to code_lex() will
221005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * scan from a @e copy of @a bytes.
221105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param yybytes the byte buffer to scan
221205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
221305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
221405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @return the newly allocated buffer state object.
221505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
221605436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE code__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
221705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
221805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BUFFER_STATE b;
221905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	char *buf;
222005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_size_t n;
222105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int i;
222205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
222305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Get memory for full buffer, including space for trailing EOB's. */
222405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	n = _yybytes_len + 2;
222505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	buf = (char *) code_alloc(n  );
222605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! buf )
222705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR( "out of dynamic memory in code__scan_bytes()" );
222805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
222905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	for ( i = 0; i < _yybytes_len; ++i )
223005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		buf[i] = yybytes[i];
223105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
223205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
223305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
223405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b = code__scan_buffer(buf,n );
223505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! b )
223605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR( "bad buffer in code__scan_bytes()" );
223705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
223805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* It's okay to grow etc. this buffer, and we should throw it
223905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * away when we're done.
224005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
224105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_is_our_buffer = 1;
224205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
224305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return b;
224405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
224505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
224605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
224705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_EXIT_FAILURE
224805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_EXIT_FAILURE 2
224905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
225005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
225105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
225205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_fatal_error (yyconst char* msg )
225305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
225405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	(void) fprintf( stderr, "%s\n", msg );
225505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	exit( YY_EXIT_FAILURE );
225605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
225705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
225805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
225905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
226005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
226105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Redefine yyless() so it works in section 3 code. */
226205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
226305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef yyless
226405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyless(n) \
226505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	do \
226605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{ \
226705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Undo effects of setting up code_text. */ \
226805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        int yyless_macro_arg = (n); \
226905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YY_LESS_LINENO(yyless_macro_arg);\
227005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		code_text[code_leng] = (yy_hold_char); \
227105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_c_buf_p) = code_text + yyless_macro_arg; \
227205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_hold_char) = *(yy_c_buf_p); \
227305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*(yy_c_buf_p) = '\0'; \
227405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		code_leng = yyless_macro_arg; \
227505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		} \
227605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	while ( 0 )
227705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
227805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Accessor  methods (get/set functions) to struct members. */
227905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
228005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
228105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
228205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
228305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
228405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Get the current line number.
228505436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
228605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
228705436638acc7c010349a69c3395f1a57c642dc62Ying Wangint code_get_lineno  (void)
228805436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
228905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
229005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return code_lineno;
229105436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
229205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
229305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Get the input stream.
229405436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
229505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
229605436638acc7c010349a69c3395f1a57c642dc62Ying WangFILE *code_get_in  (void)
229705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
229805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return code_in;
229905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
230005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
230105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Get the output stream.
230205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
230305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
230405436638acc7c010349a69c3395f1a57c642dc62Ying WangFILE *code_get_out  (void)
230505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
230605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return code_out;
230705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
230805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
230905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Get the length of the current token.
231005436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
231105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
231205436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_size_t code_get_leng  (void)
231305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
231405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return code_leng;
231505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
231605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
231705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Get the current token.
231805436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
231905436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
232005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
232105436638acc7c010349a69c3395f1a57c642dc62Ying Wangchar *code_get_text  (void)
232205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
232305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return code_text;
232405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
232505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
232605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
232705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
232805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
232905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Set the current line number.
233005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param line_number
233105436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
233205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
233305436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_set_lineno (int  line_number )
233405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
233505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
233605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    code_lineno = line_number;
233705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
233805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
233905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Set the input stream. This does not discard the current
234005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * input buffer.
234105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param in_str A readable stream.
234205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
234305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @see code__switch_to_buffer
234405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
234505436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_set_in (FILE *  in_str )
234605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
234705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        code_in = in_str ;
234805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
234905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
235005436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_set_out (FILE *  out_str )
235105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
235205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        code_out = out_str ;
235305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
235405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
235505436638acc7c010349a69c3395f1a57c642dc62Ying Wangint code_get_debug  (void)
235605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
235705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return code__flex_debug;
235805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
235905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
236005436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_set_debug (int  bdebug )
236105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
236205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        code__flex_debug = bdebug ;
236305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
236405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
236505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
236605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
236705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
236805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-bison-bridge */
236905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
237005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif if-c-only */
237105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
237205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
237305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_init_globals (void)
237405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
237505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        /* Initialization is the same as for the non-reentrant scanner.
237605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     * This function is called from code_lex_destroy(), so don't allocate here.
237705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     */
237805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
237905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_buffer_stack) = 0;
238005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_buffer_stack_top) = 0;
238105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_buffer_stack_max) = 0;
238205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_c_buf_p) = (char *) 0;
238305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_init) = 0;
238405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_start) = 0;
238505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
238605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Defined in main.c */
238705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef YY_STDINIT
238805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    code_in = stdin;
238905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    code_out = stdout;
239005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
239105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    code_in = (FILE *) 0;
239205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    code_out = (FILE *) 0;
239305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
239405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
239505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* For future reference: Set errno on error, since we are called by
239605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     * code_lex_init()
239705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     */
239805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return 0;
239905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
240005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
240105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
240205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
240305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* code_lex_destroy is for both reentrant and non-reentrant scanners. */
240405436638acc7c010349a69c3395f1a57c642dc62Ying Wangint code_lex_destroy  (void)
240505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
240605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
240705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Pop the buffer stack, destroying each element. */
240805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	while(YY_CURRENT_BUFFER){
240905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		code__delete_buffer(YY_CURRENT_BUFFER  );
241005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE = NULL;
241105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		code_pop_buffer_state();
241205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
241305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
241405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Destroy the stack itself. */
241505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	code_free((yy_buffer_stack) );
241605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_buffer_stack) = NULL;
241705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
241805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Reset the globals. This is important in a non-reentrant scanner so the next time
241905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     * code_lex() is called, initialization will occur. */
242005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yy_init_globals( );
242105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
242205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
242305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
242405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return 0;
242505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
242605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
242705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
242805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*
242905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * Internal utility routines.
243005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
243105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
243205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef yytext_ptr
243305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
243405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
243505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register int i;
243605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	for ( i = 0; i < n; ++i )
243705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		s1[i] = s2[i];
243805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
243905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
244005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
244105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef YY_NEED_STRLEN
244205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_flex_strlen (yyconst char * s )
244305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
244405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register int n;
244505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	for ( n = 0; s[n]; ++n )
244605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		;
244705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
244805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return n;
244905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
245005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
245105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
245205436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid *code_alloc (yy_size_t  size )
245305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
245405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return (void *) malloc( size );
245505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
245605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
245705436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid *code_realloc  (void * ptr, yy_size_t  size )
245805436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
245905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* The cast to (char *) in the following accommodates both
246005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * implementations that use char* generic pointers, and those
246105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * that use void* generic pointers.  It works with the latter
246205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * because both ANSI C and C++ allow castless assignment from
246305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * any pointer type to void*, and deal with argument conversions
246405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * as though doing an assignment.
246505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
246605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return (void *) realloc( (char *) ptr, size );
246705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
246805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
246905436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid code_free (void * ptr )
247005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
247105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	free( (char *) ptr );	/* see code_realloc() for (char *) cast */
247205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
247305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
247405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-tables-serialization definitions */
247505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %define-yytables   The name for this specific scanner's tables. */
247605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYTABLES_NAME "yytables"
247705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
247805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
247905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
248005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
248105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 294 "scan-code.l"
248205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
248305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
248405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
248505436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic inline bool
248605436638acc7c010349a69c3395f1a57c642dc62Ying Wangis_dot_or_dash (char ch)
248705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
248805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return ch == '.' || ch == '-';
248905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
249005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
249105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic inline bool
249205436638acc7c010349a69c3395f1a57c642dc62Ying Wangcontains_dot_or_dash (const char* p)
249305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
249405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  for (; *p; ++p)
249505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (is_dot_or_dash (*p))
249605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      return true;
249705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return false;
249805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
249905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
250005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Defines a variant of a symbolic name resolution. */
250105436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef struct
250205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
250305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Index in symbol list. */
250405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  unsigned symbol_index;
250505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
250605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Matched symbol id and loc. */
250705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  uniqstr id;
250805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  location loc;
250905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
251005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Hiding named reference. */
251105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  named_ref* hidden_by;
251205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
251305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Error flags. May contain zero (no errors) or
251405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     a combination of VARIANT_* values. */
251505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  unsigned err;
251605436638acc7c010349a69c3395f1a57c642dc62Ying Wang} variant;
251705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
251805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set when the variant refers to a symbol hidden
251905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   by an explicit symbol reference. */
252005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define VARIANT_HIDDEN (1 << 0)
252105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
252205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set when the variant refers to a symbol containing
252305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   dots or dashes. Will require explicit bracketing. */
252405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define VARIANT_BAD_BRACKETING (1 << 1)
252505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
252605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set when the variant refers to a symbol which is
252705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   not visible from current midrule. */
252805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define VARIANT_NOT_VISIBLE_FROM_MIDRULE (1 << 2)
252905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
253005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic variant *variant_table = NULL;
253105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic unsigned variant_table_size = 0;
253205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic unsigned variant_count = 0;
253305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
253405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic variant *
253505436638acc7c010349a69c3395f1a57c642dc62Ying Wangvariant_table_grow (void)
253605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
253705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  ++variant_count;
253805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (variant_count > variant_table_size)
253905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
254005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      while (variant_count > variant_table_size)
254105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	variant_table_size = 2 * variant_table_size + 3;
254205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      variant_table = xnrealloc (variant_table, variant_table_size,
254305436638acc7c010349a69c3395f1a57c642dc62Ying Wang				 sizeof *variant_table);
254405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
254505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return &variant_table[variant_count - 1];
254605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
254705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
254805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void
254905436638acc7c010349a69c3395f1a57c642dc62Ying Wangvariant_table_free (void)
255005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
255105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  free (variant_table);
255205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  variant_table = NULL;
255305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  variant_table_size = variant_count = 0;
255405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
255505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
255605436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char *
255705436638acc7c010349a69c3395f1a57c642dc62Ying Wangfind_prefix_end (const char *prefix, char *begin, char *end)
255805436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
255905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  char *ptr = begin;
256005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
256105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  for (; *prefix && ptr != end; ++prefix, ++ptr)
256205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (*prefix != *ptr)
256305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      return 0;
256405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
256505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (*prefix)
256605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return 0;
256705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
256805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return ptr;
256905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
257005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
257105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic variant *
257205436638acc7c010349a69c3395f1a57c642dc62Ying Wangvariant_add (uniqstr id, location id_loc, unsigned symbol_index,
257305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	     char *cp, char *cp_end, bool explicit_bracketing)
257405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
257505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  char *prefix_end;
257605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
257705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  prefix_end = find_prefix_end (id, cp, cp_end);
257805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (prefix_end &&
257905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      (prefix_end == cp_end ||
258005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       (!explicit_bracketing && is_dot_or_dash (*prefix_end))))
258105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
258205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      variant *r = variant_table_grow ();
258305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      r->symbol_index = symbol_index;
258405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      r->id = id;
258505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      r->loc = id_loc;
258605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      r->hidden_by = NULL;
258705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      r->err = 0;
258805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      return r;
258905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
259005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  else
259105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return NULL;
259205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
259305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
259405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic const char *
259505436638acc7c010349a69c3395f1a57c642dc62Ying Wangget_at_spec (unsigned symbol_index)
259605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
259705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  static char at_buf[20];
259805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (symbol_index == 0)
259905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    strcpy (at_buf, "$$");
260005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  else
260105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    snprintf (at_buf, sizeof at_buf, "$%u", symbol_index);
260205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return at_buf;
260305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
260405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
260505436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void
260605436638acc7c010349a69c3395f1a57c642dc62Ying Wangshow_sub_messages (const char* cp, bool explicit_bracketing,
260705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   int midrule_rhs_index, char dollar_or_at,
260805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                   bool is_warning, unsigned indent)
260905436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
261005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  unsigned i;
261105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
261205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  for (i = 0; i < variant_count; ++i)
261305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
261405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      const variant *var = &variant_table[i];
261505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      const char *at_spec = get_at_spec (var->symbol_index);
261605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
261705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (var->err == 0)
261805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        {
261905436638acc7c010349a69c3395f1a57c642dc62Ying Wang          if (is_warning)
262005436638acc7c010349a69c3395f1a57c642dc62Ying Wang            warn_at_indent (var->loc, &indent, _("refers to: %c%s at %s"),
262105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                            dollar_or_at, var->id, at_spec);
262205436638acc7c010349a69c3395f1a57c642dc62Ying Wang          else
262305436638acc7c010349a69c3395f1a57c642dc62Ying Wang            complain_at_indent (var->loc, &indent, _("refers to: %c%s at %s"),
262405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                dollar_or_at, var->id, at_spec);
262505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        }
262605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      else
262705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{
262805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  static struct obstack msg_buf;
262905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  const char *tail = explicit_bracketing ? "" :
263005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    cp + strlen (var->id);
263105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  const char *id = var->hidden_by ? var->hidden_by->id :
263205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    var->id;
263305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  location id_loc = var->hidden_by ? var->hidden_by->loc :
263405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    var->loc;
263505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
263605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  /* Create the explanation message. */
263705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  obstack_init (&msg_buf);
263805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
263905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  obstack_printf (&msg_buf, _("possibly meant: %c"), dollar_or_at);
264005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  if (contains_dot_or_dash (id))
264105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    obstack_printf (&msg_buf, "[%s]", id);
264205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  else
264305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    obstack_sgrow (&msg_buf, id);
264405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  obstack_sgrow (&msg_buf, tail);
264505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
264605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  if (var->err & VARIANT_HIDDEN)
264705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    {
264805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	      obstack_printf (&msg_buf, _(", hiding %c"), dollar_or_at);
264905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	      if (contains_dot_or_dash (var->id))
265005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		obstack_printf (&msg_buf, "[%s]", var->id);
265105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	      else
265205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		obstack_sgrow (&msg_buf, var->id);
265305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	      obstack_sgrow (&msg_buf, tail);
265405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    }
265505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
265605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  obstack_printf (&msg_buf, _(" at %s"), at_spec);
265705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
265805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  if (var->err & VARIANT_NOT_VISIBLE_FROM_MIDRULE)
265905436638acc7c010349a69c3395f1a57c642dc62Ying Wang            {
266005436638acc7c010349a69c3395f1a57c642dc62Ying Wang              const char *format =
266105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                _(", cannot be accessed from mid-rule action at $%d");
266205436638acc7c010349a69c3395f1a57c642dc62Ying Wang              obstack_printf (&msg_buf, format, midrule_rhs_index);
266305436638acc7c010349a69c3395f1a57c642dc62Ying Wang            }
266405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
266505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  obstack_1grow (&msg_buf, '\0');
266605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          if (is_warning)
266705436638acc7c010349a69c3395f1a57c642dc62Ying Wang            warn_at_indent (id_loc, &indent, "%s",
266805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                            (char *) obstack_finish (&msg_buf));
266905436638acc7c010349a69c3395f1a57c642dc62Ying Wang          else
267005436638acc7c010349a69c3395f1a57c642dc62Ying Wang            complain_at_indent (id_loc, &indent, "%s",
267105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                (char *) obstack_finish (&msg_buf));
267205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  obstack_free (&msg_buf, 0);
267305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
267405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
267505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
267605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
267705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Returned from "parse_ref" when the reference
267805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is inappropriate. */
267905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INVALID_REF (INT_MIN)
268005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
268105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Returned from "parse_ref" when the reference
268205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   points to LHS ($$) of the current rule or midrule. */
268305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define LHS_REF (INT_MIN + 1)
268405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
268505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Parse named or positional reference. In case of positional
268605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   references, can return negative values for $-n "deep" stack
268705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   accesses. */
268805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic long int
268905436638acc7c010349a69c3395f1a57c642dc62Ying Wangparse_ref (char *cp, symbol_list *rule, int rule_length,
269005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	   int midrule_rhs_index, char *text, location text_loc,
269105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	   char dollar_or_at)
269205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
269305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  symbol_list *l;
269405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  char *cp_end;
269505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  bool explicit_bracketing;
269605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  unsigned i;
269705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  unsigned valid_variants = 0;
269805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  unsigned valid_variant_index = 0;
269905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
270005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if ('$' == *cp)
270105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return LHS_REF;
270205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
270305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (c_isdigit (*cp) || (*cp == '-' && c_isdigit (* (cp + 1))))
270405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
270505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      long int num = strtol (cp, &cp, 10);
270605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (1 - INT_MAX + rule_length <= num && num <= rule_length)
270705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return num;
270805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      else
270905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{
271005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  complain_at (text_loc, _("integer out of range: %s"),
271105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                       quote (text));
271205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  return INVALID_REF;
271305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
271405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
271505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
271605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if ('[' == *cp)
271705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
271805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      /* Ignore the brackets. */
271905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      char *p;
272005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      for (p = ++cp; *p != ']'; ++p)
272105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	continue;
272205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      cp_end = p;
272305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
272405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      explicit_bracketing = true;
272505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
272605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  else
272705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
272805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      /* Take all characters of the name. */
272905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      char* p;
273005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      for (p = cp; *p; ++p)
273105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (is_dot_or_dash (*p))
273205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  {
273305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    ref_tail_fields = p;
273405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    break;
273505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  }
273605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      for (p = cp; *p; ++p)
273705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	continue;
273805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      cp_end = p;
273905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
274005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      explicit_bracketing = false;
274105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
274205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
274305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Add all relevant variants. */
274405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
274505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    unsigned symbol_index;
274605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    variant_count = 0;
274705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    for (symbol_index = 0, l = rule; !symbol_list_null (l);
274805436638acc7c010349a69c3395f1a57c642dc62Ying Wang         ++symbol_index, l = l->next)
274905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
275005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	variant *var;
275105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (l->content_type != SYMLIST_SYMBOL)
275205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  continue;
275305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
275405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	var = variant_add (l->content.sym->tag, l->sym_loc,
275505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                           symbol_index, cp, cp_end, explicit_bracketing);
275605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (var && l->named_ref)
275705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  var->hidden_by = l->named_ref;
275805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
275905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (l->named_ref)
276005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  variant_add (l->named_ref->id, l->named_ref->loc,
276105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                       symbol_index, cp, cp_end, explicit_bracketing);
276205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
276305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
276405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
276505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Check errors. */
276605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  for (i = 0; i < variant_count; ++i)
276705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
276805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      variant *var = &variant_table[i];
276905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      unsigned symbol_index = var->symbol_index;
277005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
277105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      /* Check visibility from mid-rule actions. */
277205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (midrule_rhs_index != 0
277305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  && (symbol_index == 0 || midrule_rhs_index < symbol_index))
277405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        var->err |= VARIANT_NOT_VISIBLE_FROM_MIDRULE;
277505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
277605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      /* Check correct bracketing. */
277705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (!explicit_bracketing && contains_dot_or_dash (var->id))
277805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        var->err |= VARIANT_BAD_BRACKETING;
277905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
278005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      /* Check using of hidden symbols. */
278105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (var->hidden_by)
278205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        var->err |= VARIANT_HIDDEN;
278305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
278405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (!var->err)
278505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        {
278605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          valid_variant_index = i;
278705436638acc7c010349a69c3395f1a57c642dc62Ying Wang          ++valid_variants;
278805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        }
278905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
279005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
279105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  switch (valid_variants)
279205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
279305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    case 0:
279405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
279505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        unsigned len = (explicit_bracketing || !ref_tail_fields) ?
279605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          cp_end - cp : ref_tail_fields - cp;
279705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        unsigned indent = 0;
279805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
279905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        complain_at_indent (text_loc, &indent, _("invalid reference: %s"),
280005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                            quote (text));
280105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        indent += SUB_INDENT;
280205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        if (len == 0)
280305436638acc7c010349a69c3395f1a57c642dc62Ying Wang          {
280405436638acc7c010349a69c3395f1a57c642dc62Ying Wang            location sym_loc = text_loc;
280505436638acc7c010349a69c3395f1a57c642dc62Ying Wang            sym_loc.start.column += 1;
280605436638acc7c010349a69c3395f1a57c642dc62Ying Wang            sym_loc.end = sym_loc.start;
280705436638acc7c010349a69c3395f1a57c642dc62Ying Wang            const char *format =
280805436638acc7c010349a69c3395f1a57c642dc62Ying Wang              _("syntax error after '%c', expecting integer, letter,"
280905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                " '_', '[', or '$'");
281005436638acc7c010349a69c3395f1a57c642dc62Ying Wang            complain_at_indent (sym_loc, &indent, format, dollar_or_at);
281105436638acc7c010349a69c3395f1a57c642dc62Ying Wang          }
281205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        else if (midrule_rhs_index)
281305436638acc7c010349a69c3395f1a57c642dc62Ying Wang          {
281405436638acc7c010349a69c3395f1a57c642dc62Ying Wang            const char *format =
281505436638acc7c010349a69c3395f1a57c642dc62Ying Wang              _("symbol not found in production before $%d: %.*s");
281605436638acc7c010349a69c3395f1a57c642dc62Ying Wang            complain_at_indent (rule->location, &indent, format,
281705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                midrule_rhs_index, len, cp);
281805436638acc7c010349a69c3395f1a57c642dc62Ying Wang          }
281905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        else
282005436638acc7c010349a69c3395f1a57c642dc62Ying Wang          {
282105436638acc7c010349a69c3395f1a57c642dc62Ying Wang            const char *format =
282205436638acc7c010349a69c3395f1a57c642dc62Ying Wang              _("symbol not found in production: %.*s");
282305436638acc7c010349a69c3395f1a57c642dc62Ying Wang            complain_at_indent (rule->location, &indent, format,
282405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                len, cp);
282505436638acc7c010349a69c3395f1a57c642dc62Ying Wang          }
282605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
282705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        if (variant_count > 0)
282805436638acc7c010349a69c3395f1a57c642dc62Ying Wang          show_sub_messages (cp, explicit_bracketing, midrule_rhs_index,
282905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             dollar_or_at, false, indent);
283005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return INVALID_REF;
283105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
283205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    case 1:
283305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
283405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        unsigned indent = 0;
283505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        if (variant_count > 1)
283605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          {
283705436638acc7c010349a69c3395f1a57c642dc62Ying Wang            warn_at_indent (text_loc, &indent, _("misleading reference: %s"),
283805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                            quote (text));
283905436638acc7c010349a69c3395f1a57c642dc62Ying Wang            show_sub_messages (cp, explicit_bracketing, midrule_rhs_index,
284005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               dollar_or_at, true, indent + SUB_INDENT);
284105436638acc7c010349a69c3395f1a57c642dc62Ying Wang          }
284205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        {
284305436638acc7c010349a69c3395f1a57c642dc62Ying Wang          unsigned symbol_index =
284405436638acc7c010349a69c3395f1a57c642dc62Ying Wang            variant_table[valid_variant_index].symbol_index;
284505436638acc7c010349a69c3395f1a57c642dc62Ying Wang          return (symbol_index == midrule_rhs_index) ? LHS_REF : symbol_index;
284605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        }
284705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
284805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    case 2:
284905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    default:
285005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
285105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        unsigned indent = 0;
285205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        complain_at_indent (text_loc, &indent, _("ambiguous reference: %s"),
285305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                            quote (text));
285405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        show_sub_messages (cp, explicit_bracketing, midrule_rhs_index,
285505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                           dollar_or_at, false, indent + SUB_INDENT);
285605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return INVALID_REF;
285705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
285805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
285905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
286005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Not reachable. */
286105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return INVALID_REF;
286205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
286305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
286405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Keeps track of the maximum number of semantic values to the left of
286505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   a handle (those referenced by $0, $-1, etc.) are required by the
286605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   semantic actions of this grammar. */
286705436638acc7c010349a69c3395f1a57c642dc62Ying Wangint max_left_semantic_context = 0;
286805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
286905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
287005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* If CP points to a typename (i.e., <.*?>), set TYPE_NAME to its
287105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   beginning (i.e., after the opening "<", and return the pointer
287205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   immediately after it.  */
287305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
287405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic
287505436638acc7c010349a69c3395f1a57c642dc62Ying Wangchar *
287605436638acc7c010349a69c3395f1a57c642dc62Ying Wangfetch_type_name (char *cp, char const **type_name,
287705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 location dollar_loc)
287805436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
287905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (*cp == '<')
288005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
288105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      *type_name = ++cp;
288205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      while (*cp != '>')
288305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	++cp;
288405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
288505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      /* The '>' symbol will be later replaced by '\0'. Original
288605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 'text' is needed for error messages. */
288705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      ++cp;
288805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (untyped_var_seen)
288905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	complain_at (dollar_loc, _("explicit type given in untyped grammar"));
289005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      tag_seen = true;
289105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
289205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return cp;
289305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
289405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
289505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*------------------------------------------------------------------.
289605436638acc7c010349a69c3395f1a57c642dc62Ying Wang| TEXT is pointing to a wannabee semantic value (i.e., a '$').      |
289705436638acc7c010349a69c3395f1a57c642dc62Ying Wang|                                                                   |
289805436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Possible inputs: $[<TYPENAME>]($|integer)                         |
289905436638acc7c010349a69c3395f1a57c642dc62Ying Wang|                                                                   |
290005436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Output to OBSTACK_FOR_STRING a reference to this semantic value.  |
290105436638acc7c010349a69c3395f1a57c642dc62Ying Wang`------------------------------------------------------------------*/
290205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
290305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void
290405436638acc7c010349a69c3395f1a57c642dc62Ying Wanghandle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
290505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
290605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  char const *type_name = NULL;
290705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  char *cp = text + 1;
290805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  symbol_list *effective_rule;
290905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int effective_rule_length;
291005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int n;
291105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
291205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (rule->midrule_parent_rule)
291305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
291405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      effective_rule = rule->midrule_parent_rule;
291505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      effective_rule_length = rule->midrule_parent_rhs_index - 1;
291605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
291705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  else
291805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
291905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      effective_rule = rule;
292005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      effective_rule_length = symbol_list_length (rule->next);
292105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
292205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
292305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Get the type name if explicit. */
292405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  cp = fetch_type_name (cp, &type_name, dollar_loc);
292505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
292605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  n = parse_ref (cp, effective_rule, effective_rule_length,
292705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 rule->midrule_parent_rhs_index, text, dollar_loc, '$');
292805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
292905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* End type_name. */
293005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (type_name)
293105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    cp[-1] = '\0';
293205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
293305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  switch (n)
293405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
293505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    case INVALID_REF:
293605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      break;
293705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
293805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    case LHS_REF:
293905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (!type_name)
294005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	type_name = symbol_list_n_type_name_get (rule, dollar_loc, 0);
294105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
294205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (!type_name)
294305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        {
294405436638acc7c010349a69c3395f1a57c642dc62Ying Wang          if (union_seen | tag_seen)
294505436638acc7c010349a69c3395f1a57c642dc62Ying Wang            {
294605436638acc7c010349a69c3395f1a57c642dc62Ying Wang              if (rule->midrule_parent_rule)
294705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                complain_at (dollar_loc,
294805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             _("$$ for the midrule at $%d of %s"
294905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               " has no declared type"),
295005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             rule->midrule_parent_rhs_index,
295105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             quote (effective_rule->content.sym->tag));
295205436638acc7c010349a69c3395f1a57c642dc62Ying Wang              else
295305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                complain_at (dollar_loc, _("$$ of %s has no declared type"),
295405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             quote (rule->content.sym->tag));
295505436638acc7c010349a69c3395f1a57c642dc62Ying Wang            }
295605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          else
295705436638acc7c010349a69c3395f1a57c642dc62Ying Wang            untyped_var_seen = true;
295805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        }
295905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
296005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_sgrow (&obstack_for_string, "]b4_lhs_value(");
296105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_quote (&obstack_for_string, type_name);
296205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_sgrow (&obstack_for_string, ")[");
296305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rule->action_props.is_value_used = true;
296405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      break;
296505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
296605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    default:
296705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (max_left_semantic_context < 1 - n)
296805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	max_left_semantic_context = 1 - n;
296905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (!type_name && 0 < n)
297005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	type_name =
297105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  symbol_list_n_type_name_get (effective_rule, dollar_loc, n);
297205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (!type_name)
297305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        {
297405436638acc7c010349a69c3395f1a57c642dc62Ying Wang          if (union_seen | tag_seen)
297505436638acc7c010349a69c3395f1a57c642dc62Ying Wang            complain_at (dollar_loc, _("$%s of %s has no declared type"),
297605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         cp, quote (effective_rule->content.sym->tag));
297705436638acc7c010349a69c3395f1a57c642dc62Ying Wang          else
297805436638acc7c010349a69c3395f1a57c642dc62Ying Wang            untyped_var_seen = true;
297905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        }
298005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
298105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_printf (&obstack_for_string,
298205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		      "]b4_rhs_value(%d, %d, ", effective_rule_length, n);
298305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_quote (&obstack_for_string, type_name);
298405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_sgrow (&obstack_for_string, ")[");
298505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (n > 0)
298605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	symbol_list_n_get (effective_rule, n)->action_props.is_value_used =
298705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  true;
298805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      break;
298905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
299005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
299105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
299205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
299305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*------------------------------------------------------.
299405436638acc7c010349a69c3395f1a57c642dc62Ying Wang| TEXT is a location token (i.e., a '@...').  Output to |
299505436638acc7c010349a69c3395f1a57c642dc62Ying Wang| OBSTACK_FOR_STRING a reference to this location.      |
299605436638acc7c010349a69c3395f1a57c642dc62Ying Wang`------------------------------------------------------*/
299705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
299805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void
299905436638acc7c010349a69c3395f1a57c642dc62Ying Wanghandle_action_at (symbol_list *rule, char *text, location at_loc)
300005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
300105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  char *cp = text + 1;
300205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  symbol_list *effective_rule;
300305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int effective_rule_length;
300405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int n;
300505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
300605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (rule->midrule_parent_rule)
300705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
300805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      effective_rule = rule->midrule_parent_rule;
300905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      effective_rule_length = rule->midrule_parent_rhs_index - 1;
301005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
301105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  else
301205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
301305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      effective_rule = rule;
301405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      effective_rule_length = symbol_list_length (rule->next);
301505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
301605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
301705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  locations_flag = true;
301805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
301905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  n = parse_ref (cp, effective_rule, effective_rule_length,
302005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 rule->midrule_parent_rhs_index, text, at_loc, '@');
302105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  switch (n)
302205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
302305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    case INVALID_REF:
302405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      break;
302505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
302605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    case LHS_REF:
302705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_sgrow (&obstack_for_string, "]b4_lhs_location[");
302805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      break;
302905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
303005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    default:
303105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_printf (&obstack_for_string, "]b4_rhs_location(%d, %d)[",
303205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		      effective_rule_length, n);
303305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      break;
303405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
303505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
303605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
303705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
303805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*-------------------------.
303905436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Initialize the scanner.  |
304005436638acc7c010349a69c3395f1a57c642dc62Ying Wang`-------------------------*/
304105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
304205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Translate the dollars and ats in \a self, in the context \a sc_context
304305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   (SC_RULE_ACTION, SC_SYMBOL_ACTION, INITIAL).  */
304405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
304505436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char const *
304605436638acc7c010349a69c3395f1a57c642dc62Ying Wangtranslate_action (code_props *self, int sc_context)
304705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
304805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  char *res;
304905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  static bool initialized = false;
305005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (!initialized)
305105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
305205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      obstack_init (&obstack_for_string);
305305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      code__flex_debug = 0;
305405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      initialized = true;
305505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
305605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
305705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  loc->start = loc->end = self->location.start;
305805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  code__switch_to_buffer (code__scan_string (self->code));
305905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res = code_lex (self, sc_context);
306005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  code__delete_buffer (YY_CURRENT_BUFFER);
306105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
306205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return res;
306305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
306405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
306505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*------------------------------------------------------------------------.
306605436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Implementation of the public interface as documented in "scan-code.h".  |
306705436638acc7c010349a69c3395f1a57c642dc62Ying Wang`------------------------------------------------------------------------*/
306805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
306905436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
307005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcode_props_none_init (code_props *self)
307105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
307205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  *self = code_props_none;
307305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
307405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
307505436638acc7c010349a69c3395f1a57c642dc62Ying Wangcode_props const code_props_none = CODE_PROPS_NONE_INIT;
307605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
307705436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
307805436638acc7c010349a69c3395f1a57c642dc62Ying Wangcode_props_plain_init (code_props *self, char const *code,
307905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		       location code_loc)
308005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
308105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->kind = CODE_PROPS_PLAIN;
308205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->code = code;
308305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->location = code_loc;
308405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->is_value_used = false;
308505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->rule = NULL;
308605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->named_ref = NULL;
308705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
308805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
308905436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
309005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcode_props_symbol_action_init (code_props *self, char const *code,
309105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                               location code_loc)
309205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
309305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->kind = CODE_PROPS_SYMBOL_ACTION;
309405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->code = code;
309505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->location = code_loc;
309605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->is_value_used = false;
309705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->rule = NULL;
309805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->named_ref = NULL;
309905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
310005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
310105436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
310205436638acc7c010349a69c3395f1a57c642dc62Ying Wangcode_props_rule_action_init (code_props *self, char const *code,
310305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                             location code_loc, symbol_list *rule,
310405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			     named_ref *name)
310505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
310605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->kind = CODE_PROPS_RULE_ACTION;
310705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->code = code;
310805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->location = code_loc;
310905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->is_value_used = false;
311005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->rule = rule;
311105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  self->named_ref = name;
311205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
311305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
311405436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
311505436638acc7c010349a69c3395f1a57c642dc62Ying Wangcode_props_translate_code (code_props *self)
311605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
311705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  switch (self->kind)
311805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
311905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case CODE_PROPS_NONE:
312005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
312105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case CODE_PROPS_PLAIN:
312205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        self->code = translate_action (self, INITIAL);
312305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
312405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case CODE_PROPS_SYMBOL_ACTION:
312505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        self->code = translate_action (self, SC_SYMBOL_ACTION);
312605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
312705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case CODE_PROPS_RULE_ACTION:
312805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        self->code = translate_action (self, SC_RULE_ACTION);
312905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
313005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
313105436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
313205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
313305436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
313405436638acc7c010349a69c3395f1a57c642dc62Ying Wangcode_scanner_last_string_free (void)
313505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
313605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  STRING_FREE;
313705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
313805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
313905436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
314005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcode_scanner_free (void)
314105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
314205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  obstack_free (&obstack_for_string, 0);
314305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  variant_table_free ();
314405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
314505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Reclaim Flex's buffers.  */
314605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  code_lex_destroy ();
314705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
314805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3149