Blame lex.das.cc

Packit a4aae4
#line 2 "lex.das.cc"
Packit a4aae4
Packit a4aae4
#line 4 "lex.das.cc"
Packit a4aae4
Packit a4aae4
#define  YY_INT_ALIGNED short int
Packit a4aae4
Packit a4aae4
/* A lexical scanner generated by flex */
Packit a4aae4
Packit a4aae4
#define yy_create_buffer das_create_buffer
Packit a4aae4
#define yy_delete_buffer das_delete_buffer
Packit a4aae4
#define yy_flex_debug das_flex_debug
Packit a4aae4
#define yy_init_buffer das_init_buffer
Packit a4aae4
#define yy_flush_buffer das_flush_buffer
Packit a4aae4
#define yy_load_buffer_state das_load_buffer_state
Packit a4aae4
#define yy_switch_to_buffer das_switch_to_buffer
Packit a4aae4
#define yyin dasin
Packit a4aae4
#define yyleng dasleng
Packit a4aae4
#define yylex daslex
Packit a4aae4
#define yylineno daslineno
Packit a4aae4
#define yyout dasout
Packit a4aae4
#define yyrestart dasrestart
Packit a4aae4
#define yytext dastext
Packit a4aae4
#define yywrap daswrap
Packit a4aae4
#define yyalloc dasalloc
Packit a4aae4
#define yyrealloc dasrealloc
Packit a4aae4
#define yyfree dasfree
Packit a4aae4
Packit a4aae4
#define FLEX_SCANNER
Packit a4aae4
#define YY_FLEX_MAJOR_VERSION 2
Packit a4aae4
#define YY_FLEX_MINOR_VERSION 5
Packit a4aae4
#define YY_FLEX_SUBMINOR_VERSION 35
Packit a4aae4
#if YY_FLEX_SUBMINOR_VERSION > 0
Packit a4aae4
#define FLEX_BETA
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* First, we deal with  platform-specific or compiler-specific issues. */
Packit a4aae4
Packit a4aae4
/* begin standard C headers. */
Packit a4aae4
#include <stdio.h>
Packit a4aae4
#include <string.h>
Packit a4aae4
#include <errno.h>
Packit a4aae4
#include <stdlib.h>
Packit a4aae4
Packit a4aae4
/* end standard C headers. */
Packit a4aae4
Packit a4aae4
/* flex integer type definitions */
Packit a4aae4
Packit a4aae4
#ifndef FLEXINT_H
Packit a4aae4
#define FLEXINT_H
Packit a4aae4
Packit a4aae4
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
Packit a4aae4
Packit a4aae4
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
Packit a4aae4
Packit a4aae4
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
Packit a4aae4
 * if you want the limit (max/min) macros for int types. 
Packit a4aae4
 */
Packit a4aae4
#ifndef __STDC_LIMIT_MACROS
Packit a4aae4
#define __STDC_LIMIT_MACROS 1
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#include <inttypes.h>
Packit a4aae4
typedef int8_t flex_int8_t;
Packit a4aae4
typedef uint8_t flex_uint8_t;
Packit a4aae4
typedef int16_t flex_int16_t;
Packit a4aae4
typedef uint16_t flex_uint16_t;
Packit a4aae4
typedef int32_t flex_int32_t;
Packit a4aae4
typedef uint32_t flex_uint32_t;
Packit a4aae4
typedef uint64_t flex_uint64_t;
Packit a4aae4
#else
Packit a4aae4
typedef signed char flex_int8_t;
Packit a4aae4
typedef short int flex_int16_t;
Packit a4aae4
typedef int flex_int32_t;
Packit a4aae4
typedef unsigned char flex_uint8_t; 
Packit a4aae4
typedef unsigned short int flex_uint16_t;
Packit a4aae4
typedef unsigned int flex_uint32_t;
Packit a4aae4
#endif /* ! C99 */
Packit a4aae4
Packit a4aae4
/* Limits of integral types. */
Packit a4aae4
#ifndef INT8_MIN
Packit a4aae4
#define INT8_MIN               (-128)
Packit a4aae4
#endif
Packit a4aae4
#ifndef INT16_MIN
Packit a4aae4
#define INT16_MIN              (-32767-1)
Packit a4aae4
#endif
Packit a4aae4
#ifndef INT32_MIN
Packit a4aae4
#define INT32_MIN              (-2147483647-1)
Packit a4aae4
#endif
Packit a4aae4
#ifndef INT8_MAX
Packit a4aae4
#define INT8_MAX               (127)
Packit a4aae4
#endif
Packit a4aae4
#ifndef INT16_MAX
Packit a4aae4
#define INT16_MAX              (32767)
Packit a4aae4
#endif
Packit a4aae4
#ifndef INT32_MAX
Packit a4aae4
#define INT32_MAX              (2147483647)
Packit a4aae4
#endif
Packit a4aae4
#ifndef UINT8_MAX
Packit a4aae4
#define UINT8_MAX              (255U)
Packit a4aae4
#endif
Packit a4aae4
#ifndef UINT16_MAX
Packit a4aae4
#define UINT16_MAX             (65535U)
Packit a4aae4
#endif
Packit a4aae4
#ifndef UINT32_MAX
Packit a4aae4
#define UINT32_MAX             (4294967295U)
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#endif /* ! FLEXINT_H */
Packit a4aae4
Packit a4aae4
#ifdef __cplusplus
Packit a4aae4
Packit a4aae4
/* The "const" storage-class-modifier is valid. */
Packit a4aae4
#define YY_USE_CONST
Packit a4aae4
Packit a4aae4
#else	/* ! __cplusplus */
Packit a4aae4
Packit a4aae4
/* C99 requires __STDC__ to be defined as 1. */
Packit a4aae4
#if defined (__STDC__)
Packit a4aae4
Packit a4aae4
#define YY_USE_CONST
Packit a4aae4
Packit a4aae4
#endif	/* defined (__STDC__) */
Packit a4aae4
#endif	/* ! __cplusplus */
Packit a4aae4
Packit a4aae4
#ifdef YY_USE_CONST
Packit a4aae4
#define yyconst const
Packit a4aae4
#else
Packit a4aae4
#define yyconst
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* Returned upon end-of-file. */
Packit a4aae4
#define YY_NULL 0
Packit a4aae4
Packit a4aae4
/* Promotes a possibly negative, possibly signed char to an unsigned
Packit a4aae4
 * integer for use as an array index.  If the signed char is negative,
Packit a4aae4
 * we want to instead treat it as an 8-bit unsigned char, hence the
Packit a4aae4
 * double cast.
Packit a4aae4
 */
Packit a4aae4
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
Packit a4aae4
Packit a4aae4
/* Enter a start condition.  This macro really ought to take a parameter,
Packit a4aae4
 * but we do it the disgusting crufty way forced on us by the ()-less
Packit a4aae4
 * definition of BEGIN.
Packit a4aae4
 */
Packit a4aae4
#define BEGIN (yy_start) = 1 + 2 *
Packit a4aae4
Packit a4aae4
/* Translate the current start state into a value that can be later handed
Packit a4aae4
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
Packit a4aae4
 * compatibility.
Packit a4aae4
 */
Packit a4aae4
#define YY_START (((yy_start) - 1) / 2)
Packit a4aae4
#define YYSTATE YY_START
Packit a4aae4
Packit a4aae4
/* Action number for EOF rule of a given start state. */
Packit a4aae4
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
Packit a4aae4
Packit a4aae4
/* Special action meaning "start processing a new file". */
Packit a4aae4
#define YY_NEW_FILE dasrestart(dasin  )
Packit a4aae4
Packit a4aae4
#define YY_END_OF_BUFFER_CHAR 0
Packit a4aae4
Packit a4aae4
/* Size of default input buffer. */
Packit a4aae4
#ifndef YY_BUF_SIZE
Packit a4aae4
#define YY_BUF_SIZE 16384
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* The state buf must be large enough to hold one state per character in the main buffer.
Packit a4aae4
 */
Packit a4aae4
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
Packit a4aae4
Packit a4aae4
#ifndef YY_TYPEDEF_YY_BUFFER_STATE
Packit a4aae4
#define YY_TYPEDEF_YY_BUFFER_STATE
Packit a4aae4
typedef struct yy_buffer_state *YY_BUFFER_STATE;
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#ifndef YY_TYPEDEF_YY_SIZE_T
Packit a4aae4
#define YY_TYPEDEF_YY_SIZE_T
Packit a4aae4
typedef size_t yy_size_t;
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
extern yy_size_t dasleng;
Packit a4aae4
Packit a4aae4
extern FILE *dasin, *dasout;
Packit a4aae4
Packit a4aae4
#define EOB_ACT_CONTINUE_SCAN 0
Packit a4aae4
#define EOB_ACT_END_OF_FILE 1
Packit a4aae4
#define EOB_ACT_LAST_MATCH 2
Packit a4aae4
Packit a4aae4
    #define YY_LESS_LINENO(n)
Packit a4aae4
    
Packit a4aae4
/* Return all but the first "n" matched characters back to the input stream. */
Packit a4aae4
#define yyless(n) \
Packit a4aae4
	do \
Packit a4aae4
		{ \
Packit a4aae4
		/* Undo effects of setting up dastext. */ \
Packit a4aae4
        int yyless_macro_arg = (n); \
Packit a4aae4
        YY_LESS_LINENO(yyless_macro_arg);\
Packit a4aae4
		*yy_cp = (yy_hold_char); \
Packit a4aae4
		YY_RESTORE_YY_MORE_OFFSET \
Packit a4aae4
		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
Packit a4aae4
		YY_DO_BEFORE_ACTION; /* set up dastext again */ \
Packit a4aae4
		} \
Packit a4aae4
	while ( 0 )
Packit a4aae4
Packit a4aae4
#define unput(c) yyunput( c, (yytext_ptr)  )
Packit a4aae4
Packit a4aae4
#ifndef YY_STRUCT_YY_BUFFER_STATE
Packit a4aae4
#define YY_STRUCT_YY_BUFFER_STATE
Packit a4aae4
struct yy_buffer_state
Packit a4aae4
	{
Packit a4aae4
	FILE *yy_input_file;
Packit a4aae4
Packit a4aae4
	char *yy_ch_buf;		/* input buffer */
Packit a4aae4
	char *yy_buf_pos;		/* current position in input buffer */
Packit a4aae4
Packit a4aae4
	/* Size of input buffer in bytes, not including room for EOB
Packit a4aae4
	 * characters.
Packit a4aae4
	 */
Packit a4aae4
	yy_size_t yy_buf_size;
Packit a4aae4
Packit a4aae4
	/* Number of characters read into yy_ch_buf, not including EOB
Packit a4aae4
	 * characters.
Packit a4aae4
	 */
Packit a4aae4
	yy_size_t yy_n_chars;
Packit a4aae4
Packit a4aae4
	/* Whether we "own" the buffer - i.e., we know we created it,
Packit a4aae4
	 * and can realloc() it to grow it, and should free() it to
Packit a4aae4
	 * delete it.
Packit a4aae4
	 */
Packit a4aae4
	int yy_is_our_buffer;
Packit a4aae4
Packit a4aae4
	/* Whether this is an "interactive" input source; if so, and
Packit a4aae4
	 * if we're using stdio for input, then we want to use getc()
Packit a4aae4
	 * instead of fread(), to make sure we stop fetching input after
Packit a4aae4
	 * each newline.
Packit a4aae4
	 */
Packit a4aae4
	int yy_is_interactive;
Packit a4aae4
Packit a4aae4
	/* Whether we're considered to be at the beginning of a line.
Packit a4aae4
	 * If so, '^' rules will be active on the next match, otherwise
Packit a4aae4
	 * not.
Packit a4aae4
	 */
Packit a4aae4
	int yy_at_bol;
Packit a4aae4
Packit a4aae4
    int yy_bs_lineno; /**< The line count. */
Packit a4aae4
    int yy_bs_column; /**< The column count. */
Packit a4aae4
    
Packit a4aae4
	/* Whether to try to fill the input buffer when we reach the
Packit a4aae4
	 * end of it.
Packit a4aae4
	 */
Packit a4aae4
	int yy_fill_buffer;
Packit a4aae4
Packit a4aae4
	int yy_buffer_status;
Packit a4aae4
Packit a4aae4
#define YY_BUFFER_NEW 0
Packit a4aae4
#define YY_BUFFER_NORMAL 1
Packit a4aae4
	/* When an EOF's been seen but there's still some text to process
Packit a4aae4
	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
Packit a4aae4
	 * shouldn't try reading from the input source any more.  We might
Packit a4aae4
	 * still have a bunch of tokens to match, though, because of
Packit a4aae4
	 * possible backing-up.
Packit a4aae4
	 *
Packit a4aae4
	 * When we actually see the EOF, we change the status to "new"
Packit a4aae4
	 * (via dasrestart()), so that the user can continue scanning by
Packit a4aae4
	 * just pointing dasin at a new input file.
Packit a4aae4
	 */
Packit a4aae4
#define YY_BUFFER_EOF_PENDING 2
Packit a4aae4
Packit a4aae4
	};
