--- /dev/null
+/* A lexical scanner generated by flex */
+
+/* scanner skeleton version:
+ * $Header$
+ */
+
+#include <stdio.h>
+
+#define FLEX_SCANNER
+
+/* returned upon end-of-file */
+#define YY_END_TOK 0
+
+/* amount of stuff to slurp up with each read */
+#define YY_READ_BUF_SIZE 8192
+
+#define YY_BUF_SIZE (YY_READ_BUF_SIZE * 2) /* size of input buffer */
+
+/* number of characters one rule can match. One less than YY_BUF_SIZE to make
+ * sure we never access beyond the end of an array
+ */
+#define YY_BUF_MAX (YY_BUF_SIZE - 1)
+
+/* copy whatever the last rule matched to the standard output */
+
+#define ECHO fputs( yytext, yyout )
+
+/* gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#define YY_INPUT(buf,result,max_size) \
+ if ( (result = read( fileno(yyin), buf, max_size )) < 0 ) \
+ YY_FATAL_ERROR( "read() in flex scanner failed" );
+#define YY_NULL 0
+
+/* report a fatal error */
+#define YY_FATAL_ERROR(msg) \
+ { \
+ fputs( msg, stderr ); \
+ putc( '\n', stderr ); \
+ exit( 1 ); \
+ }
+
+/* default yywrap function - always treat EOF as an EOF */
+#define yywrap() 1
+
+/* enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way that old Unix-lex does it
+ */
+#define BEGIN yy_start = 1 +
+
+/* default declaration of generated scanner - a define so the user can
+ * easily add parameters
+ */
+#define YY_DECL int yylex()
+
+/* code executed at the end of each rule */
+#define YY_BREAK break;
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext
+ */
+#define YY_DO_BEFORE_ACTION \
+ yytext = yy_bp; \
+ yy_hold_char = *yy_cp; \
+ *yy_cp = '\0'; \
+ yy_c_buf_p = yy_cp;
+
+/* returns the length of the matched text */
+#define yyleng (yy_cp - yy_bp)
+
+#define EOB_ACT_RESTART_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* return all but the first 'n' matched characters back to the input stream */
+#define yyless(n) \
+ { \
+ *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
+ yy_c_buf_p = yy_cp = yy_bp + n; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ }
+
+#define unput(c) yyunput( c, yy_bp )
+
+#define YY_USER_ACTION
+
+%% section 1 code and the data tables for the DFA go here
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+/* these variables are all declared out here so that section 3 code can
+ * manipulate them
+ */
+static char *yy_c_buf_p; /* points to current character in buffer */
+static int yy_init = 1; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
+
+/* true when we've seen an EOF for the current input file */
+static int yy_eof_has_been_seen;
+
+static int yy_n_chars; /* number of characters read into yy_ch_buf */
+
+/* yy_ch_buf has to be 2 characters longer than YY_BUF_SIZE because we need
+ * to put in 2 end-of-buffer characters (this is explained where it is
+ * done) at the end of yy_ch_buf
+ */
+static char yy_ch_buf[YY_BUF_SIZE + 2];
+
+/* yy_hold_char holds the character lost when yytext is formed */
+static char yy_hold_char;
+char *yytext;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+static yy_state_type yy_get_previous_state();
+static int yy_get_next_buffer();
+
+static yyunput();
+static input();
+
+YY_DECL
+ {
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+%% user's declarations go here
+
+ if ( yy_init )
+ {
+ if ( ! yy_start )
+ yy_start = 1; /* first start state */
+
+ if ( ! yyin )
+ yyin = stdin;
+
+ if ( ! yyout )
+ yyout = stdout;
+
+new_file:
+ /* this is where we enter upon encountering an end-of-file and
+ * yywrap() indicating that we should continue processing
+ */
+
+ /* we put in the '\n' and start reading from [1] so that an
+ * initial match-at-newline will be true.
+ */
+
+ yy_ch_buf[0] = '\n';
+ yy_n_chars = 1;
+
+ /* we always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+ yy_eof_has_been_seen = 0;
+
+ yytext = yy_c_buf_p = &yy_ch_buf[1];
+ yy_hold_char = *yy_c_buf_p;
+ yy_init = 0;
+ }
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = yy_c_buf_p;
+
+ /* support of yytext */
+ *yy_cp = yy_hold_char;
+
+ /* yy_bp points to the position in yy_ch_buf of the start of the
+ * current run.
+ */
+ yy_bp = yy_cp;
+
+%% code to set up and find next match goes here
+
+ /* bogus while loop to let YY_BACK_TRACK and EOB_ACT_LAST_MATCH
+ * actions branch here without introducing an optimizer-daunting
+ * goto
+ */
+ while ( 1 )
+ {
+%% code to find the action number goes here
+
+ YY_DO_BEFORE_ACTION;
+ YY_USER_ACTION;
+
+#ifdef FLEX_DEBUG
+ fprintf( stderr, "--accepting rule #%d (\"%s\")\n",
+ yy_act, yytext );
+#endif
+ switch ( yy_act )
+ {
+%% actions go here
+
+ case YY_END_OF_BUFFER:
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = yy_hold_char;
+
+ yytext = yy_bp;
+
+ switch ( yy_get_next_buffer() )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap() )
+ {
+ /* note: because we've taken care in
+ * yy_get_next_buffer() to have set up yytext,
+ * we can now set up yy_c_buf_p so that if some
+ * total hoser (like flex itself) wants
+ * to call the scanner after we return the
+ * YY_NULL, it'll still work - another YY_NULL
+ * will get returned.
+ */
+ yy_c_buf_p = yytext;
+ return ( YY_NULL );
+ }
+
+ else
+ goto new_file;
+ }
+ break;
+
+ case EOB_ACT_RESTART_SCAN:
+ yy_c_buf_p = yytext;
+ yy_hold_char = *yy_c_buf_p;
+ break;
+
+ case EOB_ACT_LAST_MATCH:
+ yy_c_buf_p = &yy_ch_buf[yy_n_chars];
+
+ yy_current_state = yy_get_previous_state();
+
+ yy_cp = yy_c_buf_p;
+ yy_bp = yytext;
+ continue; /* go to "YY_DO_BEFORE_ACTION" */
+ }
+ break;
+
+ default:
+ printf( "action # %d\n", yy_act );
+ YY_FATAL_ERROR( "fatal flex scanner internal error" );
+ }
+
+ break; /* exit bogus while loop */
+ }
+ }
+ }
+
+
+/* yy_get_next_buffer - try to read in new buffer
+ *
+ * synopsis
+ * int yy_get_next_buffer();
+ *
+ * returns a code representing an action
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_RESTART_SCAN - restart the scanner
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+
+ {
+ if ( yy_c_buf_p != &yy_ch_buf[yy_n_chars + 1] )
+ {
+ YY_FATAL_ERROR( "NULL in input" );
+ /*NOTREACHED*/
+ }
+
+ else
+ { /* try to read more data */
+ register char *dest = yy_ch_buf;
+ register char *source = yytext - 1; /* copy prev. char, too */
+ register int number_to_move, i;
+ int ret_val;
+
+ /* first move last chars to start of buffer */
+ number_to_move = yy_c_buf_p - yytext;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( yy_eof_has_been_seen )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ yy_n_chars = 0;
+
+ else
+ /* read in more data */
+ YY_INPUT( (&yy_ch_buf[number_to_move]), yy_n_chars,
+ YY_BUF_SIZE - number_to_move - 1 );
+
+ if ( yy_n_chars == 0 )
+ {
+ if ( number_to_move == 1 )
+ ret_val = EOB_ACT_END_OF_FILE;
+ else
+ ret_val = EOB_ACT_LAST_MATCH;
+
+ yy_eof_has_been_seen = 1;
+ }
+
+ else
+ ret_val = EOB_ACT_RESTART_SCAN;
+
+ yy_n_chars += number_to_move;
+ yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+ /* yytext begins at the second character in
+ * yy_ch_buf; the first character is the one which
+ * preceded it before reading in the latest buffer;
+ * it needs to be kept around in case it's a
+ * newline, so yy_get_previous_state() will have
+ * with '^' rules active
+ */
+
+ yytext = &yy_ch_buf[1];
+
+ return ( ret_val );
+ }
+ }
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached
+ *
+ * synopsis
+ * yy_state_type yy_get_previous_state();
+ */
+
+static yy_state_type yy_get_previous_state()
+
+ {
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+%% code to get the start state into yy_current_state goes here
+
+ for ( yy_cp = yytext; yy_cp < yy_c_buf_p; ++yy_cp )
+ {
+%% code to find the next state goes here
+ }
+
+ return ( yy_current_state );
+ }
+
+
+static yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+
+ {
+ register char *yy_cp = yy_c_buf_p;
+
+ *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
+
+ if ( yy_cp < yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ register int number_to_move = yy_n_chars + 2; /* +2 for EOB chars */
+ register char *dest = &yy_ch_buf[YY_BUF_SIZE + 2];
+ register char *source = &yy_ch_buf[number_to_move];
+
+ while ( source > yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += dest - source;
+ yy_bp += dest - source;
+
+ if ( yy_cp < yy_ch_buf + 2 )
+ YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ }
+
+ if ( yy_cp > yy_bp && yy_cp[-1] == '\n' )
+ yy_cp[-2] = '\n';
+
+ *--yy_cp = c;
+
+ YY_DO_BEFORE_ACTION; /* set up yytext again */
+ }
+
+
+static int input()
+
+ {
+ int c;
+ char *yy_cp = yy_c_buf_p;
+
+ *yy_cp = yy_hold_char;
+
+ if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+ { /* need more input */
+ yytext = yy_c_buf_p;
+ ++yy_c_buf_p;
+
+ switch ( yy_get_next_buffer() )
+ {
+ /* this code, unfortunately, is somewhat redundant with
+ * that above
+ */
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap() )
+ {
+ yy_c_buf_p = yytext;
+ return ( EOF );
+ }
+
+ yy_ch_buf[0] = '\n';
+ yy_n_chars = 1;
+ yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+ yy_eof_has_been_seen = 0;
+ yytext = yy_c_buf_p = &yy_ch_buf[1];
+ yy_hold_char = *yy_c_buf_p;
+
+ return ( input() );
+ }
+ break;
+
+ case EOB_ACT_RESTART_SCAN:
+ yy_c_buf_p = yytext;
+ break;
+
+ case EOB_ACT_LAST_MATCH:
+ YY_FATAL_ERROR( "unexpected last match in input()" );
+ }
+ }
+
+ c = *yy_c_buf_p;
+ yy_hold_char = *++yy_c_buf_p;
+
+ return ( c );
+ }