[comp.sources.unix] v14i082: Flex, a lex replacement, Part04/05

rsalz@uunet.uu.net (Rich Salz) (05/04/88)

Submitted-by: Vern Paxson <vern@lbl-csam.arpa>
Posting-number: Volume 14, Issue 82
Archive-name: flex/part04

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 4 (of 5)."
# Contents:  scan.c.dist
# Wrapped by rsalz@fig.bbn.com on Tue May  3 17:31:33 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'scan.c.dist' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'scan.c.dist'\"
else
echo shar: Extracting \"'scan.c.dist'\" \(36366 characters\)
sed "s/^X//" >'scan.c.dist' <<'END_OF_FILE'
X#define YY_DEFAULT_ACTION YY_FATAL_ERROR( "flex scanner jammed" );
X#define FLEX_USE_ECS
X#define FLEX_USE_MECS
X/* A lexical scanner generated by flex */
X
X#include "flexskeldef.h"
X
X# line 1 "scan.l"
X#define INITIAL 0
X/* scan.l - scanner for flex input */
X/*
X * Copyright (c) 1987, the University of California
X * 
X * The United States Government has rights in this work pursuant to
X * contract no. DE-AC03-76SF00098 between the United States Department of
X * Energy and the University of California.
X * 
X * This program may be redistributed.  Enhancements and derivative works
X * may be created provided the new works, if made available to the general
X * public, are made available for use by anyone.
X */
X# line 16 "scan.l"
X#include "flexdef.h"
X#include "parse.h"
X
X#define ACTION_ECHO fprintf( temp_action_file, "%s", yytext )
X#define MARK_END_OF_PROLOG fprintf( temp_action_file, "%%%% end of prolog\n" );
X
X#undef YY_DECL
X#define YY_DECL \
X	int flexscan()
X
X#define RETURNCHAR \
X	yylval = yytext[0]; \
X	return ( CHAR );
X
X#define RETURNNAME \
X	(void) strcpy( nmstr, yytext ); \
X	return ( NAME );
X
X#define PUT_BACK_STRING(str, start) \
X	for ( i = strlen( str ) - 1; i >= start; --i ) \
X	    unput(str[i])
X#define SECT2 2
X#define SECT2PROLOG 4
X#define SECT3 6
X#define CODEBLOCK 8
X#define PICKUPDEF 10
X#define SC 12
X#define CARETISBOL 14
X#define NUM 16
X#define QUOTE 18
X#define FIRSTCCL 20
X#define CCL 22
X#define ACTION 24
X#define RECOVER 26
X#define BRACEERROR 28
X#define C_COMMENT 30
X#define C_COMMENT_2 32
X#define ACTION_COMMENT 34
X#define ACTION_STRING 36
X#define PERCENT_BRACE_ACTION 38
X# line 53 "scan.l"
X#define YY_JAM 226
X#define YY_JAM_BASE 800
X#define YY_TEMPLATE 227
static char l[227] =
X    {   0,
X       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
X       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
X       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
X       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
X       14,    7,   13,   11,    7,   12,   14,   14,   14,   10,
X       46,   39,   40,   32,   46,   45,   30,   46,   46,   46,
X       39,   28,   46,   45,   31,    0,   27,   99,    0,   21,
X        0,   23,   22,   24,   52,   48,   49,   51,   53,   67,
X       68,   65,   64,   66,   54,   56,   55,   54,   60,   59,
X       60,   60,   62,   62,   62,   63,   76,   80,   79,   81,
X
X       81,   74,   75,    0,   25,   70,   69,   17,   19,   18,
X       89,   91,   90,   83,   85,   84,   92,   94,   95,   96,
X       72,   72,   73,   72,    7,   11,    0,    7,    1,    0,
X        2,    0,    8,    4,    5,    0,    3,   10,   39,   40,
X        0,    0,   35,    0,    0,   97,   97,    0,   34,   33,
X       34,    0,   39,   28,    0,    0,    0,   42,   38,   26,
X        0,   23,   50,   51,   64,   98,   98,    0,   57,   58,
X       61,   76,    0,   78,    0,   77,   15,   87,   83,   82,
X       92,   93,   71,    1,    0,    9,    8,    0,    0,    6,
X       36,    0,   37,   43,    0,    0,   97,   34,   34,   44,
X
X       29,    0,   36,    0,   29,    0,   42,    0,   20,   98,
X        0,   16,    0,   88,   71,    0,    0,   97,   98,    0,
X        0,   97,   98,    4,    0,    0
X    } ;
X
static char e[128] =
X    {   0,
X        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X        1,    2,    1,    4,    5,    6,    7,    1,    8,    9,
X        9,   10,    9,   11,   12,    9,   13,   14,   15,   15,
X       15,   15,   15,   15,   15,   15,   15,    1,    1,   16,
X        1,   17,    9,    1,   23,   22,   22,   22,   22,   22,
X       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
X       22,   24,   25,   26,   22,   22,   22,   27,   22,   22,
X       18,   19,   20,   21,   22,    1,   23,   22,   22,   22,
X
X       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
X       22,   22,   22,   24,   25,   26,   22,   22,   22,   27,
X       22,   22,   28,   29,   30,    1,    1
X    } ;
X
static char m[31] =
X    {   0,
X        1,    2,    3,    4,    1,    1,    1,    5,    1,    6,
X        1,    1,    5,    7,    7,    1,    1,    1,    8,    9,
X        1,    7,    7,    7,    7,    7,    7,    5,    1,   10
X    } ;
X
static short int b[276] =
X    {   0,
X        0,   26,   52,   80,  286,  285,    0,    0,  284,    1,
X        3,    7,   99,  116,  265,  264,  141,  169,   11,   13,
X        0,   22,   25,   47,  197,  225,  281,  280,    8,   10,
X       32,   54,   66,   69,   75,   85,   88,   99,  110,  112,
X      800,  280,  800,    0,   44,  800,  277,  104,  269,    0,
X      800,  144,  800,  800,   71,  800,  800,  259,   83,  242,
X      268,  800,  270,  266,  800,  271,    0,  800,  270,  800,
X       33,    0,  270,  800,  800,  800,  242,    0,  800,  800,
X      800,  800,   91,  800,  800,  800,  800,  114,  800,  800,
X      116,  250,  800,    0,  136,  800,    0,  800,  800,  126,
X
X      251,  800,  800,  257,  800,  800,  800,  150,  800,  246,
X      151,  800,  245,    0,  800,  241,    0,  800,  800,    0,
X      249,  156,  800,  145,  249,    0,  247,  162,  800,  246,
X      800,  245,    0,  219,  800,  234,  800,    0,  167,  800,
X      206,  229,  800,  147,  165,  800,  162,    0,    0,  800,
X      284,  165,  313,  800,  178,  179,  184,    0,  800,  800,
X      218,    0,  800,    0,  178,  800,  180,    0,  800,  800,
X      800,    0,  190,  800,    0,  800,  216,  187,    0,  800,
X        0,  800,    0,  800,  185,  800,    0,  139,  146,  800,
X      800,  133,  800,  800,  188,  100,  197,    0,    0,  800,
X
X      800,  210,  201,  213,  800,  212,    0,   97,  800,  203,
X       91,  800,   74,  800,    0,   51,  216,  209,  225,   34,
X      227,  800,  800,  800,  224,  800,  342,  352,  362,  372,
X      382,  392,  402,  412,  422,  432,  442,  452,  462,  472,
X      482,  492,  502,  512,   13,  522,  532,  542,   11,  552,
X      562,  572,  582,  592,  602,    0,  612,  622,  632,  642,
X      651,  661,  671,  681,  691,  701,  711,  721,  731,  740,
X      750,  760,  770,  780,  790
X    } ;
X
static short int d[276] =
X    {   0,
X      227,  227,  228,  228,  229,  229,  230,  230,  231,  231,
X      232,  232,  233,  233,  226,  226,  234,  234,  235,  235,
X      236,  236,  237,  237,  238,  238,  239,  239,  226,  226,
X      240,  240,  241,  241,  242,  242,  243,  243,  244,  244,
X      226,  226,  226,  245,  246,  226,  247,  248,  226,  249,
X      226,  226,  226,  226,  226,  226,  226,  250,  251,  252,
X      253,  226,  226,  226,  226,  229,  254,  226,  231,  226,
X      231,  255,  226,  226,  226,  226,  226,  256,  226,  226,
X      226,  226,  226,  226,  226,  226,  226,  251,  226,  226,
X      257,  258,  226,  259,  251,  226,  260,  226,  226,  261,
X
X      226,  226,  226,  239,  226,  226,  226,  240,  226,  226,
X      241,  226,  226,  262,  226,  226,  263,  226,  226,  264,
X      244,  244,  226,  244,  226,  245,  246,  246,  226,  247,
X      226,  265,  266,  226,  226,  267,  226,  249,  226,  226,
X      226,  268,  226,  250,  250,  226,  226,  251,  269,  226,
X      269,  253,  253,  226,  253,  253,  270,  271,  226,  226,
X      272,  255,  226,  256,  226,  226,  226,  257,  226,  226,
X      226,  260,  261,  226,  261,  226,  273,  274,  262,  226,
X      263,  226,  275,  226,  265,  226,  266,  226,  267,  226,
X      226,  268,  226,  226,  250,  250,  226,  269,  151,  226,
X
X      226,  253,  253,  270,  226,  270,  271,  272,  226,  226,
X      273,  226,  274,  226,  275,  226,  250,  226,  226,  226,
X      250,  226,  226,  226,  250,-32767,  226,  226,  226,  226,
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
X      226,  226,  226,  226,  226
X    } ;
X
static short int n[831] =
X    {   0,
X      226,   42,   43,   70,   73,   74,  164,   71,   73,   74,
X      106,   90,  106,   86,   87,   86,   87,  138,   91,  126,
X       92,   44,   44,   44,   44,   44,   44,   45,   46,   88,
X       47,   88,   48,   90,  109,   70,   94,  107,   49,  107,
X       91,  110,   92,   95,   96,  128,  129,   50,   50,   50,
X       50,   50,   50,   52,   53,   54,  109,   55,   94,  224,
X       56,   56,  161,  110,   56,   95,   96,   57,  112,   58,
X       59,  112,  143,  143,  220,  113,  214,  115,  113,   60,
X       56,   61,   62,   54,  116,   55,   63,  115,   56,   56,
X      118,  119,   64,  212,  116,   57,  147,   58,   59,  209,
X
X       65,  118,  119,  148,  165,  165,  120,   60,   56,   76,
X      133,  122,  123,  122,  123,   77,  124,  120,  124,  144,
X       78,   78,   78,   78,   78,   78,   76,  147,  134,  167,
X      135,  136,   77,  174,  148,  193,  168,   78,   78,   78,
X       78,   78,   78,   81,  175,  139,  140,  226,  190,  147,
X      141,   82,  226,  226,   83,   83,  148,  122,  226,  226,
X      226,  216,  124,  128,  129,  145,  194,  201,  139,  140,
X       84,   81,  142,  141,  183,  197,  197,  202,  195,   82,
X      201,  201,   83,   83,  144,  196,  205,  186,  159,  214,
X      202,  165,  165,  210,  210,  142,  206,  174,   84,   98,
X
X       99,  217,  217,  201,  100,  203,  145,  194,  175,  101,
X      218,  218,  201,  202,  205,  205,  219,  219,  212,  226,
X      209,  192,  222,  222,  102,  206,  103,   98,   99,  221,
X      221,  193,  100,  191,  145,  194,  190,  101,  223,  223,
X      225,  225,  145,  194,  188,  145,  194,  186,  131,  184,
X      125,  226,  102,  180,  103,  150,  150,  178,  177,  105,
X      176,  170,  163,  151,  151,  151,  151,  151,  151,  153,
X      154,   73,   70,   67,  155,  159,  158,  145,  137,  131,
X      156,  125,  105,  105,   79,   79,   70,   67,   67,  226,
X      226,  226,  226,  226,  226,  226,  157,  199,  199,  226,
X
X      226,  226,  226,  226,  226,  199,  199,  199,  199,  199,
X      199,  226,  226,  200,  153,  154,  226,  226,  226,  155,
X      226,  226,  226,  226,  226,  156,  226,  226,  226,  226,
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
X      226,  157,   41,   41,   41,   41,   41,   41,   41,   41,
X       41,   41,   51,   51,   51,   51,   51,   51,   51,   51,
X       51,   51,   66,   66,   66,   66,   66,   66,   66,   66,
X       66,   66,   68,   68,   68,   68,   68,   68,   68,   68,
X       68,   68,   69,   69,   69,   69,   69,   69,   69,   69,
X       69,   69,   72,   72,   72,   72,   72,   72,   72,   72,
X
X       72,   72,   75,   75,  226,   75,   75,   75,   75,   75,
X       75,   75,   80,   80,   80,   80,   80,   80,   80,   80,
X       80,   80,   85,   85,   85,   85,   85,   85,   85,   85,
X       85,   85,   89,   89,  226,   89,   89,   89,   89,   89,
X       89,   89,   93,   93,  226,   93,   93,   93,   93,   93,
X       93,   93,   97,   97,   97,   97,   97,   97,   97,   97,
X       97,   97,  104,  104,  104,  104,  104,  104,  104,  104,
X      104,  104,  108,  108,  108,  108,  108,  108,  108,  108,
X      108,  108,  111,  111,  111,  111,  111,  111,  111,  111,
X      111,  111,  114,  114,  114,  114,  114,  114,  114,  114,
X
X      114,  114,  117,  117,  117,  117,  117,  117,  117,  117,
X      117,  117,  121,  121,  121,  121,  121,  121,  121,  121,
X      121,  121,  127,  127,  127,  127,  127,  127,  127,  127,
X      127,  127,  130,  130,  130,  130,  130,  130,  130,  130,
X      130,  130,  132,  132,  132,  132,  132,  132,  132,  132,
X      132,  132,  144,  144,  226,  144,  144,  144,  144,  144,
X      226,  144,  146,  146,  226,  146,  146,  146,  146,  146,
X      146,  146,  149,  149,  226,  149,  149,  149,  149,  149,
X      149,  149,  152,  152,  152,  152,  152,  152,  152,  152,
X      152,  152,  160,  226,  226,  160,  160,  160,  160,  160,
X
X      160,  160,  162,  162,  226,  162,  162,  162,  162,  162,
X      162,  162,  166,  166,  226,  166,  166,  166,  166,  166,
X      166,  166,  169,  169,  226,  169,  169,  169,  169,  169,
X      169,  169,  171,  171,  226,  171,  171,  171,  171,  171,
X      226,  171,  172,  172,  226,  226,  226,  172,  172,  172,
X      172,  173,  173,  226,  173,  173,  173,  173,  173,  173,
X      173,  179,  179,  226,  179,  179,  226,  179,  179,  179,
X      179,  181,  181,  226,  226,  181,  181,  181,  226,  181,
X      181,  182,  182,  226,  182,  182,  182,  182,  182,  182,
X      182,  185,  185,  185,  185,  185,  185,  185,  185,  185,
X
X      185,  187,  187,  226,  187,  187,  187,  187,  187,  187,
X      187,  189,  189,  189,  189,  189,  189,  189,  189,  189,
X      189,  192,  192,  192,  192,  192,  192,  192,  192,  192,
X      192,  198,  198,  226,  198,  198,  198,  198,  198,  198,
X      204,  204,  204,  204,  204,  204,  204,  204,  204,  204,
X      207,  207,  226,  207,  207,  207,  207,  207,  207,  207,
X      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
X      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
X      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
X      215,  215,  226,  215,  215,  215,  215,  215,  215,  215,
X
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226
X    } ;
X
static short int c[831] =
X    {   0,
X        0,    1,    1,   10,   11,   11,  256,   10,   12,   12,
X       29,   21,   30,   19,   19,   20,   20,  249,   21,  245,
X       21,    1,    1,    1,    1,    1,    1,    2,    2,   19,
X        2,   20,    2,   22,   31,   71,   23,   29,    2,   30,
X       22,   31,   22,   23,   23,   45,   45,    2,    2,    2,
X        2,    2,    2,    3,    3,    3,   32,    3,   24,  220,
X        3,    3,   71,   32,    3,   24,   24,    3,   33,    3,
X        3,   34,   55,   55,  216,   33,  213,   35,   34,    3,
X        3,    4,    4,    4,   35,    4,    4,   36,    4,    4,
X       37,   37,    4,  211,   36,    4,   59,    4,    4,  208,
X
X        4,   38,   38,   59,   83,   83,   37,    4,    4,   13,
X       48,   39,   39,   40,   40,   13,   39,   38,   40,  196,
X       13,   13,   13,   13,   13,   13,   14,   88,   48,   91,
X       48,   48,   14,  100,   88,  192,   91,   14,   14,   14,
X       14,   14,   14,   17,  100,   52,   52,  124,  189,   95,
X       52,   17,  108,  111,   17,   17,   95,  122,  122,  108,
X      111,  188,  122,  128,  128,  144,  144,  152,  139,  139,
X       17,   18,   52,  139,  124,  147,  147,  152,  145,   18,
X      155,  156,   18,   18,  145,  145,  157,  185,  156,  178,
X      155,  165,  165,  167,  167,  139,  157,  173,   18,   25,
X
X       25,  195,  195,  203,   25,  155,  195,  195,  173,   25,
X      197,  197,  202,  203,  206,  204,  210,  210,  177,  202,
X      161,  206,  218,  218,   25,  204,   25,   26,   26,  217,
X      217,  142,   26,  141,  217,  217,  136,   26,  219,  219,
X      221,  221,  225,  225,  134,  221,  221,  132,  130,  127,
X      125,  121,   26,  116,   26,   60,   60,  113,  110,  104,
X      101,   92,   77,   60,   60,   60,   60,   60,   60,   61,
X       61,   73,   69,   66,   61,   64,   63,   58,   49,   47,
X       61,   42,   28,   27,   16,   15,    9,    6,    5,    0,
X        0,    0,    0,    0,    0,    0,   61,  151,  151,    0,
X
X        0,    0,    0,    0,    0,  151,  151,  151,  151,  151,
X      151,    0,    0,  151,  153,  153,    0,    0,    0,  153,
X        0,    0,    0,    0,    0,  153,    0,    0,    0,    0,
X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X        0,  153,  227,  227,  227,  227,  227,  227,  227,  227,
X      227,  227,  228,  228,  228,  228,  228,  228,  228,  228,
X      228,  228,  229,  229,  229,  229,  229,  229,  229,  229,
X      229,  229,  230,  230,  230,  230,  230,  230,  230,  230,
X      230,  230,  231,  231,  231,  231,  231,  231,  231,  231,
X      231,  231,  232,  232,  232,  232,  232,  232,  232,  232,
X
X      232,  232,  233,  233,    0,  233,  233,  233,  233,  233,
X      233,  233,  234,  234,  234,  234,  234,  234,  234,  234,
X      234,  234,  235,  235,  235,  235,  235,  235,  235,  235,
X      235,  235,  236,  236,    0,  236,  236,  236,  236,  236,
X      236,  236,  237,  237,    0,  237,  237,  237,  237,  237,
X      237,  237,  238,  238,  238,  238,  238,  238,  238,  238,
X      238,  238,  239,  239,  239,  239,  239,  239,  239,  239,
X      239,  239,  240,  240,  240,  240,  240,  240,  240,  240,
X      240,  240,  241,  241,  241,  241,  241,  241,  241,  241,
X      241,  241,  242,  242,  242,  242,  242,  242,  242,  242,
X
X      242,  242,  243,  243,  243,  243,  243,  243,  243,  243,
X      243,  243,  244,  244,  244,  244,  244,  244,  244,  244,
X      244,  244,  246,  246,  246,  246,  246,  246,  246,  246,
X      246,  246,  247,  247,  247,  247,  247,  247,  247,  247,
X      247,  247,  248,  248,  248,  248,  248,  248,  248,  248,
X      248,  248,  250,  250,    0,  250,  250,  250,  250,  250,
X        0,  250,  251,  251,    0,  251,  251,  251,  251,  251,
X      251,  251,  252,  252,    0,  252,  252,  252,  252,  252,
X      252,  252,  253,  253,  253,  253,  253,  253,  253,  253,
X      253,  253,  254,    0,    0,  254,  254,  254,  254,  254,
X
X      254,  254,  255,  255,    0,  255,  255,  255,  255,  255,
X      255,  255,  257,  257,    0,  257,  257,  257,  257,  257,
X      257,  257,  258,  258,    0,  258,  258,  258,  258,  258,
X      258,  258,  259,  259,    0,  259,  259,  259,  259,  259,
X        0,  259,  260,  260,    0,    0,    0,  260,  260,  260,
X      260,  261,  261,    0,  261,  261,  261,  261,  261,  261,
X      261,  262,  262,    0,  262,  262,    0,  262,  262,  262,
X      262,  263,  263,    0,    0,  263,  263,  263,    0,  263,
X      263,  264,  264,    0,  264,  264,  264,  264,  264,  264,
X      264,  265,  265,  265,  265,  265,  265,  265,  265,  265,
X
X      265,  266,  266,    0,  266,  266,  266,  266,  266,  266,
X      266,  267,  267,  267,  267,  267,  267,  267,  267,  267,
X      267,  268,  268,  268,  268,  268,  268,  268,  268,  268,
X      268,  269,  269,    0,  269,  269,  269,  269,  269,  269,
X      270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
X      271,  271,    0,  271,  271,  271,  271,  271,  271,  271,
X      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
X      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
X      275,  275,    0,  275,  275,  275,  275,  275,  275,  275,
X
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226
X    } ;
X
X
X/* these declarations have to come after the section 1 code or lint gets
X * confused about whether the variables are used
X */
XFILE *yyin = stdin, *yyout = stdout;
X
X/* these variables are all declared out here so that section 3 code can
X * manipulate them
X */
static int yy_start, yy_b_buf_p, yy_c_buf_p, yy_e_buf_p;
static int yy_saw_eof, yy_init = 1;
X
X/* yy_ch_buf has to be 1 character longer than YY_BUF_SIZE, since when
X * setting up yytext we can try to put a '\0' just past the end of the
X * matched text
X */
static char yy_ch_buf[YY_BUF_SIZE + 1];
static int yy_st_buf[YY_BUF_SIZE];
static char yy_hold_char;
char *yytext;
static int yyleng;
X
YY_DECL
X    {
X    int yy_n_chars, yy_lp, yy_iii, yy_buf_pos, yy_act;
X
X
X    static int bracelevel, didadef;
X    int i, cclval;
X    char nmdef[MAXLINE], myesc();
X
X
X    if ( yy_init )
X	{
X	YY_INIT;
X	yy_start = 1;
X	yy_init = 0;
X	}
X
X    goto get_next_token;
X
do_action:
X    for ( ; ; )
X	{
X	YY_DO_BEFORE_ACTION
X
X#ifdef FLEX_DEBUG
X	fprintf( stderr, "--accepting rule #%d\n", yy_act );
X#endif
X	switch ( yy_act )
X	    {
case 1:
X# line 58 "scan.l"
X++linenum; ECHO; /* indented code */
X	YY_BREAK
case 2:
X# line 59 "scan.l"
X++linenum; ECHO; /* treat as a comment */
X	YY_BREAK
case 3:
X# line 60 "scan.l"
ECHO; BEGIN(C_COMMENT);
X	YY_BREAK
case 4:
X# line 61 "scan.l"
return ( SCDECL );
X	YY_BREAK
case 5:
X# line 62 "scan.l"
return ( XSCDECL );
X	YY_BREAK
case 6:
X# line 63 "scan.l"
X++linenum; line_directive_out( stdout ); BEGIN(CODEBLOCK);
X	YY_BREAK
case 7:
X# line 64 "scan.l"
return ( WHITESPACE );
X	YY_BREAK
case 8:
X# line 66 "scan.l"
X{
X			sectnum = 2;
X			line_directive_out( stdout );
X			BEGIN(SECT2PROLOG);
X			return ( SECTEND );
X			}
X	YY_BREAK
case 9:
X# line 73 "scan.l"
X{
X			fprintf( stderr,
X			     "old-style lex command at line %d ignored:\n\t%s",
X				 linenum, yytext );
X			++linenum;
X			}
X	YY_BREAK
case 10:
X# line 80 "scan.l"
X{
X			(void) strcpy( nmstr, yytext );
X			didadef = false;
X			BEGIN(PICKUPDEF);
X			}
X	YY_BREAK
case 11:
X# line 86 "scan.l"
RETURNNAME;
X	YY_BREAK
case 12:
X# line 87 "scan.l"
X++linenum; /* allows blank lines in section 1 */
X	YY_BREAK
case 13:
X# line 88 "scan.l"
X++linenum; return ( '\n' );
X	YY_BREAK
case 14:
X# line 89 "scan.l"
synerr( "illegal character" ); BEGIN(RECOVER);
X	YY_BREAK
case 15:
X# line 92 "scan.l"
ECHO; BEGIN(0);
X	YY_BREAK
case 16:
X# line 93 "scan.l"
X++linenum; ECHO; BEGIN(0);
X	YY_BREAK
case 17:
X# line 94 "scan.l"
ECHO;
X	YY_BREAK
case 18:
X# line 95 "scan.l"
ECHO;
X	YY_BREAK
case 19:
X# line 96 "scan.l"
X++linenum; ECHO;
X	YY_BREAK
case 20:
X# line 98 "scan.l"
X++linenum; BEGIN(0);
X	YY_BREAK
case 21:
X# line 99 "scan.l"
X++linenum; ECHO;
X	YY_BREAK
case 22:
X# line 101 "scan.l"
X/* separates name and definition */
X	YY_BREAK
case 23:
X# line 103 "scan.l"
X{
X			(void) strcpy( nmdef, yytext );
X
X			for ( i = strlen( nmdef ) - 1;
X			      i >= 0 &&
X			      nmdef[i] == ' ' || nmdef[i] == '\t';
X			      --i )
X			    ;
X
X			nmdef[i + 1] = '\0';
X
X                        ndinstal( nmstr, nmdef );
X			didadef = true;
X			}
X	YY_BREAK
case 24:
X# line 118 "scan.l"
X{
X			if ( ! didadef )
X			    synerr( "incomplete name definition" );
X			BEGIN(0);
X			++linenum;
X			}
X	YY_BREAK
case 25:
X# line 125 "scan.l"
X++linenum; BEGIN(0); RETURNNAME;
X	YY_BREAK
case 26:
YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
yy_c_buf_p -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
X# line 128 "scan.l"
X{
X			++linenum;
X			ACTION_ECHO;
X			MARK_END_OF_PROLOG;
X			BEGIN(SECT2);
X			}
X	YY_BREAK
case 27:
X# line 135 "scan.l"
X++linenum; ACTION_ECHO;
X	YY_BREAK
case 28:
X# line 137 "scan.l"
X++linenum; /* allow blank lines in section 2 */
X	YY_BREAK
X	/* this horrible mess of a rule matches indented lines which
X	 * do not contain "/*".  We need to make the distinction because
X	 * otherwise this rule will be taken instead of the rule which
X	 * matches the beginning of comments like this one
X	 */
case 29:
X# line 144 "scan.l"
X{
X			synerr( "indented code found outside of action" );
X			++linenum;
X			}
X	YY_BREAK
case 30:
X# line 149 "scan.l"
BEGIN(SC); return ( '<' );
X	YY_BREAK
case 31:
X# line 150 "scan.l"
return ( '^' );
X	YY_BREAK
case 32:
X# line 151 "scan.l"
BEGIN(QUOTE); return ( '"' );
X	YY_BREAK
case 33:
YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
yy_c_buf_p = yy_b_buf_p;
YY_DO_BEFORE_ACTION; /* set up yytext again */
X# line 152 "scan.l"
BEGIN(NUM); return ( '{' );
X	YY_BREAK
case 34:
X# line 153 "scan.l"
BEGIN(BRACEERROR);
X	YY_BREAK
case 35:
YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
yy_c_buf_p = yy_b_buf_p;
YY_DO_BEFORE_ACTION; /* set up yytext again */
X# line 154 "scan.l"
return ( '$' );
X	YY_BREAK
case 36:
X# line 156 "scan.l"
X{
X			bracelevel = 1;
X			BEGIN(PERCENT_BRACE_ACTION);
X			return ( '\n' );
X			}
X	YY_BREAK
case 37:
X# line 161 "scan.l"
X++linenum; return ( '\n' );
X	YY_BREAK
case 38:
X# line 163 "scan.l"
ACTION_ECHO; BEGIN(C_COMMENT_2);
X	YY_BREAK
case 39:
X# line 165 "scan.l"
X{ /* needs to be separate from following rule due to
X			   * bug with trailing context
X			   */
X			bracelevel = 0;
X			BEGIN(ACTION);
X			return ( '\n' );
X			}
X	YY_BREAK
case 40:
YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
yy_c_buf_p -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
X# line 173 "scan.l"
X{
X			bracelevel = 0;
X			BEGIN(ACTION);
X			return ( '\n' );
X			}
X	YY_BREAK
case 41:
X# line 179 "scan.l"
X++linenum; return ( '\n' );
X	YY_BREAK
case 42:
X# line 181 "scan.l"
X{
X			/* guarantee that the SECT3 rule will have something
X			 * to match
X			 */
X			yyless(1);
X			sectnum = 3;
X			BEGIN(SECT3);
X			return ( EOF ); /* to stop the parser */
X			}
X	YY_BREAK
case 43:
X# line 191 "scan.l"
X{
X			(void) strcpy( nmstr, yytext );
X
X			/* check to see if we've already encountered this ccl */
X			if ( (cclval = ccllookup( nmstr )) )
X			    {
X			    yylval = cclval;
X			    ++cclreuse;
X			    return ( PREVCCL );
X			    }
X			else
X			    {
X			    /* we fudge a bit.  We know that this ccl will
X			     * soon be numbered as lastccl + 1 by cclinit
X			     */
X			    cclinstal( nmstr, lastccl + 1 );
X
X			    /* push back everything but the leading bracket
X			     * so the ccl can be rescanned
X			     */
X			    PUT_BACK_STRING(nmstr, 1);
X
X			    BEGIN(FIRSTCCL);
X			    return ( '[' );
X			    }
X			}
X	YY_BREAK
case 44:
X# line 218 "scan.l"
X{
X			register char *nmdefptr;
X			char *ndlookup();
X
X			(void) strcpy( nmstr, yytext );
X			nmstr[yyleng - 1] = '\0';  /* chop trailing brace */
X
X			/* lookup from "nmstr + 1" to chop leading brace */
X			if ( ! (nmdefptr = ndlookup( nmstr + 1 )) )
X			    synerr( "undefined {name}" );
X
X			else
X			    { /* push back name surrounded by ()'s */
X			    unput(')');
X			    PUT_BACK_STRING(nmdefptr, 0);
X			    unput('(');
X			    }
X			}
X	YY_BREAK
case 45:
X# line 237 "scan.l"
return ( yytext[0] );
X	YY_BREAK
case 46:
X# line 238 "scan.l"
RETURNCHAR;
X	YY_BREAK
case 47:
X# line 239 "scan.l"
X++linenum; return ( '\n' );
X	YY_BREAK
case 48:
X# line 242 "scan.l"
return ( ',' );
X	YY_BREAK
case 49:
X# line 243 "scan.l"
BEGIN(SECT2); return ( '>' );
X	YY_BREAK
case 50:
YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
yy_c_buf_p = yy_b_buf_p;
YY_DO_BEFORE_ACTION; /* set up yytext again */
X# line 244 "scan.l"
BEGIN(CARETISBOL); return ( '>' );
X	YY_BREAK
case 51:
X# line 245 "scan.l"
RETURNNAME;
X	YY_BREAK
case 52:
X# line 246 "scan.l"
synerr( "bad start condition name" );
X	YY_BREAK
case 53:
X# line 248 "scan.l"
BEGIN(SECT2); return ( '^' );
X	YY_BREAK
case 54:
X# line 251 "scan.l"
RETURNCHAR;
X	YY_BREAK
case 55:
X# line 252 "scan.l"
BEGIN(SECT2); return ( '"' );
X	YY_BREAK
case 56:
X# line 254 "scan.l"
X{
X			synerr( "missing quote" );
X			BEGIN(SECT2);
X			++linenum;
X			return ( '"' );
X			}
X	YY_BREAK
case 57:
YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
yy_c_buf_p = yy_b_buf_p;
YY_DO_BEFORE_ACTION; /* set up yytext again */
X# line 262 "scan.l"
BEGIN(CCL); return ( '^' );
X	YY_BREAK
case 58:
YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
yy_c_buf_p = yy_b_buf_p;
YY_DO_BEFORE_ACTION; /* set up yytext again */
X# line 263 "scan.l"
return ( '^' );
X	YY_BREAK
case 59:
X# line 264 "scan.l"
BEGIN(CCL); yylval = '-'; return ( CHAR );
X	YY_BREAK
case 60:
X# line 265 "scan.l"
BEGIN(CCL); RETURNCHAR;
X	YY_BREAK
case 61:
YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
yy_c_buf_p = yy_b_buf_p;
YY_DO_BEFORE_ACTION; /* set up yytext again */
X# line 267 "scan.l"
return ( '-' );
X	YY_BREAK
case 62:
X# line 268 "scan.l"
RETURNCHAR;
X	YY_BREAK
case 63:
X# line 269 "scan.l"
BEGIN(SECT2); return ( ']' );
X	YY_BREAK
case 64:
X# line 272 "scan.l"
X{
X			yylval = myctoi( yytext );
X			return ( NUMBER );
X			}
X	YY_BREAK
case 65:
X# line 277 "scan.l"
return ( ',' );
X	YY_BREAK
case 66:
X# line 278 "scan.l"
BEGIN(SECT2); return ( '}' );
X	YY_BREAK
case 67:
X# line 280 "scan.l"
X{
X			synerr( "bad character inside {}'s" );
X			BEGIN(SECT2);
X			return ( '}' );
X			}
X	YY_BREAK
case 68:
X# line 286 "scan.l"
X{
X			synerr( "missing }" );
X			BEGIN(SECT2);
X			++linenum;
X			return ( '}' );
X			}
X	YY_BREAK
case 69:
X# line 294 "scan.l"
synerr( "bad name in {}'s" ); BEGIN(SECT2);
X	YY_BREAK
case 70:
X# line 295 "scan.l"
synerr( "missing }" ); ++linenum; BEGIN(SECT2);
X	YY_BREAK
case 71:
X# line 298 "scan.l"
bracelevel = 0;
X	YY_BREAK
case 72:
X# line 299 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 73:
X# line 300 "scan.l"
X{
X			++linenum;
X			ACTION_ECHO;
X			if ( bracelevel == 0 )
X			    {
X			    fputs( "\tYY_BREAK\n", temp_action_file );
X			    BEGIN(SECT2);
X			    }
X			}
X	YY_BREAK
case 74:
X# line 310 "scan.l"
ACTION_ECHO; ++bracelevel;
X	YY_BREAK
case 75:
X# line 311 "scan.l"
ACTION_ECHO; --bracelevel;
X	YY_BREAK
case 76:
X# line 312 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 77:
X# line 313 "scan.l"
ACTION_ECHO; BEGIN(ACTION_COMMENT);
X	YY_BREAK
case 78:
X# line 314 "scan.l"
ACTION_ECHO; /* character constant */
X	YY_BREAK
case 79:
X# line 315 "scan.l"
ACTION_ECHO; BEGIN(ACTION_STRING);
X	YY_BREAK
case 80:
X# line 316 "scan.l"
X{
X			++linenum;
X			ACTION_ECHO;
X			if ( bracelevel == 0 )
X			    {
X			    fputs( "\tYY_BREAK\n", temp_action_file );
X			    BEGIN(SECT2);
X			    }
X			}
X	YY_BREAK
case 81:
X# line 325 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 82:
X# line 327 "scan.l"
ACTION_ECHO; BEGIN(ACTION);
X	YY_BREAK
case 83:
X# line 328 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 84:
X# line 329 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 85:
X# line 330 "scan.l"
X++linenum; ACTION_ECHO;
X	YY_BREAK
case 86:
X# line 331 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 87:
X# line 333 "scan.l"
ACTION_ECHO; BEGIN(SECT2);
X	YY_BREAK
case 88:
X# line 334 "scan.l"
X++linenum; ACTION_ECHO; BEGIN(SECT2);
X	YY_BREAK
case 89:
X# line 335 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 90:
X# line 336 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 91:
X# line 337 "scan.l"
X++linenum; ACTION_ECHO;
X	YY_BREAK
case 92:
X# line 339 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 93:
X# line 340 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 94:
X# line 341 "scan.l"
X++linenum; ACTION_ECHO;
X	YY_BREAK
case 95:
X# line 342 "scan.l"
ACTION_ECHO; BEGIN(ACTION);
X	YY_BREAK
case 96:
X# line 343 "scan.l"
ACTION_ECHO;
X	YY_BREAK
case 97:
X# line 346 "scan.l"
X{
X			yylval = myesc( yytext );
X			return ( CHAR );
X			}
X	YY_BREAK
case 98:
X# line 351 "scan.l"
X{
X			yylval = myesc( yytext );
X			BEGIN(CCL);
X			return ( CHAR );
X			}
X	YY_BREAK
case 99:
X# line 358 "scan.l"
X{
X			register int numchars;
X
X			/* black magic - we know the names of a flex scanner's
X			 * internal variables.  We cap the input buffer with
X			 * an end-of-string and dump it to the output.
X			 */
X			YY_DO_BEFORE_SCAN; /* recover from setting up yytext */
X
X#ifdef FLEX_FAST_SKEL
X			fputs( yy_c_buf_p + 1, stdout );
X#else
X			yy_ch_buf[yy_e_buf_p + 1] = '\0';
X
X			/* ignore the first character; it's the second '%'
X			 * put back by the yyless(1) above
X			 */
X			fputs( yy_ch_buf + yy_c_buf_p + 1, stdout );
X#endif
X
X			/* if we don't do this, the data written by write()
X			 * can get overwritten when stdout is finally flushed
X			 */
X			(void) fflush( stdout );
X
X			while ( (numchars = read( fileno(yyin), yy_ch_buf,
X						  YY_BUF_MAX )) > 0 )
X			    (void) write( fileno(stdout), yy_ch_buf, numchars );
X	
X			if ( numchars < 0 )
X			    flexerror( "fatal read error in section 3" );
X
X			return ( EOF );
X			}
X	YY_BREAK
X
case YY_NEW_FILE:
break; /* begin reading from new file */
X
case YY_DO_DEFAULT:
YY_DEFAULT_ACTION;
break;
X
case YY_END_TOK:
return ( YY_END_TOK );
X
default:
YY_FATAL_ERROR( "fatal flex scanner internal error" );
X	    }
X
get_next_token:
X	{
X	register int yy_curst;
X	register char yy_sym;
X
X	YY_DO_BEFORE_SCAN
X
X	/* set up to begin running DFA */
X
X	yy_curst = yy_start;
X
X	if ( yy_ch_buf[yy_c_buf_p] == '\n' )
X	    ++yy_curst;
X
X	/* yy_b_buf_p points to the position in yy_ch_buf
X	 * of the start of the current run.
X	 */
X
X	yy_b_buf_p = yy_c_buf_p + 1;
X
X	do /* until the machine jams */
X	    {
X	    if ( yy_c_buf_p == yy_e_buf_p )
X		{ /* need more input */
X		if ( yy_e_buf_p >= YY_BUF_LIM )
X		    { /* not enough room to do another read */
X		    /* see if we can make some room for more chars */
X
X		    yy_n_chars = yy_e_buf_p - yy_b_buf_p;
X
X		    if ( yy_n_chars >= 0 )
X			/* shift down buffer to make room */
X			for ( yy_iii = 0; yy_iii <= yy_n_chars; ++yy_iii )
X			    {
X			    yy_buf_pos = yy_b_buf_p + yy_iii;
X			    yy_ch_buf[yy_iii] = yy_ch_buf[yy_buf_pos];
X			    yy_st_buf[yy_iii] = yy_st_buf[yy_buf_pos];
X			    }
X
X		    yy_b_buf_p = 0;
X		    yy_e_buf_p = yy_n_chars;
X
X		    if ( yy_e_buf_p >= YY_BUF_LIM )
X			YY_FATAL_ERROR( "flex input buffer overflowed" );
X
X		    yy_c_buf_p = yy_e_buf_p;
X		    }
X
X		else if ( yy_saw_eof )
X		    {
saweof:		    if ( yy_b_buf_p > yy_e_buf_p )
X			{
X			if ( yywrap() )
X			    {
X			    yy_act = YY_END_TOK;
X			    goto do_action;
X			    }
X			
X			else
X			    {
X			    YY_INIT;
X			    yy_act = YY_NEW_FILE;
X			    goto do_action;
X			    }
X			}
X
X		    else /* do a jam to eat up more input */
X			{
X#ifndef FLEX_INTERACTIVE_SCANNER
X			/* we're going to decrement yy_c_buf_p upon doing
X			 * the jam.  In this case, that's wrong, since
X			 * it points to the last non-jam character.  So
X			 * we increment it now to counter the decrement.
X			 */
X			++yy_c_buf_p;
X#endif
X			break;
X			}
X		    }
X
X		YY_INPUT( (yy_ch_buf + yy_c_buf_p + 1), yy_n_chars,
X			  YY_MAX_LINE );
X
X		if ( yy_n_chars == YY_NULL )
X		    {
X		    if ( yy_saw_eof )
X	YY_FATAL_ERROR( "flex scanner saw EOF twice - shouldn't happen" );
X		    yy_saw_eof = 1;
X		    goto saweof;
X		    }
X
X		yy_e_buf_p += yy_n_chars;
X		}
X
X	    ++yy_c_buf_p;
X
X#ifdef FLEX_USE_ECS
X	    yy_sym = e[yy_ch_buf[yy_c_buf_p]];
X#else
X	    yy_sym = yy_ch_buf[yy_c_buf_p];
X#endif
X
X#ifdef FLEX_FULL_TABLE
X	    yy_curst = n[yy_curst][yy_sym];
X
X#else /* get next state from compressed table */
X
X	    while ( c[b[yy_curst] + yy_sym] != yy_curst )
X		{
X		yy_curst = d[yy_curst];
X
X#ifdef FLEX_USE_MECS
X		/* we've arrange it so that templates are never chained
X		 * to one another.  This means we can afford make a
X		 * very simple test to see if we need to convert to
X		 * yy_sym's meta-equivalence class without worrying
X		 * about erroneously looking up the meta-equivalence
X		 * class twice
X		 */
X
X		if ( yy_curst >= YY_TEMPLATE )
X		    yy_sym = m[yy_sym];
X#endif
X		}
X
X	    yy_curst = n[b[yy_curst] + yy_sym];
X
X#endif
X
X	    yy_st_buf[yy_c_buf_p] = yy_curst;
X
X	    }
X#ifdef FLEX_INTERACTIVE_SCANNER
X	while ( b[yy_curst] != YY_JAM_BASE );
X#else
X	while ( yy_curst != YY_JAM );
X	--yy_c_buf_p; /* put back character we jammed on */
X
X#endif
X
X	if ( yy_c_buf_p >= yy_b_buf_p )
X	    { /* we matched some text */
X	    yy_curst = yy_st_buf[yy_c_buf_p];
X	    yy_lp = l[yy_curst];
X
X#ifdef FLEX_REJECT_ENABLED
find_rule: /* we branch to this label when doing a REJECT */
X#endif
X
X	    for ( ; ; ) /* until we find what rule we matched */
X		{
X#ifdef FLEX_REJECT_ENABLED
X		if ( yy_lp && yy_lp < l[yy_curst + 1] )
X		    {
X		    yy_act = a[yy_lp];
X		    goto do_action; /* "continue 2" */
X		    }
X#else
X		if ( yy_lp )
X		    {
X		    yy_act = yy_lp;
X		    goto do_action; /* "continue 2" */
X		    }
X#endif
X
X		if ( --yy_c_buf_p < yy_b_buf_p )
X		    break;
X
X		yy_curst = yy_st_buf[yy_c_buf_p];
X		yy_lp = l[yy_curst];
X		}
X	    }
X
X	/* if we got this far, then we didn't find any accepting
X	 * states
X	 */
X
X	/* so that the default applies to the first char read */
X	++yy_c_buf_p;
X
X	yy_act = YY_DO_DEFAULT;
X	}
X	}
X
X    /*NOTREACHED*/
X    }
X
X
static int unput( c )
char c;
X
X    {
X    YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
X
X    if ( yy_c_buf_p == 0 )
X	{
X	register int i;
X	register int yy_buf_pos = YY_BUF_MAX;
X
X	for ( i = yy_e_buf_p; i >= yy_c_buf_p; --i )
X	    {
X	    yy_ch_buf[yy_buf_pos] = yy_ch_buf[i];
X	    yy_st_buf[yy_buf_pos] = yy_st_buf[i];
X	    --yy_buf_pos;
X	    }
X
X	yy_c_buf_p = YY_BUF_MAX - yy_e_buf_p;
X	yy_e_buf_p = YY_BUF_MAX;
X	}
X
X    if ( yy_c_buf_p <= 0 )
X	YY_FATAL_ERROR( "flex scanner push-back overflow" );
X
X    if ( yy_c_buf_p >= yy_b_buf_p && yy_ch_buf[yy_c_buf_p] == '\n' )
X	yy_ch_buf[yy_c_buf_p - 1] = '\n';
X
X    yy_ch_buf[yy_c_buf_p--] = c;
X
X    YY_DO_BEFORE_ACTION; /* set up yytext again */
X    }
X
X
static int input()
X
X    {
X    int c;
X
X    YY_DO_BEFORE_SCAN
X
X    if ( yy_c_buf_p == yy_e_buf_p )
X	{ /* need more input */
X	int yy_n_chars;
X
X	/* we can throw away the entire current buffer */
X	if ( yy_saw_eof )
X	    {
X	    if ( yywrap() )
X		return ( EOF );
X
X	    YY_INIT;
X	    }
X
X	yy_b_buf_p = 0;
X	YY_INPUT( yy_ch_buf, yy_n_chars, YY_MAX_LINE );
X
X	if ( yy_n_chars == YY_NULL )
X	    {
X	    yy_saw_eof = 1;
X
X	    if ( yywrap() )
X		return ( EOF );
X
X	    YY_INIT;
X
X	    return ( input() );
X	    }
X
X	yy_c_buf_p = -1;
X	yy_e_buf_p = yy_n_chars - 1;
X	}
X
X    c = yy_ch_buf[++yy_c_buf_p];
X
X    YY_DO_BEFORE_ACTION;
X
X    return ( c );
X    }
X# line 392 "scan.l"
X
END_OF_FILE
if test 36366 -ne `wc -c <'scan.c.dist'`; then
    echo shar: \"'scan.c.dist'\" unpacked with wrong size!
fi
# end of 'scan.c.dist'
fi
echo shar: End of archive 4 \(of 5\).
cp /dev/null ark4isdone
MISSING=""
for I in 1 2 3 4 5 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 5 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.