Packit a4aae4
#endif /* !YY_STRUCT_YY_BUFFER_STATE */
Packit a4aae4
Packit a4aae4
/* Stack of input buffers. */
Packit a4aae4
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
Packit a4aae4
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
Packit a4aae4
static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
Packit a4aae4
Packit a4aae4
/* We provide macros for accessing buffer states in case in the
Packit a4aae4
 * future we want to put the buffer states in a more general
Packit a4aae4
 * "scanner state".
Packit a4aae4
 *
Packit a4aae4
 * Returns the top of the stack, or NULL.
Packit a4aae4
 */
Packit a4aae4
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
Packit a4aae4
                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
Packit a4aae4
                          : NULL)
Packit a4aae4
Packit a4aae4
/* Same as previous macro, but useful when we know that the buffer stack is not
Packit a4aae4
 * NULL or when we need an lvalue. For internal use only.
Packit a4aae4
 */
Packit a4aae4
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
Packit a4aae4
Packit a4aae4
/* yy_hold_char holds the character lost when dastext is formed. */
Packit a4aae4
static char yy_hold_char;
Packit a4aae4
static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
Packit a4aae4
yy_size_t dasleng;
Packit a4aae4
Packit a4aae4
/* Points to current character in buffer. */
Packit a4aae4
static char *yy_c_buf_p = (char *) 0;
Packit a4aae4
static int yy_init = 0;		/* whether we need to initialize */
Packit a4aae4
static int yy_start = 0;	/* start state number */
Packit a4aae4
Packit a4aae4
/* Flag which is used to allow daswrap()'s to do buffer switches
Packit a4aae4
 * instead of setting up a fresh dasin.  A bit of a hack ...
Packit a4aae4
 */
Packit a4aae4
static int yy_did_buffer_switch_on_eof;
Packit a4aae4
Packit a4aae4
void dasrestart (FILE *input_file  );
Packit a4aae4
void das_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
Packit a4aae4
YY_BUFFER_STATE das_create_buffer (FILE *file,int size  );
Packit a4aae4
void das_delete_buffer (YY_BUFFER_STATE b  );
Packit a4aae4
void das_flush_buffer (YY_BUFFER_STATE b  );
Packit a4aae4
void daspush_buffer_state (YY_BUFFER_STATE new_buffer  );
Packit a4aae4
void daspop_buffer_state (void );
Packit a4aae4
Packit a4aae4
static void dasensure_buffer_stack (void );
Packit a4aae4
static void das_load_buffer_state (void );
Packit a4aae4
static void das_init_buffer (YY_BUFFER_STATE b,FILE *file  );
Packit a4aae4
Packit a4aae4
#define YY_FLUSH_BUFFER das_flush_buffer(YY_CURRENT_BUFFER )
Packit a4aae4
Packit a4aae4
YY_BUFFER_STATE das_scan_buffer (char *base,yy_size_t size  );
Packit a4aae4
YY_BUFFER_STATE das_scan_string (yyconst char *yy_str  );
Packit a4aae4
YY_BUFFER_STATE das_scan_bytes (yyconst char *bytes,yy_size_t len  );
Packit a4aae4
Packit a4aae4
void *dasalloc (yy_size_t  );
Packit a4aae4
void *dasrealloc (void *,yy_size_t  );
Packit a4aae4
void dasfree (void *  );
Packit a4aae4
Packit a4aae4
#define yy_new_buffer das_create_buffer
Packit a4aae4
Packit a4aae4
#define yy_set_interactive(is_interactive) \
Packit a4aae4
	{ \
Packit a4aae4
	if ( ! YY_CURRENT_BUFFER ){ \
Packit a4aae4
        dasensure_buffer_stack (); \
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE =    \
Packit a4aae4
            das_create_buffer(dasin,YY_BUF_SIZE ); \
Packit a4aae4
	} \
Packit a4aae4
	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
Packit a4aae4
	}
Packit a4aae4
Packit a4aae4
#define yy_set_bol(at_bol) \
Packit a4aae4
	{ \
Packit a4aae4
	if ( ! YY_CURRENT_BUFFER ){\
Packit a4aae4
        dasensure_buffer_stack (); \
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE =    \
Packit a4aae4
            das_create_buffer(dasin,YY_BUF_SIZE ); \
Packit a4aae4
	} \
Packit a4aae4
	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
Packit a4aae4
	}
Packit a4aae4
Packit a4aae4
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
Packit a4aae4
Packit a4aae4
/* Begin user sect3 */
Packit a4aae4
Packit a4aae4
#define daswrap(n) 1
Packit a4aae4
#define YY_SKIP_YYWRAP
Packit a4aae4
Packit a4aae4
typedef unsigned char YY_CHAR;
Packit a4aae4
Packit a4aae4
FILE *dasin = (FILE *) 0, *dasout = (FILE *) 0;
Packit a4aae4
Packit a4aae4
typedef int yy_state_type;
Packit a4aae4
Packit a4aae4
extern int daslineno;
Packit a4aae4
Packit a4aae4
int daslineno = 1;
Packit a4aae4
Packit a4aae4
extern char *dastext;
Packit a4aae4
#define yytext_ptr dastext
Packit a4aae4
Packit a4aae4
static yy_state_type yy_get_previous_state (void );
Packit a4aae4
static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
Packit a4aae4
static int yy_get_next_buffer (void );
Packit a4aae4
static void yy_fatal_error (yyconst char msg[]  );
Packit a4aae4
Packit a4aae4
/* Done after the current pattern has been matched and before the
Packit a4aae4
 * corresponding action - sets up dastext.
Packit a4aae4
 */
Packit a4aae4
#define YY_DO_BEFORE_ACTION \
Packit a4aae4
	(yytext_ptr) = yy_bp; \
Packit a4aae4
	(yytext_ptr) -= (yy_more_len); \
Packit a4aae4
	dasleng = (yy_size_t) (yy_cp - (yytext_ptr)); \
Packit a4aae4
	(yy_hold_char) = *yy_cp; \
Packit a4aae4
	*yy_cp = '\0'; \
Packit a4aae4
	(yy_c_buf_p) = yy_cp;
Packit a4aae4
Packit a4aae4
#define YY_NUM_RULES 31
Packit a4aae4
#define YY_END_OF_BUFFER 32
Packit a4aae4
/* This struct is not used in this scanner,
Packit a4aae4
   but its presence is necessary. */
Packit a4aae4
struct yy_trans_info
Packit a4aae4
	{
Packit a4aae4
	flex_int32_t yy_verify;
Packit a4aae4
	flex_int32_t yy_nxt;
Packit a4aae4
	};
Packit a4aae4
static yyconst flex_int16_t yy_accept[188] =
Packit a4aae4
    {   0,
Packit a4aae4
        0,    0,   25,   25,   21,   21,    0,    0,   32,   30,
Packit a4aae4
       18,   19,   24,   20,   13,   13,   17,   16,   13,   13,
Packit a4aae4
       13,   13,   13,   13,   13,   31,   13,   13,   13,   13,
Packit a4aae4
       13,   13,   13,   14,   15,   25,   26,   31,   29,   31,
Packit a4aae4
       21,   22,   31,   18,   13,   13,   13,   13,   13,   13,
Packit a4aae4
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
Packit a4aae4
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
Packit a4aae4
       13,   13,   25,   26,    0,   27,   28,   21,   23,   13,
Packit a4aae4
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
Packit a4aae4
       13,   13,   13,   13,   13,   11,   13,   13,   13,   13,
Packit a4aae4
Packit a4aae4
       13,   13,   13,   13,   13,   13,   13,   13,   13,    3,
Packit a4aae4
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
Packit a4aae4
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
Packit a4aae4
       13,    2,   13,   13,   13,   13,    4,    6,   13,   13,
Packit a4aae4
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
Packit a4aae4
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
Packit a4aae4
       13,   13,   10,    5,    7,   13,   13,   13,   13,   13,
Packit a4aae4
       13,    8,    9,   13,   13,   13,   13,   13,   13,   13,
Packit a4aae4
       12,   13,   13,   13,   13,    1,    0
Packit a4aae4
    } ;
Packit a4aae4
Packit a4aae4
static yyconst flex_int32_t yy_ec[256] =
Packit a4aae4
    {   0,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
Packit a4aae4
        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    2,    1,    5,    6,    1,    7,    1,    1,    7,
Packit a4aae4
        7,    8,    7,    9,    7,    7,    7,    7,   10,   11,
Packit a4aae4
       12,   13,    7,   14,    7,    7,    7,    7,   15,    1,
Packit a4aae4
        1,    1,    1,    1,   16,   17,    7,    7,   18,   19,
Packit a4aae4
       20,   21,   22,    7,    7,   23,   24,   25,   26,    7,
Packit a4aae4
        7,   27,   28,   29,   30,    7,    7,   31,   32,    7,
Packit a4aae4
       33,   34,   33,    1,    7,    1,   35,   36,    7,    7,
Packit a4aae4
Packit a4aae4
       37,   38,   39,   40,   41,    7,    7,   42,   43,   44,
Packit a4aae4
       45,    7,    7,   46,   47,   48,   49,    7,    7,   50,
Packit a4aae4
       51,    7,   52,    1,   53,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1
Packit a4aae4
    } ;
Packit a4aae4
Packit a4aae4
static yyconst flex_int32_t yy_meta[54] =
Packit a4aae4
    {   0,
Packit a4aae4
        1,    1,    2,    3,    4,    5,    5,    5,    1,    5,
Packit a4aae4
        5,    5,    5,    5,    1,    5,    5,    5,    5,    5,
Packit a4aae4
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
Packit a4aae4
        5,    5,    1,    6,    5,    5,    5,    5,    5,    5,
Packit a4aae4
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
Packit a4aae4
        5,    1,    1
Packit a4aae4
    } ;
Packit a4aae4
Packit a4aae4
static yyconst flex_int16_t yy_base[195] =
Packit a4aae4
    {   0,
Packit a4aae4
        0,    0,   51,   54,   57,   59,    0,    0,  271,  272,
Packit a4aae4
       62,  272,  272,  272,    0,    0,  272,  272,   42,   35,
Packit a4aae4
       45,   45,   43,   44,   52,  272,   27,  219,  227,  224,
Packit a4aae4
      219,  218,   35,  272,  272,   74,  272,  262,  272,    0,
Packit a4aae4
        0,  272,  261,   78,    0,  241,  233,  220,  212,  230,
Packit a4aae4
      210,  231,  211,  226,  206,  232,  212,  224,  204,   58,
Packit a4aae4
      226,  204,  205,  205,  197,  196,  198,  194,  201,  194,
Packit a4aae4
      195,  196,   91,  272,  234,  272,  272,    0,  272,  220,
Packit a4aae4
      208,  199,  187,  214,  194,  214,  194,   87,   91,  210,
Packit a4aae4
      190,  204,  184,  195,  175,    0,  174,  186,  174,  182,
Packit a4aae4
Packit a4aae4
      183,   94,  180,  175,  167,  186,  191,  165,  170,    0,
Packit a4aae4
      181,  161,  194,  196,  192,  194,  177,  157,  177,  157,
Packit a4aae4
       95,   98,   99,  153,  158,  150,  183,  185,  149,  150,
Packit a4aae4
      102,    0,  176,  156,  101,  104,    0,    0,  160,  159,
Packit a4aae4
      169,  149,  173,  175,  171,  173,  169,  171,  145,  105,
Packit a4aae4
      130,  140,  164,  166,  143,  123,  155,  150,  127,  124,
Packit a4aae4
      112,   96,    0,    0,    0,   86,  123,  120,   89,  102,
Packit a4aae4
       82,    0,    0,  106,  105,   85,   78,   83,  106,   86,
Packit a4aae4
        0,   85,   93,   53,   49,    0,  272,  139,  145,  151,
Packit a4aae4
      153,  159,  164,  170
Packit a4aae4
Packit a4aae4
    } ;
Packit a4aae4
Packit a4aae4
static yyconst flex_int16_t yy_def[195] =
Packit a4aae4
    {   0,
Packit a4aae4
      187,    1,  188,  188,  189,  189,  190,  190,  187,  187,
Packit a4aae4
      187,  187,  187,  187,  191,  191,  187,  187,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  187,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  187,  187,  192,  187,  187,  187,  193,
Packit a4aae4
      194,  187,  187,  187,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  192,  187,  187,  187,  187,  194,  187,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
Packit a4aae4
      191,  191,  191,  191,  191,  191,    0,  187,  187,  187,
Packit a4aae4
      187,  187,  187,  187
Packit a4aae4
Packit a4aae4
    } ;
Packit a4aae4
Packit a4aae4
static yyconst flex_int16_t yy_nxt[326] =
Packit a4aae4
    {   0,
Packit a4aae4
       10,   11,   12,   11,   13,   14,   15,   16,   17,   15,
Packit a4aae4
       15,   15,   15,   15,   18,   19,   20,   15,   21,   15,
Packit a4aae4
       15,   22,   15,   15,   15,   23,   15,   24,   15,   25,
Packit a4aae4
       15,   15,   26,   15,   27,   28,   15,   29,   15,   15,
Packit a4aae4
       30,   15,   15,   15,   31,   15,   32,   15,   33,   15,
Packit a4aae4
       15,   34,   35,   37,   38,   39,   37,   38,   39,   42,
Packit a4aae4
       43,   42,   43,   44,   46,   44,   50,   52,   64,   54,
Packit a4aae4
       47,   56,   58,   60,   65,   71,   74,   75,   61,   44,
Packit a4aae4
       72,   44,   94,   48,   40,   51,   53,   40,   55,   49,
Packit a4aae4
       57,   59,   62,   74,   75,  186,  113,   63,  114,  186,
Packit a4aae4
Packit a4aae4
      115,   95,  116,  127,  143,  128,  144,  145,  147,  146,
Packit a4aae4
      148,  153,  157,  154,  158,  159,  167,  160,  168,  175,
Packit a4aae4
      186,  185,  184,  183,  181,  182,  181,  181,  181,  180,
Packit a4aae4
      179,  178,  173,  172,  177,  174,  173,  172,  176,   36,
Packit a4aae4
       36,   36,   36,   36,   36,   41,   41,   41,   41,   41,
Packit a4aae4
       41,   26,   26,   26,   26,   26,   26,   45,   45,   73,
Packit a4aae4
       73,   73,  173,   73,   77,  172,   77,   77,   77,   77,
Packit a4aae4
       78,  171,  170,   78,   78,   78,  165,  164,  163,  169,
Packit a4aae4
      166,  165,  164,  165,  164,  165,  164,  163,  163,  162,
Packit a4aae4
      161,  156,  155,  152,  151,  138,  137,  150,  149,  132,
Packit a4aae4
Packit a4aae4
      142,  141,  140,  139,  138,  137,  138,  137,  136,  135,
Packit a4aae4
      134,  132,  133,  132,  131,  130,  129,  126,  110,  125,
Packit a4aae4
      124,  123,  122,  121,  120,  119,  118,  117,  112,  111,
Packit a4aae4
      110,  110,  109,  108,  107,  106,   76,   96,  105,  104,
Packit a4aae4
      103,  102,  101,  100,   99,   98,   96,   97,   96,   93,
Packit a4aae4
       92,   91,   90,   89,   88,   87,   86,   85,   84,   83,
Packit a4aae4
       82,   81,   80,   79,   76,   70,   69,   68,   67,   66,
Packit a4aae4
      187,    9,  187,  187,  187,  187,  187,  187,  187,  187,
Packit a4aae4
      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
Packit a4aae4
      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
Packit a4aae4
Packit a4aae4
      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
Packit a4aae4
      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
Packit a4aae4
      187,  187,  187,  187,  187
Packit a4aae4
    } ;
Packit a4aae4
Packit a4aae4
static yyconst flex_int16_t yy_chk[326] =
Packit a4aae4
    {   0,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit a4aae4
        1,    1,    1,    3,    3,    3,    4,    4,    4,    5,
Packit a4aae4
        5,    6,    6,   11,   19,   11,   20,   21,   27,   22,
Packit a4aae4
       19,   23,   24,   25,   27,   33,   36,   36,   25,   44,
Packit a4aae4
       33,   44,   60,   19,    3,   20,   21,    4,   22,   19,
Packit a4aae4
       23,   24,   25,   73,   73,  185,   88,   25,   88,  184,
Packit a4aae4
Packit a4aae4
       89,   60,   89,  102,  121,  102,  121,  122,  123,  122,
Packit a4aae4
      123,  131,  135,  131,  135,  136,  150,  136,  150,  162,
Packit a4aae4
      183,  182,  180,  179,  178,  177,  176,  175,  174,  171,
Packit a4aae4
      170,  169,  168,  167,  166,  161,  160,  159,  162,  188,
Packit a4aae4
      188,  188,  188,  188,  188,  189,  189,  189,  189,  189,
Packit a4aae4
      189,  190,  190,  190,  190,  190,  190,  191,  191,  192,
Packit a4aae4
      192,  192,  158,  192,  193,  157,  193,  193,  193,  193,
Packit a4aae4
      194,  156,  155,  194,  194,  194,  154,  153,  152,  151,
Packit a4aae4
      149,  148,  147,  146,  145,  144,  143,  142,  141,  140,
Packit a4aae4
      139,  134,  133,  130,  129,  128,  127,  126,  125,  124,
Packit a4aae4
Packit a4aae4
      120,  119,  118,  117,  116,  115,  114,  113,  112,  111,
Packit a4aae4
      109,  108,  107,  106,  105,  104,  103,  101,  100,   99,
Packit a4aae4
       98,   97,   95,   94,   93,   92,   91,   90,   87,   86,
Packit a4aae4
       85,   84,   83,   82,   81,   80,   75,   72,   71,   70,
Packit a4aae4
       69,   68,   67,   66,   65,   64,   63,   62,   61,   59,
Packit a4aae4
       58,   57,   56,   55,   54,   53,   52,   51,   50,   49,
Packit a4aae4
       48,   47,   46,   43,   38,   32,   31,   30,   29,   28,
Packit a4aae4
        9,  187,  187,  187,  187,  187,  187,  187,  187,  187,
Packit a4aae4
      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
Packit a4aae4
      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
Packit a4aae4
Packit a4aae4
      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
Packit a4aae4
      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
Packit a4aae4
      187,  187,  187,  187,  187
Packit a4aae4
    } ;
Packit a4aae4
Packit a4aae4
static yy_state_type yy_last_accepting_state;
Packit a4aae4
static char *yy_last_accepting_cpos;
Packit a4aae4
Packit a4aae4
extern int das_flex_debug;
Packit a4aae4
int das_flex_debug = 0;
Packit a4aae4
Packit a4aae4
/* The intent behind this definition is that it'll catch
Packit a4aae4
 * any uses of REJECT which flex missed.
Packit a4aae4
 */
Packit a4aae4
#define REJECT reject_used_but_not_detected
Packit a4aae4
static int yy_more_flag = 0;
Packit a4aae4
static int yy_more_len = 0;
Packit a4aae4
#define yymore() ((yy_more_flag) = 1)
Packit a4aae4
#define YY_MORE_ADJ (yy_more_len)
Packit a4aae4
#define YY_RESTORE_YY_MORE_OFFSET
Packit a4aae4
char *dastext;
Packit a4aae4
#line 1 "das.lex"
Packit a4aae4
/*
Packit a4aae4
 -*- mode: c++; c-basic-offset:4 -*-
Packit a4aae4
Packit a4aae4
 This file is part of libdap, A C++ implementation of the OPeNDAP Data
Packit a4aae4
 Access Protocol.
Packit a4aae4
Packit a4aae4
 Copyright (c) 2002,2003 OPeNDAP, Inc.
Packit a4aae4
 Author: James Gallagher <jgallagher@opendap.org>
Packit a4aae4
Packit a4aae4
 This library is free software; you can redistribute it and/or
Packit a4aae4
 modify it under the terms of the GNU Lesser General Public
Packit a4aae4
 License as published by the Free Software Foundation; either
Packit a4aae4
 version 2.1 of the License, or (at your option) any later version.
Packit a4aae4
 
Packit a4aae4
 This library is distributed in the hope that it will be useful,
Packit a4aae4
 but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit a4aae4
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit a4aae4
 Lesser General Public License for more details.
Packit a4aae4
 
Packit a4aae4
 You should have received a copy of the GNU Lesser General Public
Packit a4aae4
 License along with this library; if not, write to the Free Software
Packit a4aae4
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Packit a4aae4
Packit a4aae4
 You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
Packit a4aae4
Packit a4aae4
 (c) COPYRIGHT URI/MIT 1994-2000
Packit a4aae4
*/ 
Packit a4aae4
/*
Packit a4aae4
   Scanner for the DAS. This file works with gnu's flex scanner generator. It
Packit a4aae4
   returns either ATTR, ID, VAL, TYPE or one of the single character tokens
Packit a4aae4
   `{', `}', `;', `,' or `\n' as integers. In the case of an ID or VAL, the
Packit a4aae4
   scanner stores a pointer to the lexeme in yylval (whose type is char *).
Packit a4aae4
Packit a4aae4
   The scanner discards all comment text.
Packit a4aae4
Packit a4aae4
   The scanner returns quoted strings as VALs. Any characters may appear in a
Packit a4aae4
   quoted string except backslash (\) and quote("). To include these escape
Packit a4aae4
   them with a backslash.
Packit a4aae4
   
Packit a4aae4
   The scanner is not reentrant, but can share name spaces with other
Packit a4aae4
   scanners.
Packit a4aae4
   
Packit a4aae4
   Note:
Packit a4aae4
   1) The `defines' file das.tab.h is built using `bison -d'.
Packit a4aae4
   2) Define YY_DECL such that the scanner is called `daslex'.
Packit a4aae4
   3) When bison builds the das.tab.h file, it uses `das' instead of `yy' for
Packit a4aae4
   variable name prefixes (e.g., yylval --> daslval).
Packit a4aae4
   4) The quote stuff is very complicated because we want backslash (\)
Packit a4aae4
   escapes to work and because we want line counts to work too. In order to
Packit a4aae4
   properly scan a quoted string two C functions are used: one to remove the
Packit a4aae4
   escape characters from escape sequences and one to remove the trailing
Packit a4aae4
   quote on the end of the string. 
Packit a4aae4
Packit a4aae4
   jhrg 7/12/94 
Packit a4aae4
Packit a4aae4
   NB: We don't remove the \'s or ending quotes any more -- that way the
Packit a4aae4
   printed das can be re-parsed. 9/28/94. 
Packit a4aae4
*/
Packit a4aae4
#line 63 "das.lex"
Packit a4aae4
#include "config_dap.h"
Packit a4aae4
Packit a4aae4
#include <cstdio>
Packit a4aae4
Packit a4aae4
static char rcsid[] not_used ={"$Id$"};
Packit a4aae4
Packit a4aae4
#ifndef _MSC_VER
Packit a4aae4
#include <string.h>
Packit a4aae4
#else
Packit a4aae4
#include <string>
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
using namespace std;
Packit a4aae4
Packit a4aae4
#include "debug.h"
Packit a4aae4
#include "parser.h"
Packit a4aae4
Packit a4aae4
using namespace libdap ;
Packit a4aae4
Packit a4aae4
#ifndef YY_PROTO
Packit a4aae4
#define YY_PROTO(proto) proto
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* These defines must precede the das.tab.h include. */
Packit a4aae4
#define YYSTYPE char *
Packit a4aae4
#define YY_DECL int daslex YY_PROTO(( void ))
Packit a4aae4
#define YY_FATAL_ERROR(msg) {\
Packit a4aae4
    throw(Error(string("Error scanning DAS object text: ") + string(msg))); \
Packit a4aae4
    yy_fatal_error(msg); /* This will never be run but putting it here removes a warning that the function is never used. */ \
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
#include "das.tab.hh"
Packit a4aae4
Packit a4aae4
int das_line_num = 1;
Packit a4aae4
static int start_line;		/* used in quote and comment error handlers */
Packit a4aae4
Packit a4aae4
#define YY_NO_INPUT 1
Packit a4aae4
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Comment chars (#) are treated specially. Lets hope nobody wants to start
Packit a4aae4
   A variable name with one... Note that the DAS allows Identifiers to have 
Packit a4aae4
   parens and colons while the DDS and expr scanners don't. It's too hard to
Packit a4aae4
   disambiguate functions when IDs have parens in them and adding colons
Packit a4aae4
   makes parsing the array projections hard. 10/31/2001 jhrg */
Packit a4aae4
#line 716 "lex.das.cc"
Packit a4aae4
Packit a4aae4
#define INITIAL 0
Packit a4aae4
#define quote 1
Packit a4aae4
#define comment 2
Packit a4aae4
#define xml 3
Packit a4aae4
Packit a4aae4
#ifndef YY_NO_UNISTD_H
Packit a4aae4
/* Special case for "unistd.h", since it is non-ANSI. We include it way
Packit a4aae4
 * down here because we want the user's section 1 to have been scanned first.
Packit a4aae4
 * The user has a chance to override it with an option.
Packit a4aae4
 */
Packit a4aae4
#include <unistd.h>
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#ifndef YY_EXTRA_TYPE
Packit a4aae4
#define YY_EXTRA_TYPE void *
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
static int yy_init_globals (void );
Packit a4aae4
Packit a4aae4
/* Accessor methods to globals.
Packit a4aae4
   These are made visible to non-reentrant scanners for convenience. */
Packit a4aae4
Packit a4aae4
int daslex_destroy (void );
Packit a4aae4
Packit a4aae4
int dasget_debug (void );
Packit a4aae4
Packit a4aae4
void dasset_debug (int debug_flag  );
Packit a4aae4
Packit a4aae4
YY_EXTRA_TYPE dasget_extra (void );
Packit a4aae4
Packit a4aae4
void dasset_extra (YY_EXTRA_TYPE user_defined  );
Packit a4aae4
Packit a4aae4
FILE *dasget_in (void );
Packit a4aae4
Packit a4aae4
void dasset_in  (FILE * in_str  );
Packit a4aae4
Packit a4aae4
FILE *dasget_out (void );
Packit a4aae4
Packit a4aae4
void dasset_out  (FILE * out_str  );
Packit a4aae4
Packit a4aae4
yy_size_t dasget_leng (void );
Packit a4aae4
Packit a4aae4
char *dasget_text (void );
Packit a4aae4
Packit a4aae4
int dasget_lineno (void );
Packit a4aae4
Packit a4aae4
void dasset_lineno (int line_number  );
Packit a4aae4
Packit a4aae4
/* Macros after this point can all be overridden by user definitions in
Packit a4aae4
 * section 1.
Packit a4aae4
 */
Packit a4aae4
Packit a4aae4
#ifndef YY_SKIP_YYWRAP
Packit a4aae4
#ifdef __cplusplus
Packit a4aae4
extern "C" int daswrap (void );
Packit a4aae4
#else
Packit a4aae4
extern int daswrap (void );
Packit a4aae4
#endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#ifndef yytext_ptr
Packit a4aae4
static void yy_flex_strncpy (char *,yyconst char *,int );
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#ifdef YY_NEED_STRLEN
Packit a4aae4
static int yy_flex_strlen (yyconst char * );
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#ifndef YY_NO_INPUT
Packit a4aae4
Packit a4aae4
#ifdef __cplusplus
Packit a4aae4
static int yyinput (void );
Packit a4aae4
#else
Packit a4aae4
static int input (void );
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* Amount of stuff to slurp up with each read. */
Packit a4aae4
#ifndef YY_READ_BUF_SIZE
Packit a4aae4
#define YY_READ_BUF_SIZE 8192
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* Copy whatever the last rule matched to the standard output. */
Packit a4aae4
#ifndef ECHO
Packit a4aae4
/* This used to be an fputs(), but since the string might contain NUL's,
Packit a4aae4
 * we now use fwrite().
Packit a4aae4
 */
Packit a4aae4
#define ECHO fwrite( dastext, dasleng, 1, dasout )
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
Packit a4aae4
 * is returned in "result".
Packit a4aae4
 */
Packit a4aae4
#ifndef YY_INPUT
Packit a4aae4
#define YY_INPUT(buf,result,max_size) \
Packit a4aae4
	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
Packit a4aae4
		{ \
Packit a4aae4
		int c = '*'; \
Packit a4aae4
		yy_size_t n; \
Packit a4aae4
		for ( n = 0; n < max_size && \
Packit a4aae4
			     (c = getc( dasin )) != EOF && c != '\n'; ++n ) \
Packit a4aae4
			buf[n] = (char) c; \
Packit a4aae4
		if ( c == '\n' ) \
Packit a4aae4
			buf[n++] = (char) c; \
Packit a4aae4
		if ( c == EOF && ferror( dasin ) ) \
Packit a4aae4
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
Packit a4aae4
		result = n; \
Packit a4aae4
		} \
Packit a4aae4
	else \
Packit a4aae4
		{ \
Packit a4aae4
		errno=0; \
Packit a4aae4
		while ( (result = fread(buf, 1, max_size, dasin))==0 && ferror(dasin)) \
Packit a4aae4
			{ \
Packit a4aae4
			if( errno != EINTR) \
Packit a4aae4
				{ \
Packit a4aae4
				YY_FATAL_ERROR( "input in flex scanner failed" ); \
Packit a4aae4
				break; \
Packit a4aae4
				} \
Packit a4aae4
			errno=0; \
Packit a4aae4
			clearerr(dasin); \
Packit a4aae4
			} \
Packit a4aae4
		}\
Packit a4aae4
\
Packit a4aae4
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* No semi-colon after return; correct usage is to write "yyterminate();" -
Packit a4aae4
 * we don't want an extra ';' after the "return" because that will cause
Packit a4aae4
 * some compilers to complain about unreachable statements.
Packit a4aae4
 */
Packit a4aae4
#ifndef yyterminate
Packit a4aae4
#define yyterminate() return YY_NULL
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* Number of entries by which start-condition stack grows. */
Packit a4aae4
#ifndef YY_START_STACK_INCR
Packit a4aae4
#define YY_START_STACK_INCR 25
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* Report a fatal error. */
Packit a4aae4
#ifndef YY_FATAL_ERROR
Packit a4aae4
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* end tables serialization structures and prototypes */
Packit a4aae4
Packit a4aae4
/* Default declaration of generated scanner - a define so the user can
Packit a4aae4
 * easily add parameters.
Packit a4aae4
 */
Packit a4aae4
#ifndef YY_DECL
Packit a4aae4
#define YY_DECL_IS_OURS 1
Packit a4aae4
Packit a4aae4
extern int daslex (void);
Packit a4aae4
Packit a4aae4
#define YY_DECL int daslex (void)
Packit a4aae4
#endif /* !YY_DECL */
Packit a4aae4
Packit a4aae4
/* Code executed at the beginning of each rule, after dastext and dasleng
Packit a4aae4
 * have been set up.
Packit a4aae4
 */
Packit a4aae4
#ifndef YY_USER_ACTION
Packit a4aae4
#define YY_USER_ACTION
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* Code executed at the end of each rule. */
Packit a4aae4
#ifndef YY_BREAK
Packit a4aae4
#define YY_BREAK break;
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#define YY_RULE_SETUP \
Packit a4aae4
	YY_USER_ACTION
Packit a4aae4
Packit a4aae4
/** The main scanner function which does all the work.
Packit a4aae4
 */
Packit a4aae4
YY_DECL
Packit a4aae4
{
Packit a4aae4
	register yy_state_type yy_current_state;
Packit a4aae4
	register char *yy_cp, *yy_bp;
Packit a4aae4
	register int yy_act;
Packit a4aae4
    
Packit a4aae4
#line 136 "das.lex"
Packit a4aae4
Packit a4aae4
Packit a4aae4
#line 902 "lex.das.cc"
Packit a4aae4
Packit a4aae4
	if ( !(yy_init) )
Packit a4aae4
		{
Packit a4aae4
		(yy_init) = 1;
Packit a4aae4
Packit a4aae4
#ifdef YY_USER_INIT
Packit a4aae4
		YY_USER_INIT;
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
		if ( ! (yy_start) )
Packit a4aae4
			(yy_start) = 1;	/* first start state */
Packit a4aae4
Packit a4aae4
		if ( ! dasin )
Packit a4aae4
			dasin = stdin;
Packit a4aae4
Packit a4aae4
		if ( ! dasout )
Packit a4aae4
			dasout = stdout;
Packit a4aae4
Packit a4aae4
		if ( ! YY_CURRENT_BUFFER ) {
Packit a4aae4
			dasensure_buffer_stack ();
Packit a4aae4
			YY_CURRENT_BUFFER_LVALUE =
Packit a4aae4
				das_create_buffer(dasin,YY_BUF_SIZE );
Packit a4aae4
		}
Packit a4aae4
Packit a4aae4
		das_load_buffer_state( );
Packit a4aae4
		}
Packit a4aae4
Packit a4aae4
	while ( 1 )		/* loops until end-of-file is reached */
Packit a4aae4
		{
Packit a4aae4
		(yy_more_len) = 0;
Packit a4aae4
		if ( (yy_more_flag) )
Packit a4aae4
			{
Packit a4aae4
			(yy_more_len) = (yy_c_buf_p) - (yytext_ptr);
Packit a4aae4
			(yy_more_flag) = 0;
Packit a4aae4
			}
Packit a4aae4
		yy_cp = (yy_c_buf_p);
Packit a4aae4
Packit a4aae4
		/* Support of dastext. */
Packit a4aae4
		*yy_cp = (yy_hold_char);
Packit a4aae4
Packit a4aae4
		/* yy_bp points to the position in yy_ch_buf of the start of
Packit a4aae4
		 * the current run.
Packit a4aae4
		 */
Packit a4aae4
		yy_bp = yy_cp;
Packit a4aae4
Packit a4aae4
		yy_current_state = (yy_start);
Packit a4aae4
yy_match:
Packit a4aae4
		do
Packit a4aae4
			{
Packit a4aae4
			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
Packit a4aae4
			if ( yy_accept[yy_current_state] )
Packit a4aae4
				{
Packit a4aae4
				(yy_last_accepting_state) = yy_current_state;
Packit a4aae4
				(yy_last_accepting_cpos) = yy_cp;
Packit a4aae4
				}
Packit a4aae4
			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
Packit a4aae4
				{
Packit a4aae4
				yy_current_state = (int) yy_def[yy_current_state];
Packit a4aae4
				if ( yy_current_state >= 188 )
Packit a4aae4
					yy_c = yy_meta[(unsigned int) yy_c];
Packit a4aae4
				}
Packit a4aae4
			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
Packit a4aae4
			++yy_cp;
Packit a4aae4
			}
Packit a4aae4
		while ( yy_base[yy_current_state] != 272 );
Packit a4aae4
Packit a4aae4
yy_find_action:
Packit a4aae4
		yy_act = yy_accept[yy_current_state];
Packit a4aae4
		if ( yy_act == 0 )
Packit a4aae4
			{ /* have to back up */
Packit a4aae4
			yy_cp = (yy_last_accepting_cpos);
Packit a4aae4
			yy_current_state = (yy_last_accepting_state);
Packit a4aae4
			yy_act = yy_accept[yy_current_state];
Packit a4aae4
			}
Packit a4aae4
Packit a4aae4
		YY_DO_BEFORE_ACTION;
Packit a4aae4
Packit a4aae4
do_action:	/* This label is used only to access EOF actions. */
Packit a4aae4
Packit a4aae4
		switch ( yy_act )
Packit a4aae4
	{ /* beginning of action switch */
Packit a4aae4
			case 0: /* must back up */
Packit a4aae4
			/* undo the effects of YY_DO_BEFORE_ACTION */
Packit a4aae4
			*yy_cp = (yy_hold_char);
Packit a4aae4
			yy_cp = (yy_last_accepting_cpos);
Packit a4aae4
			yy_current_state = (yy_last_accepting_state);
Packit a4aae4
			goto yy_find_action;
Packit a4aae4
Packit a4aae4
case 1:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 138 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_ATTR;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 2:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 140 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_ALIAS;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 3:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 141 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_BYTE;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 4:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 142 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_INT16;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 5:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 143 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_UINT16;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 6:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 144 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_INT32;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 7:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 145 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_UINT32;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 8:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 146 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_FLOAT32;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 9:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 147 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_FLOAT64;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 10:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 148 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_STRING;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 11:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 149 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_URL;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 12:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 150 "das.lex"
Packit a4aae4
daslval = dastext; return SCAN_XML;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 13:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 152 "das.lex"
Packit a4aae4
{
Packit a4aae4
			    daslval = dastext; 
Packit a4aae4
			    DBG(cerr << "WORD: " << dastext << endl); 
Packit a4aae4
			    return SCAN_WORD;
Packit a4aae4
			}
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 14:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 158 "das.lex"
Packit a4aae4
return (int)*dastext;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 15:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 159 "das.lex"
Packit a4aae4
return (int)*dastext;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 16:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 160 "das.lex"
Packit a4aae4
return (int)*dastext;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 17:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 161 "das.lex"
Packit a4aae4
return (int)*dastext;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 18:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 163 "das.lex"
Packit a4aae4
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 19:
Packit a4aae4
/* rule 19 can match eol */
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 164 "das.lex"
Packit a4aae4
++das_line_num;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case YY_STATE_EOF(INITIAL):
Packit a4aae4
#line 165 "das.lex"
Packit a4aae4
yy_init = 1; das_line_num = 1; yyterminate();
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 20:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 167 "das.lex"
Packit a4aae4
BEGIN(comment);
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 21:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 168 "das.lex"
Packit a4aae4
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 22:
Packit a4aae4
/* rule 22 can match eol */
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 169 "das.lex"
Packit a4aae4
++das_line_num; BEGIN(INITIAL);
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 23:
Packit a4aae4
/* rule 23 can match eol */
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 170 "das.lex"
Packit a4aae4
++das_line_num; BEGIN(INITIAL);
Packit a4aae4
	YY_BREAK
Packit a4aae4
case YY_STATE_EOF(comment):
Packit a4aae4
#line 171 "das.lex"
Packit a4aae4
yy_init = 1; das_line_num = 1; yyterminate();
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 24:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 173 "das.lex"
Packit a4aae4
BEGIN(quote); start_line = das_line_num; yymore();
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 25:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 174 "das.lex"
Packit a4aae4
yymore();
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 26:
Packit a4aae4
/* rule 26 can match eol */
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 175 "das.lex"
Packit a4aae4
yymore(); ++das_line_num;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 27:
Packit a4aae4
/* rule 27 can match eol */
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 176 "das.lex"
Packit a4aae4
yymore(); ++das_line_num;
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 28:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 177 "das.lex"
Packit a4aae4
yymore();
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 29:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 178 "das.lex"
Packit a4aae4
{ 
Packit a4aae4
                          BEGIN(INITIAL); 
Packit a4aae4
Packit a4aae4
                          daslval = dastext;
Packit a4aae4
Packit a4aae4
                          return SCAN_WORD;
Packit a4aae4
                        }
Packit a4aae4
	YY_BREAK
Packit a4aae4
case YY_STATE_EOF(quote):
Packit a4aae4
#line 185 "das.lex"
Packit a4aae4
{
Packit a4aae4
                          char msg[256];
Packit a4aae4
                          sprintf(msg,
Packit a4aae4
                                  "Unterminated quote (starts on line %d)\n",
Packit a4aae4
                                  start_line);
Packit a4aae4
                          YY_FATAL_ERROR(msg);
Packit a4aae4
                        }
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 30:
Packit a4aae4
/* rule 30 can match eol */
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 193 "das.lex"
Packit a4aae4
{
Packit a4aae4
                          if (dastext) {
Packit a4aae4
                            fprintf(stderr, "Character '%c' (%d) is not",
Packit a4aae4
                            	    *dastext, *dastext);
Packit a4aae4
                            fprintf(stderr, " allowed.");
Packit a4aae4
			  }
Packit a4aae4
			}
Packit a4aae4
	YY_BREAK
Packit a4aae4
case 31:
Packit a4aae4
YY_RULE_SETUP
Packit a4aae4
#line 200 "das.lex"
Packit a4aae4
ECHO;
Packit a4aae4
	YY_BREAK
Packit a4aae4
#line 1186 "lex.das.cc"
Packit a4aae4
case YY_STATE_EOF(xml):
Packit a4aae4
	yyterminate();
Packit a4aae4
Packit a4aae4
	case YY_END_OF_BUFFER:
Packit a4aae4
		{
Packit a4aae4
		/* Amount of text matched not including the EOB char. */
Packit a4aae4
		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
Packit a4aae4
Packit a4aae4
		/* Undo the effects of YY_DO_BEFORE_ACTION. */
Packit a4aae4
		*yy_cp = (yy_hold_char);
Packit a4aae4
		YY_RESTORE_YY_MORE_OFFSET
Packit a4aae4
Packit a4aae4
		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
Packit a4aae4
			{
Packit a4aae4
			/* We're scanning a new file or input source.  It's
Packit a4aae4
			 * possible that this happened because the user
Packit a4aae4
			 * just pointed dasin at a new source and called
Packit a4aae4
			 * daslex().  If so, then we have to assure
Packit a4aae4
			 * consistency between YY_CURRENT_BUFFER and our
Packit a4aae4
			 * globals.  Here is the right place to do so, because
Packit a4aae4
			 * this is the first action (other than possibly a
Packit a4aae4
			 * back-up) that will match for the new input source.
Packit a4aae4
			 */
Packit a4aae4
			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
Packit a4aae4
			YY_CURRENT_BUFFER_LVALUE->yy_input_file = dasin;
Packit a4aae4
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
Packit a4aae4
			}
Packit a4aae4
Packit a4aae4
		/* Note that here we test for yy_c_buf_p "<=" to the position
Packit a4aae4
		 * of the first EOB in the buffer, since yy_c_buf_p will
Packit a4aae4
		 * already have been incremented past the NUL character
Packit a4aae4
		 * (since all states make transitions on EOB to the
Packit a4aae4
		 * end-of-buffer state).  Contrast this with the test
Packit a4aae4
		 * in input().
Packit a4aae4
		 */
Packit a4aae4
		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
Packit a4aae4
			{ /* This was really a NUL. */
Packit a4aae4
			yy_state_type yy_next_state;
Packit a4aae4
Packit a4aae4
			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
Packit a4aae4
Packit a4aae4
			yy_current_state = yy_get_previous_state(  );
Packit a4aae4
Packit a4aae4
			/* Okay, we're now positioned to make the NUL
Packit a4aae4
			 * transition.  We couldn't have
Packit a4aae4
			 * yy_get_previous_state() go ahead and do it
Packit a4aae4
			 * for us because it doesn't know how to deal
Packit a4aae4
			 * with the possibility of jamming (and we don't
Packit a4aae4
			 * want to build jamming into it because then it
Packit a4aae4
			 * will run more slowly).
Packit a4aae4
			 */
Packit a4aae4
Packit a4aae4
			yy_next_state = yy_try_NUL_trans( yy_current_state );
Packit a4aae4
Packit a4aae4
			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
Packit a4aae4
Packit a4aae4
			if ( yy_next_state )
Packit a4aae4
				{
Packit a4aae4
				/* Consume the NUL. */
Packit a4aae4
				yy_cp = ++(yy_c_buf_p);
Packit a4aae4
				yy_current_state = yy_next_state;
Packit a4aae4
				goto yy_match;
Packit a4aae4
				}
Packit a4aae4
Packit a4aae4
			else
Packit a4aae4
				{
Packit a4aae4
				yy_cp = (yy_c_buf_p);
Packit a4aae4
				goto yy_find_action;
Packit a4aae4
				}
Packit a4aae4
			}
Packit a4aae4
Packit a4aae4
		else switch ( yy_get_next_buffer(  ) )
Packit a4aae4
			{
Packit a4aae4
			case EOB_ACT_END_OF_FILE:
Packit a4aae4
				{
Packit a4aae4
				(yy_did_buffer_switch_on_eof) = 0;
Packit a4aae4
Packit a4aae4
				if ( daswrap( ) )
Packit a4aae4
					{
Packit a4aae4
					/* Note: because we've taken care in
Packit a4aae4
					 * yy_get_next_buffer() to have set up
Packit a4aae4
					 * dastext, we can now set up
Packit a4aae4
					 * yy_c_buf_p so that if some total
Packit a4aae4
					 * hoser (like flex itself) wants to
Packit a4aae4
					 * call the scanner after we return the
Packit a4aae4
					 * YY_NULL, it'll still work - another
Packit a4aae4
					 * YY_NULL will get returned.
Packit a4aae4
					 */
Packit a4aae4
					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
Packit a4aae4
Packit a4aae4
					yy_act = YY_STATE_EOF(YY_START);
Packit a4aae4
					goto do_action;
Packit a4aae4
					}
Packit a4aae4
Packit a4aae4
				else
Packit a4aae4
					{
Packit a4aae4
					if ( ! (yy_did_buffer_switch_on_eof) )
Packit a4aae4
						YY_NEW_FILE;
Packit a4aae4
					}
Packit a4aae4
				break;
Packit a4aae4
				}
Packit a4aae4
Packit a4aae4
			case EOB_ACT_CONTINUE_SCAN:
Packit a4aae4
				(yy_c_buf_p) =
Packit a4aae4
					(yytext_ptr) + yy_amount_of_matched_text;
Packit a4aae4
Packit a4aae4
				yy_current_state = yy_get_previous_state(  );
Packit a4aae4
Packit a4aae4
				yy_cp = (yy_c_buf_p);
Packit a4aae4
				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
Packit a4aae4
				goto yy_match;
Packit a4aae4
Packit a4aae4
			case EOB_ACT_LAST_MATCH:
Packit a4aae4
				(yy_c_buf_p) =
Packit a4aae4
				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
Packit a4aae4
Packit a4aae4
				yy_current_state = yy_get_previous_state(  );
Packit a4aae4
Packit a4aae4
				yy_cp = (yy_c_buf_p);
Packit a4aae4
				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
Packit a4aae4
				goto yy_find_action;
Packit a4aae4
			}
Packit a4aae4
		break;
Packit a4aae4
		}
Packit a4aae4
Packit a4aae4
	default:
Packit a4aae4
		YY_FATAL_ERROR(
Packit a4aae4
			"fatal flex scanner internal error--no action found" );
Packit a4aae4
	} /* end of action switch */
Packit a4aae4
		} /* end of scanning one token */
Packit a4aae4
} /* end of daslex */
Packit a4aae4
Packit a4aae4
/* yy_get_next_buffer - try to read in a new buffer
Packit a4aae4
 *
Packit a4aae4
 * Returns a code representing an action:
Packit a4aae4
 *	EOB_ACT_LAST_MATCH -
Packit a4aae4
 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
Packit a4aae4
 *	EOB_ACT_END_OF_FILE - end of file
Packit a4aae4
 */
Packit a4aae4
static int yy_get_next_buffer (void)
Packit a4aae4
{
Packit a4aae4
    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
Packit a4aae4
	register char *source = (yytext_ptr);
Packit a4aae4
	register int number_to_move, i;
Packit a4aae4
	int ret_val;
Packit a4aae4
Packit a4aae4
	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
Packit a4aae4
		YY_FATAL_ERROR(
Packit a4aae4
		"fatal flex scanner internal error--end of buffer missed" );
Packit a4aae4
Packit a4aae4
	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
Packit a4aae4
		{ /* Don't try to fill the buffer, so this is an EOF. */
Packit a4aae4
		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
Packit a4aae4
			{
Packit a4aae4
			/* We matched a single character, the EOB, so
Packit a4aae4
			 * treat this as a final EOF.
Packit a4aae4
			 */
Packit a4aae4
			return EOB_ACT_END_OF_FILE;
Packit a4aae4
			}
Packit a4aae4
Packit a4aae4
		else
Packit a4aae4
			{
Packit a4aae4
			/* We matched some text prior to the EOB, first
Packit a4aae4
			 * process it.
Packit a4aae4
			 */
Packit a4aae4
			return EOB_ACT_LAST_MATCH;
Packit a4aae4
			}
Packit a4aae4
		}
Packit a4aae4
Packit a4aae4
	/* Try to read more data. */
Packit a4aae4
Packit a4aae4
	/* First move last chars to start of buffer. */
Packit a4aae4
	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
Packit a4aae4
Packit a4aae4
	for ( i = 0; i < number_to_move; ++i )
Packit a4aae4
		*(dest++) = *(source++);
Packit a4aae4
Packit a4aae4
	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
Packit a4aae4
		/* don't do the read, it's not guaranteed to return an EOF,
Packit a4aae4
		 * just force an EOF
Packit a4aae4
		 */
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
Packit a4aae4
Packit a4aae4
	else
Packit a4aae4
		{
Packit a4aae4
			yy_size_t num_to_read =
Packit a4aae4
			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
Packit a4aae4
Packit a4aae4
		while ( num_to_read <= 0 )
Packit a4aae4
			{ /* Not enough room in the buffer - grow it. */
Packit a4aae4
Packit a4aae4
			/* just a shorter name for the current buffer */
Packit a4aae4
			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
Packit a4aae4
Packit a4aae4
			int yy_c_buf_p_offset =
Packit a4aae4
				(int) ((yy_c_buf_p) - b->yy_ch_buf);
Packit a4aae4
Packit a4aae4
			if ( b->yy_is_our_buffer )
Packit a4aae4
				{
Packit a4aae4
				yy_size_t new_size = b->yy_buf_size * 2;
Packit a4aae4
Packit a4aae4
				if ( new_size <= 0 )
Packit a4aae4
					b->yy_buf_size += b->yy_buf_size / 8;
Packit a4aae4
				else
Packit a4aae4
					b->yy_buf_size *= 2;
Packit a4aae4
Packit a4aae4
				b->yy_ch_buf = (char *)
Packit a4aae4
					/* Include room in for 2 EOB chars. */
Packit a4aae4
					dasrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
Packit a4aae4
				}
Packit a4aae4
			else
Packit a4aae4
				/* Can't grow it, we don't own it. */
Packit a4aae4
				b->yy_ch_buf = 0;
Packit a4aae4
Packit a4aae4
			if ( ! b->yy_ch_buf )
Packit a4aae4
				YY_FATAL_ERROR(
Packit a4aae4
				"fatal error - scanner input buffer overflow" );
Packit a4aae4
Packit a4aae4
			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
Packit a4aae4
Packit a4aae4
			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
Packit a4aae4
						number_to_move - 1;
Packit a4aae4
Packit a4aae4
			}
Packit a4aae4
Packit a4aae4
		if ( num_to_read > YY_READ_BUF_SIZE )
Packit a4aae4
			num_to_read = YY_READ_BUF_SIZE;
Packit a4aae4
Packit a4aae4
		/* Read in more data. */
Packit a4aae4
		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
Packit a4aae4
			(yy_n_chars), num_to_read );
Packit a4aae4
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
Packit a4aae4
		}
Packit a4aae4
Packit a4aae4
	if ( (yy_n_chars) == 0 )
Packit a4aae4
		{
Packit a4aae4
		if ( number_to_move == YY_MORE_ADJ )
Packit a4aae4
			{
Packit a4aae4
			ret_val = EOB_ACT_END_OF_FILE;
Packit a4aae4
			dasrestart(dasin  );
Packit a4aae4
			}
Packit a4aae4
Packit a4aae4
		else
Packit a4aae4
			{
Packit a4aae4
			ret_val = EOB_ACT_LAST_MATCH;
Packit a4aae4
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
Packit a4aae4
				YY_BUFFER_EOF_PENDING;
Packit a4aae4
			}
Packit a4aae4
		}
Packit a4aae4
Packit a4aae4
	else
Packit a4aae4
		ret_val = EOB_ACT_CONTINUE_SCAN;
Packit a4aae4
Packit a4aae4
	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
Packit a4aae4
		/* Extend the array by 50%, plus the number we really need. */
Packit a4aae4
		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) dasrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
Packit a4aae4
		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
Packit a4aae4
			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
Packit a4aae4
	}
Packit a4aae4
Packit a4aae4
	(yy_n_chars) += number_to_move;
Packit a4aae4
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
Packit a4aae4
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
Packit a4aae4
Packit a4aae4
	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
Packit a4aae4
Packit a4aae4
	return ret_val;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/* yy_get_previous_state - get the state just before the EOB char was reached */
Packit a4aae4
Packit a4aae4
    static yy_state_type yy_get_previous_state (void)
Packit a4aae4
{
Packit a4aae4
	register yy_state_type yy_current_state;
Packit a4aae4
	register char *yy_cp;
Packit a4aae4
    
Packit a4aae4
	yy_current_state = (yy_start);
Packit a4aae4
Packit a4aae4
	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
Packit a4aae4
		{
Packit a4aae4
		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
Packit a4aae4
		if ( yy_accept[yy_current_state] )
Packit a4aae4
			{
Packit a4aae4
			(yy_last_accepting_state) = yy_current_state;
Packit a4aae4
			(yy_last_accepting_cpos) = yy_cp;
Packit a4aae4
			}
Packit a4aae4
		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
Packit a4aae4
			{
Packit a4aae4
			yy_current_state = (int) yy_def[yy_current_state];
Packit a4aae4
			if ( yy_current_state >= 188 )
Packit a4aae4
				yy_c = yy_meta[(unsigned int) yy_c];
Packit a4aae4
			}
Packit a4aae4
		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
Packit a4aae4
		}
Packit a4aae4
Packit a4aae4
	return yy_current_state;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/* yy_try_NUL_trans - try to make a transition on the NUL character
Packit a4aae4
 *
Packit a4aae4
 * synopsis
Packit a4aae4
 *	next_state = yy_try_NUL_trans( current_state );
Packit a4aae4
 */
Packit a4aae4
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
Packit a4aae4
{
Packit a4aae4
	register int yy_is_jam;
Packit a4aae4
    	register char *yy_cp = (yy_c_buf_p);
Packit a4aae4
Packit a4aae4
	register YY_CHAR yy_c = 1;
Packit a4aae4
	if ( yy_accept[yy_current_state] )
Packit a4aae4
		{
Packit a4aae4
		(yy_last_accepting_state) = yy_current_state;
Packit a4aae4
		(yy_last_accepting_cpos) = yy_cp;
Packit a4aae4
		}
Packit a4aae4
	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
Packit a4aae4
		{
Packit a4aae4
		yy_current_state = (int) yy_def[yy_current_state];
Packit a4aae4
		if ( yy_current_state >= 188 )
Packit a4aae4
			yy_c = yy_meta[(unsigned int) yy_c];
Packit a4aae4
		}
Packit a4aae4
	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
Packit a4aae4
	yy_is_jam = (yy_current_state == 187);
Packit a4aae4
Packit a4aae4
	return yy_is_jam ? 0 : yy_current_state;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
#ifndef YY_NO_INPUT
Packit a4aae4
#ifdef __cplusplus
Packit a4aae4
    static int yyinput (void)
Packit a4aae4
#else
Packit a4aae4
    static int input  (void)
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
{
Packit a4aae4
	int c;
Packit a4aae4
    
Packit a4aae4
	*(yy_c_buf_p) = (yy_hold_char);
Packit a4aae4
Packit a4aae4
	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
Packit a4aae4
		{
Packit a4aae4
		/* yy_c_buf_p now points to the character we want to return.
Packit a4aae4
		 * If this occurs *before* the EOB characters, then it's a
Packit a4aae4
		 * valid NUL; if not, then we've hit the end of the buffer.
Packit a4aae4
		 */
Packit a4aae4
		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
Packit a4aae4
			/* This was really a NUL. */
Packit a4aae4
			*(yy_c_buf_p) = '\0';
Packit a4aae4
Packit a4aae4
		else
Packit a4aae4
			{ /* need more input */
Packit a4aae4
			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
Packit a4aae4
			++(yy_c_buf_p);
Packit a4aae4
Packit a4aae4
			switch ( yy_get_next_buffer(  ) )
Packit a4aae4
				{
Packit a4aae4
				case EOB_ACT_LAST_MATCH:
Packit a4aae4
					/* This happens because yy_g_n_b()
Packit a4aae4
					 * sees that we've accumulated a
Packit a4aae4
					 * token and flags that we need to
Packit a4aae4
					 * try matching the token before
Packit a4aae4
					 * proceeding.  But for input(),
Packit a4aae4
					 * there's no matching to consider.
Packit a4aae4
					 * So convert the EOB_ACT_LAST_MATCH
Packit a4aae4
					 * to EOB_ACT_END_OF_FILE.
Packit a4aae4
					 */
Packit a4aae4
Packit a4aae4
					/* Reset buffer status. */
Packit a4aae4
					dasrestart(dasin );
Packit a4aae4
Packit a4aae4
					/*FALLTHROUGH*/
Packit a4aae4
Packit a4aae4
				case EOB_ACT_END_OF_FILE:
Packit a4aae4
					{
Packit a4aae4
					if ( daswrap( ) )
Packit a4aae4
						return 0;
Packit a4aae4
Packit a4aae4
					if ( ! (yy_did_buffer_switch_on_eof) )
Packit a4aae4
						YY_NEW_FILE;
Packit a4aae4
#ifdef __cplusplus
Packit a4aae4
					return yyinput();
Packit a4aae4
#else
Packit a4aae4
					return input();
Packit a4aae4
#endif
Packit a4aae4
					}
Packit a4aae4
Packit a4aae4
				case EOB_ACT_CONTINUE_SCAN:
Packit a4aae4
					(yy_c_buf_p) = (yytext_ptr) + offset;
Packit a4aae4
					break;
Packit a4aae4
				}
Packit a4aae4
			}
Packit a4aae4
		}
Packit a4aae4
Packit a4aae4
	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
Packit a4aae4
	*(yy_c_buf_p) = '\0';	/* preserve dastext */
Packit a4aae4
	(yy_hold_char) = *++(yy_c_buf_p);
Packit a4aae4
Packit a4aae4
	return c;
Packit a4aae4
}
Packit a4aae4
#endif	/* ifndef YY_NO_INPUT */
Packit a4aae4
Packit a4aae4
/** Immediately switch to a different input stream.
Packit a4aae4
 * @param input_file A readable stream.
Packit a4aae4
 * 
Packit a4aae4
 * @note This function does not reset the start condition to @c INITIAL .
Packit a4aae4
 */
Packit a4aae4
    void dasrestart  (FILE * input_file )
Packit a4aae4
{
Packit a4aae4
    
Packit a4aae4
	if ( ! YY_CURRENT_BUFFER ){
Packit a4aae4
        dasensure_buffer_stack ();
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE =
Packit a4aae4
            das_create_buffer(dasin,YY_BUF_SIZE );
Packit a4aae4
	}
Packit a4aae4
Packit a4aae4
	das_init_buffer(YY_CURRENT_BUFFER,input_file );
Packit a4aae4
	das_load_buffer_state( );
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Switch to a different input buffer.
Packit a4aae4
 * @param new_buffer The new input buffer.
Packit a4aae4
 * 
Packit a4aae4
 */
Packit a4aae4
    void das_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
Packit a4aae4
{
Packit a4aae4
    
Packit a4aae4
	/* TODO. We should be able to replace this entire function body
Packit a4aae4
	 * with
Packit a4aae4
	 *		daspop_buffer_state();
Packit a4aae4
	 *		daspush_buffer_state(new_buffer);
Packit a4aae4
     */
Packit a4aae4
	dasensure_buffer_stack ();
Packit a4aae4
	if ( YY_CURRENT_BUFFER == new_buffer )
Packit a4aae4
		return;
Packit a4aae4
Packit a4aae4
	if ( YY_CURRENT_BUFFER )
Packit a4aae4
		{
Packit a4aae4
		/* Flush out information for old buffer. */
Packit a4aae4
		*(yy_c_buf_p) = (yy_hold_char);
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
Packit a4aae4
		}
Packit a4aae4
Packit a4aae4
	YY_CURRENT_BUFFER_LVALUE = new_buffer;
Packit a4aae4
	das_load_buffer_state( );
Packit a4aae4
Packit a4aae4
	/* We don't actually know whether we did this switch during
Packit a4aae4
	 * EOF (daswrap()) processing, but the only time this flag
Packit a4aae4
	 * is looked at is after daswrap() is called, so it's safe
Packit a4aae4
	 * to go ahead and always set it.
Packit a4aae4
	 */
Packit a4aae4
	(yy_did_buffer_switch_on_eof) = 1;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
static void das_load_buffer_state  (void)
Packit a4aae4
{
Packit a4aae4
    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
Packit a4aae4
	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
Packit a4aae4
	dasin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
Packit a4aae4
	(yy_hold_char) = *(yy_c_buf_p);
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Allocate and initialize an input buffer state.
Packit a4aae4
 * @param file A readable stream.
Packit a4aae4
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
Packit a4aae4
 * 
Packit a4aae4
 * @return the allocated buffer state.
Packit a4aae4
 */
Packit a4aae4
    YY_BUFFER_STATE das_create_buffer  (FILE * file, int  size )
Packit a4aae4
{
Packit a4aae4
	YY_BUFFER_STATE b;
Packit a4aae4
    
Packit a4aae4
	b = (YY_BUFFER_STATE) dasalloc(sizeof( struct yy_buffer_state )  );
Packit a4aae4
	if ( ! b )
Packit a4aae4
		YY_FATAL_ERROR( "out of dynamic memory in das_create_buffer()" );
Packit a4aae4
Packit a4aae4
	b->yy_buf_size = size;
Packit a4aae4
Packit a4aae4
	/* yy_ch_buf has to be 2 characters longer than the size given because
Packit a4aae4
	 * we need to put in 2 end-of-buffer characters.
Packit a4aae4
	 */
Packit a4aae4
	b->yy_ch_buf = (char *) dasalloc(b->yy_buf_size + 2  );
Packit a4aae4
	if ( ! b->yy_ch_buf )
Packit a4aae4
		YY_FATAL_ERROR( "out of dynamic memory in das_create_buffer()" );
Packit a4aae4
Packit a4aae4
	b->yy_is_our_buffer = 1;
Packit a4aae4
Packit a4aae4
	das_init_buffer(b,file );
Packit a4aae4
Packit a4aae4
	return b;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Destroy the buffer.
Packit a4aae4
 * @param b a buffer created with das_create_buffer()
Packit a4aae4
 * 
Packit a4aae4
 */
Packit a4aae4
    void das_delete_buffer (YY_BUFFER_STATE  b )
Packit a4aae4
{
Packit a4aae4
    
Packit a4aae4
	if ( ! b )
Packit a4aae4
		return;
Packit a4aae4
Packit a4aae4
	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
Packit a4aae4
Packit a4aae4
	if ( b->yy_is_our_buffer )
Packit a4aae4
		dasfree((void *) b->yy_ch_buf  );
Packit a4aae4
Packit a4aae4
	dasfree((void *) b  );
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
#ifndef __cplusplus
Packit a4aae4
extern int isatty (int );
Packit a4aae4
#endif /* __cplusplus */
Packit a4aae4
    
Packit a4aae4
/* Initializes or reinitializes a buffer.
Packit a4aae4
 * This function is sometimes called more than once on the same buffer,
Packit a4aae4
 * such as during a dasrestart() or at EOF.
Packit a4aae4
 */
Packit a4aae4
    static void das_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
Packit a4aae4
Packit a4aae4
{
Packit a4aae4
	int oerrno = errno;
Packit a4aae4
    
Packit a4aae4
	das_flush_buffer(b );
Packit a4aae4
Packit a4aae4
	b->yy_input_file = file;
Packit a4aae4
	b->yy_fill_buffer = 1;
Packit a4aae4
Packit a4aae4
    /* If b is the current buffer, then das_init_buffer was _probably_
Packit a4aae4
     * called from dasrestart() or through yy_get_next_buffer.
Packit a4aae4
     * In that case, we don't want to reset the lineno or column.
Packit a4aae4
     */
Packit a4aae4
    if (b != YY_CURRENT_BUFFER){
Packit a4aae4
        b->yy_bs_lineno = 1;
Packit a4aae4
        b->yy_bs_column = 0;
Packit a4aae4
    }
Packit a4aae4
Packit a4aae4
        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
Packit a4aae4
    
Packit a4aae4
	errno = oerrno;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
Packit a4aae4
 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
Packit a4aae4
 * 
Packit a4aae4
 */
Packit a4aae4
    void das_flush_buffer (YY_BUFFER_STATE  b )
Packit a4aae4
{
Packit a4aae4
    	if ( ! b )
Packit a4aae4
		return;
Packit a4aae4
Packit a4aae4
	b->yy_n_chars = 0;
Packit a4aae4
Packit a4aae4
	/* We always need two end-of-buffer characters.  The first causes
Packit a4aae4
	 * a transition to the end-of-buffer state.  The second causes
Packit a4aae4
	 * a jam in that state.
Packit a4aae4
	 */
Packit a4aae4
	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
Packit a4aae4
	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
Packit a4aae4
Packit a4aae4
	b->yy_buf_pos = &b->yy_ch_buf[0];
Packit a4aae4
Packit a4aae4
	b->yy_at_bol = 1;
Packit a4aae4
	b->yy_buffer_status = YY_BUFFER_NEW;
Packit a4aae4
Packit a4aae4
	if ( b == YY_CURRENT_BUFFER )
Packit a4aae4
		das_load_buffer_state( );
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Pushes the new state onto the stack. The new state becomes
Packit a4aae4
 *  the current state. This function will allocate the stack
Packit a4aae4
 *  if necessary.
Packit a4aae4
 *  @param new_buffer The new state.
Packit a4aae4
 *  
Packit a4aae4
 */
Packit a4aae4
void daspush_buffer_state (YY_BUFFER_STATE new_buffer )
Packit a4aae4
{
Packit a4aae4
    	if (new_buffer == NULL)
Packit a4aae4
		return;
Packit a4aae4
Packit a4aae4
	dasensure_buffer_stack();
Packit a4aae4
Packit a4aae4
	/* This block is copied from das_switch_to_buffer. */
Packit a4aae4
	if ( YY_CURRENT_BUFFER )
Packit a4aae4
		{
Packit a4aae4
		/* Flush out information for old buffer. */
Packit a4aae4
		*(yy_c_buf_p) = (yy_hold_char);
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
Packit a4aae4
		}
Packit a4aae4
Packit a4aae4
	/* Only push if top exists. Otherwise, replace top. */
Packit a4aae4
	if (YY_CURRENT_BUFFER)
Packit a4aae4
		(yy_buffer_stack_top)++;
Packit a4aae4
	YY_CURRENT_BUFFER_LVALUE = new_buffer;
Packit a4aae4
Packit a4aae4
	/* copied from das_switch_to_buffer. */
Packit a4aae4
	das_load_buffer_state( );
Packit a4aae4
	(yy_did_buffer_switch_on_eof) = 1;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Removes and deletes the top of the stack, if present.
Packit a4aae4
 *  The next element becomes the new top.
Packit a4aae4
 *  
Packit a4aae4
 */
Packit a4aae4
void daspop_buffer_state (void)
Packit a4aae4
{
Packit a4aae4
    	if (!YY_CURRENT_BUFFER)
Packit a4aae4
		return;
Packit a4aae4
Packit a4aae4
	das_delete_buffer(YY_CURRENT_BUFFER );
Packit a4aae4
	YY_CURRENT_BUFFER_LVALUE = NULL;
Packit a4aae4
	if ((yy_buffer_stack_top) > 0)
Packit a4aae4
		--(yy_buffer_stack_top);
Packit a4aae4
Packit a4aae4
	if (YY_CURRENT_BUFFER) {
Packit a4aae4
		das_load_buffer_state( );
Packit a4aae4
		(yy_did_buffer_switch_on_eof) = 1;
Packit a4aae4
	}
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/* Allocates the stack if it does not exist.
Packit a4aae4
 *  Guarantees space for at least one push.
Packit a4aae4
 */
Packit a4aae4
static void dasensure_buffer_stack (void)
Packit a4aae4
{
Packit a4aae4
	yy_size_t num_to_alloc;
Packit a4aae4
    
Packit a4aae4
	if (!(yy_buffer_stack)) {
Packit a4aae4
Packit a4aae4
		/* First allocation is just for 2 elements, since we don't know if this
Packit a4aae4
		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
Packit a4aae4
		 * immediate realloc on the next call.
Packit a4aae4
         */
Packit a4aae4
		num_to_alloc = 1;
Packit a4aae4
		(yy_buffer_stack) = (struct yy_buffer_state**)dasalloc
Packit a4aae4
								(num_to_alloc * sizeof(struct yy_buffer_state*)
Packit a4aae4
								);
Packit a4aae4
		if ( ! (yy_buffer_stack) )
Packit a4aae4
			YY_FATAL_ERROR( "out of dynamic memory in dasensure_buffer_stack()" );
Packit a4aae4
								  
Packit a4aae4
		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
Packit a4aae4
				
Packit a4aae4
		(yy_buffer_stack_max) = num_to_alloc;
Packit a4aae4
		(yy_buffer_stack_top) = 0;
Packit a4aae4
		return;
Packit a4aae4
	}
Packit a4aae4
Packit a4aae4
	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
Packit a4aae4
Packit a4aae4
		/* Increase the buffer to prepare for a possible push. */
Packit a4aae4
		int grow_size = 8 /* arbitrary grow size */;
Packit a4aae4
Packit a4aae4
		num_to_alloc = (yy_buffer_stack_max) + grow_size;
Packit a4aae4
		(yy_buffer_stack) = (struct yy_buffer_state**)dasrealloc
Packit a4aae4
								((yy_buffer_stack),
Packit a4aae4
								num_to_alloc * sizeof(struct yy_buffer_state*)
Packit a4aae4
								);
Packit a4aae4
		if ( ! (yy_buffer_stack) )
Packit a4aae4
			YY_FATAL_ERROR( "out of dynamic memory in dasensure_buffer_stack()" );
Packit a4aae4
Packit a4aae4
		/* zero only the new slots.*/
Packit a4aae4
		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
Packit a4aae4
		(yy_buffer_stack_max) = num_to_alloc;
Packit a4aae4
	}
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Setup the input buffer state to scan directly from a user-specified character buffer.
Packit a4aae4
 * @param base the character buffer
Packit a4aae4
 * @param size the size in bytes of the character buffer
Packit a4aae4
 * 
Packit a4aae4
 * @return the newly allocated buffer state object. 
Packit a4aae4
 */
Packit a4aae4
YY_BUFFER_STATE das_scan_buffer  (char * base, yy_size_t  size )
Packit a4aae4
{
Packit a4aae4
	YY_BUFFER_STATE b;
Packit a4aae4
    
Packit a4aae4
	if ( size < 2 ||
Packit a4aae4
	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
Packit a4aae4
	     base[size-1] != YY_END_OF_BUFFER_CHAR )
Packit a4aae4
		/* They forgot to leave room for the EOB's. */
Packit a4aae4
		return 0;
Packit a4aae4
Packit a4aae4
	b = (YY_BUFFER_STATE) dasalloc(sizeof( struct yy_buffer_state )  );
Packit a4aae4
	if ( ! b )
Packit a4aae4
		YY_FATAL_ERROR( "out of dynamic memory in das_scan_buffer()" );
Packit a4aae4
Packit a4aae4
	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
Packit a4aae4
	b->yy_buf_pos = b->yy_ch_buf = base;
Packit a4aae4
	b->yy_is_our_buffer = 0;
Packit a4aae4
	b->yy_input_file = 0;
Packit a4aae4
	b->yy_n_chars = b->yy_buf_size;
Packit a4aae4
	b->yy_is_interactive = 0;
Packit a4aae4
	b->yy_at_bol = 1;
Packit a4aae4
	b->yy_fill_buffer = 0;
Packit a4aae4
	b->yy_buffer_status = YY_BUFFER_NEW;
Packit a4aae4
Packit a4aae4
	das_switch_to_buffer(b  );
Packit a4aae4
Packit a4aae4
	return b;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Setup the input buffer state to scan a string. The next call to daslex() will
Packit a4aae4
 * scan from a @e copy of @a str.
Packit a4aae4
 * @param yystr a NUL-terminated string to scan
Packit a4aae4
 * 
Packit a4aae4
 * @return the newly allocated buffer state object.
Packit a4aae4
 * @note If you want to scan bytes that may contain NUL values, then use
Packit a4aae4
 *       das_scan_bytes() instead.
Packit a4aae4
 */
Packit a4aae4
YY_BUFFER_STATE das_scan_string (yyconst char * yystr )
Packit a4aae4
{
Packit a4aae4
    
Packit a4aae4
	return das_scan_bytes(yystr,strlen(yystr) );
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Setup the input buffer state to scan the given bytes. The next call to daslex() will
Packit a4aae4
 * scan from a @e copy of @a bytes.
Packit a4aae4
 * @param bytes the byte buffer to scan
Packit a4aae4
 * @param len the number of bytes in the buffer pointed to by @a bytes.
Packit a4aae4
 * 
Packit a4aae4
 * @return the newly allocated buffer state object.
Packit a4aae4
 */
Packit a4aae4
YY_BUFFER_STATE das_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
Packit a4aae4
{
Packit a4aae4
	YY_BUFFER_STATE b;
Packit a4aae4
	char *buf;
Packit a4aae4
	yy_size_t n, i;
Packit a4aae4
    
Packit a4aae4
	/* Get memory for full buffer, including space for trailing EOB's. */
Packit a4aae4
	n = _yybytes_len + 2;
Packit a4aae4
	buf = (char *) dasalloc(n  );
Packit a4aae4
	if ( ! buf )
Packit a4aae4
		YY_FATAL_ERROR( "out of dynamic memory in das_scan_bytes()" );
Packit a4aae4
Packit a4aae4
	for ( i = 0; i < _yybytes_len; ++i )
Packit a4aae4
		buf[i] = yybytes[i];
Packit a4aae4
Packit a4aae4
	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
Packit a4aae4
Packit a4aae4
	b = das_scan_buffer(buf,n );
Packit a4aae4
	if ( ! b )
Packit a4aae4
		YY_FATAL_ERROR( "bad buffer in das_scan_bytes()" );
Packit a4aae4
Packit a4aae4
	/* It's okay to grow etc. this buffer, and we should throw it
Packit a4aae4
	 * away when we're done.
Packit a4aae4
	 */
Packit a4aae4
	b->yy_is_our_buffer = 1;
Packit a4aae4
Packit a4aae4
	return b;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
#ifndef YY_EXIT_FAILURE
Packit a4aae4
#define YY_EXIT_FAILURE 2
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
static void yy_fatal_error (yyconst char* msg )
Packit a4aae4
{
Packit a4aae4
    	(void) fprintf( stderr, "%s\n", msg );
Packit a4aae4
	exit( YY_EXIT_FAILURE );
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/* Redefine yyless() so it works in section 3 code. */
Packit a4aae4
Packit a4aae4
#undef yyless
Packit a4aae4
#define yyless(n) \
Packit a4aae4
	do \
Packit a4aae4
		{ \
Packit a4aae4
		/* Undo effects of setting up dastext. */ \
Packit a4aae4
        int yyless_macro_arg = (n); \
Packit a4aae4
        YY_LESS_LINENO(yyless_macro_arg);\
Packit a4aae4
		dastext[dasleng] = (yy_hold_char); \
Packit a4aae4
		(yy_c_buf_p) = dastext + yyless_macro_arg; \
Packit a4aae4
		(yy_hold_char) = *(yy_c_buf_p); \
Packit a4aae4
		*(yy_c_buf_p) = '\0'; \
Packit a4aae4
		dasleng = yyless_macro_arg; \
Packit a4aae4
		} \
Packit a4aae4
	while ( 0 )
Packit a4aae4
Packit a4aae4
/* Accessor  methods (get/set functions) to struct members. */
Packit a4aae4
Packit a4aae4
/** Get the current line number.
Packit a4aae4
 * 
Packit a4aae4
 */
Packit a4aae4
int dasget_lineno  (void)
Packit a4aae4
{
Packit a4aae4
        
Packit a4aae4
    return daslineno;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Get the input stream.
Packit a4aae4
 * 
Packit a4aae4
 */
Packit a4aae4
FILE *dasget_in  (void)
Packit a4aae4
{
Packit a4aae4
        return dasin;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Get the output stream.
Packit a4aae4
 * 
Packit a4aae4
 */
Packit a4aae4
FILE *dasget_out  (void)
Packit a4aae4
{
Packit a4aae4
        return dasout;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Get the length of the current token.
Packit a4aae4
 * 
Packit a4aae4
 */
Packit a4aae4
yy_size_t dasget_leng  (void)
Packit a4aae4
{
Packit a4aae4
        return dasleng;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Get the current token.
Packit a4aae4
 * 
Packit a4aae4
 */
Packit a4aae4
Packit a4aae4
char *dasget_text  (void)
Packit a4aae4
{
Packit a4aae4
        return dastext;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Set the current line number.
Packit a4aae4
 * @param line_number
Packit a4aae4
 * 
Packit a4aae4
 */
Packit a4aae4
void dasset_lineno (int  line_number )
Packit a4aae4
{
Packit a4aae4
    
Packit a4aae4
    daslineno = line_number;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/** Set the input stream. This does not discard the current
Packit a4aae4
 * input buffer.
Packit a4aae4
 * @param in_str A readable stream.
Packit a4aae4
 * 
Packit a4aae4
 * @see das_switch_to_buffer
Packit a4aae4
 */
Packit a4aae4
void dasset_in (FILE *  in_str )
Packit a4aae4
{
Packit a4aae4
        dasin = in_str ;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
void dasset_out (FILE *  out_str )
Packit a4aae4
{
Packit a4aae4
        dasout = out_str ;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
int dasget_debug  (void)
Packit a4aae4
{
Packit a4aae4
        return das_flex_debug;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
void dasset_debug (int  bdebug )
Packit a4aae4
{
Packit a4aae4
        das_flex_debug = bdebug ;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
static int yy_init_globals (void)
Packit a4aae4
{
Packit a4aae4
        /* Initialization is the same as for the non-reentrant scanner.
Packit a4aae4
     * This function is called from daslex_destroy(), so don't allocate here.
Packit a4aae4
     */
Packit a4aae4
Packit a4aae4
    (yy_buffer_stack) = 0;
Packit a4aae4
    (yy_buffer_stack_top) = 0;
Packit a4aae4
    (yy_buffer_stack_max) = 0;
Packit a4aae4
    (yy_c_buf_p) = (char *) 0;
Packit a4aae4
    (yy_init) = 0;
Packit a4aae4
    (yy_start) = 0;
Packit a4aae4
Packit a4aae4
/* Defined in main.c */
Packit a4aae4
#ifdef YY_STDINIT
Packit a4aae4
    dasin = stdin;
Packit a4aae4
    dasout = stdout;
Packit a4aae4
#else
Packit a4aae4
    dasin = (FILE *) 0;
Packit a4aae4
    dasout = (FILE *) 0;
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
    /* For future reference: Set errno on error, since we are called by
Packit a4aae4
     * daslex_init()
Packit a4aae4
     */
Packit a4aae4
    return 0;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/* daslex_destroy is for both reentrant and non-reentrant scanners. */
Packit a4aae4
int daslex_destroy  (void)
Packit a4aae4
{
Packit a4aae4
    
Packit a4aae4
    /* Pop the buffer stack, destroying each element. */
Packit a4aae4
	while(YY_CURRENT_BUFFER){
Packit a4aae4
		das_delete_buffer(YY_CURRENT_BUFFER  );
Packit a4aae4
		YY_CURRENT_BUFFER_LVALUE = NULL;
Packit a4aae4
		daspop_buffer_state();
Packit a4aae4
	}
Packit a4aae4
Packit a4aae4
	/* Destroy the stack itself. */
Packit a4aae4
	dasfree((yy_buffer_stack) );
Packit a4aae4
	(yy_buffer_stack) = NULL;
Packit a4aae4
Packit a4aae4
    /* Reset the globals. This is important in a non-reentrant scanner so the next time
Packit a4aae4
     * daslex() is called, initialization will occur. */
Packit a4aae4
    yy_init_globals( );
Packit a4aae4
Packit a4aae4
    return 0;
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
/*
Packit a4aae4
 * Internal utility routines.
Packit a4aae4
 */
Packit a4aae4
Packit a4aae4
#ifndef yytext_ptr
Packit a4aae4
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
Packit a4aae4
{
Packit a4aae4
	register int i;
Packit a4aae4
	for ( i = 0; i < n; ++i )
Packit a4aae4
		s1[i] = s2[i];
Packit a4aae4
}
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#ifdef YY_NEED_STRLEN
Packit a4aae4
static int yy_flex_strlen (yyconst char * s )
Packit a4aae4
{
Packit a4aae4
	register int n;
Packit a4aae4
	for ( n = 0; s[n]; ++n )
Packit a4aae4
		;
Packit a4aae4
Packit a4aae4
	return n;
Packit a4aae4
}
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
void *dasalloc (yy_size_t  size )
Packit a4aae4
{
Packit a4aae4
	return (void *) malloc( size );
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
void *dasrealloc  (void * ptr, yy_size_t  size )
Packit a4aae4
{
Packit a4aae4
	/* The cast to (char *) in the following accommodates both
Packit a4aae4
	 * implementations that use char* generic pointers, and those
Packit a4aae4
	 * that use void* generic pointers.  It works with the latter
Packit a4aae4
	 * because both ANSI C and C++ allow castless assignment from
Packit a4aae4
	 * any pointer type to void*, and deal with argument conversions
Packit a4aae4
	 * as though doing an assignment.
Packit a4aae4
	 */
Packit a4aae4
	return (void *) realloc( (char *) ptr, size );
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
void dasfree (void * ptr )
Packit a4aae4
{
Packit a4aae4
	free( (char *) ptr );	/* see dasrealloc() for (char *) cast */
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
#define YYTABLES_NAME "yytables"
Packit a4aae4
Packit a4aae4
#line 200 "das.lex"
Packit a4aae4
Packit a4aae4
Packit a4aae4
Packit a4aae4
// These three glue routines enable DDS to reclaim the memory used to parse a
Packit a4aae4
// DDS off the wire. They are here because this file can see the YY_*
Packit a4aae4
// symbols; the file DDS.cc cannot.
Packit a4aae4
Packit a4aae4
void *
Packit a4aae4
das_buffer(FILE *fp)
Packit a4aae4
{
Packit a4aae4
    return (void *)das_create_buffer(fp, YY_BUF_SIZE);
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
void
Packit a4aae4
das_switch_to_buffer(void *buf)
Packit a4aae4
{
Packit a4aae4
    das_switch_to_buffer((YY_BUFFER_STATE)buf);
Packit a4aae4
}
Packit a4aae4
Packit a4aae4
void
Packit a4aae4
das_delete_buffer(void *buf)
Packit a4aae4
{
Packit a4aae4
    das_delete_buffer((YY_BUFFER_STATE)buf);
Packit a4aae4
}
Packit a4aae4
Packit a4aae4