/* A lexical scanner generated by flex */

/* scanner skeleton version:
 * $Header: /usr/fsys/odin/a/vern/flex/RCS/flex.skel,v 2.16 90/08/03 14:09:36 vern Exp $
 */

#define FLEX_SCANNER

#include <stdio.h>


/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
#ifdef c_plusplus
#ifndef __cplusplus
#define __cplusplus
#endif
#endif


#ifdef __cplusplus

#include <stdlib.h>
#include <osfcn.h>

/* use prototypes in function declarations */
#define YY_USE_PROTOS

/* the "const" storage-class-modifier is valid */
#define YY_USE_CONST

#else	/* ! __cplusplus */

#ifdef __STDC__

#ifdef __GNUC__
#include <stddef.h>
void *malloc( size_t );
void free( void* );
#else
#include <stdlib.h>
#endif	/* __GNUC__ */

#define YY_USE_PROTOS
#define YY_USE_CONST

#endif	/* __STDC__ */
#endif	/* ! __cplusplus */


#ifdef __TURBOC__
#define YY_USE_CONST
#endif


#ifndef YY_USE_CONST
#define const
#endif


#ifdef YY_USE_PROTOS
#define YY_PROTO(proto) proto
#else
#define YY_PROTO(proto) ()
/* we can't get here if it's an ANSI C compiler, or a C++ compiler,
 * so it's got to be a K&R compiler, and therefore there's no standard
 * place from which to include these definitions
 */
char *malloc();
int free();
int read();
#endif


/* amount of stuff to slurp up with each read */
#ifndef YY_READ_BUF_SIZE
#define YY_READ_BUF_SIZE 8192
#endif

/* returned upon end-of-file */
#define YY_END_TOK 0

/* copy whatever the last rule matched to the standard output */

/* cast to (char *) is because for 8-bit chars, yytext is (unsigned char *) */
/* this used to be an fputs(), but since the string might contain NUL's,
 * we now use fwrite()
 */
#define ECHO (void) fwrite( (char *) yytext, yyleng, 1, 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), (char *) buf, max_size )) < 0 ) \
	    YY_FATAL_ERROR( "read() in flex scanner failed" );
#define YY_NULL 0

/* no semi-colon after return; correct usage is to write "yyterminate();" -
 * we don't want an extra ';' after the "return" because that will cause
 * some compilers to complain about unreachable statements.
 */
#define yyterminate() return ( YY_NULL )

/* report a fatal error */

/* The funky do-while is used to turn this macro definition into
 * a single C statement (which needs a semi-colon terminator).
 * This avoids problems with code like:
 *
 * 	if ( something_happens )
 *		YY_FATAL_ERROR( "oops, the something happened" );
 *	else
 *		everything_okay();
 *
 * Prior to using the do-while the compiler would get upset at the
 * "else" because it interpreted the "if" statement as being all
 * done when it reached the ';' after the YY_FATAL_ERROR() call.
 */

#define YY_FATAL_ERROR(msg) \
	do \
		{ \
		(void) fputs( msg, stderr ); \
		(void) putc( '\n', stderr ); \
		exit( 1 ); \
		} \
	while ( 0 )

/* 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 forced on us by the ()-less
 * definition of BEGIN
 */
#define BEGIN yy_start = 1 + 2 *

/* action number for EOF rule of a given start state */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)

/* special action meaning "start processing a new file" */
#define YY_NEW_FILE \
	do \
		{ \
		yy_init_buffer( yy_current_buffer, yyin ); \
		yy_load_buffer_state(); \
		} \
	while ( 0 )

/* default declaration of generated scanner - a define so the user can
 * easily add parameters
 */
#define YY_DECL int yylex YY_PROTO(( void )) 

/* code executed at the end of each rule */
#define YY_BREAK break;

#define YY_END_OF_BUFFER_CHAR 0

#ifndef YY_BUF_SIZE
#define YY_BUF_SIZE (YY_READ_BUF_SIZE * 2) /* size of default input buffer */
#endif

typedef struct yy_buffer_state *YY_BUFFER_STATE;

#define YY_CHAR char
# line 1 "m2latex.l"
#define INITIAL 0
/*
 *  This is a flex input file but should be edited in -*-C-*- mode
 *
 *  Modula2LaTeX 1.0:
 *  Produce prettyprinted LaTeX files from Modula-2 or Pascal sources.
 *
 *  Copyright (C) 1991	Joerg Heitkoetter
 *  Systems Analysis Group, University of Dortmund
 *  (heitkoet@gorbi.informatik.uni-dortmund.de).
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 1, or (at your option)
 *  any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */
#define STRING 1
#define COMMENT 2
#define MODULA2 3
# line 31 "m2latex.l"
#define KEY		printf ("{\\%s %s}", keyword_font, yytext)
#define STDFUN		unput("("); printf ("{\\%s %s} (", stdfun_font, yytext)
#define SYM(x)		printf ("$\\%s$", x)
#define OUT(x)		printf ("%s", x)
#define CTAB		printf ("\\hspace*{%d\\indentation}", tabtocomment)
#define FONT(x)		printf ("{\\%s ",x);
#define SUB(x)		substitute(x)
#define IND		indent(yytext)
#define INIT		BEGIN (modula_mode ? MODULA2 : INITIAL);
#define REPARSE		yyless (0)

#include <stdio.h>

#define ON	(1)
#define OFF	(0)

int modula_mode		= ON;

int complete_file	= OFF;
int header		= OFF;
int tabtotab		= 8;
int piped		= OFF;

int aligntoright	= ON;		/* align comments to the right  -joke */
int tabtocomment	= 4;		/* distance between statement and corresponding comment  -joke */

char *indentation	= "0.5em";

char* font_size		= "10";
char* comment_font	= "it";
char* keyword_font	= "bf";
char* header_font	= "sl";
char* stdfun_font	= "bf";
char* string_font	= "tt";

#ifdef __STDC__
void substitute(const char*);
void indent(const char*);
void newpage(int);
void usage(const char*);
#else
void substitute();
void indent();
void newpage();
void usage();
#endif
# line 79 "m2latex.l"

/* done after the current pattern has been matched and before the
 * corresponding action - sets up yytext
 */
#define YY_DO_BEFORE_ACTION \
	yytext = yy_bp; \
	yyleng = yy_cp - yy_bp; \
	yy_hold_char = *yy_cp; \
	*yy_cp = '\0'; \
	yy_c_buf_p = yy_cp;

#define EOB_ACT_CONTINUE_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) \
	do \
		{ \
		/* undo effects of setting up yytext */ \
		*yy_cp = yy_hold_char; \
		yy_c_buf_p = yy_cp = yy_bp + n; \
		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
		} \
	while ( 0 )

#define unput(c) yyunput( c, yytext )


struct yy_buffer_state
    {
    FILE *yy_input_file;

    YY_CHAR *yy_ch_buf;		/* input buffer */
    YY_CHAR *yy_buf_pos;	/* current position in input buffer */

    /* size of input buffer in bytes, not including room for EOB characters*/
    int yy_buf_size;	

    /* number of characters read into yy_ch_buf, not including EOB characters */
    int yy_n_chars;

    int yy_eof_status;		/* whether we've seen an EOF on this buffer */
#define EOF_NOT_SEEN 0
    /* "pending" happens when the EOF has been seen but there's still
     * some text process
     */
#define EOF_PENDING 1
#define EOF_DONE 2
    };

static YY_BUFFER_STATE yy_current_buffer;

/* we provide macros for accessing buffer states in case in the
 * future we want to put the buffer states in a more general
 * "scanner state"
 */
#define YY_CURRENT_BUFFER yy_current_buffer


/* yy_hold_char holds the character lost when yytext is formed */
static YY_CHAR yy_hold_char;

static int yy_n_chars;		/* number of characters read into yy_ch_buf */



#ifndef YY_USER_ACTION
#define YY_USER_ACTION
#endif

#ifndef YY_USER_INIT
#define YY_USER_INIT
#endif

extern YY_CHAR *yytext;
extern int yyleng;
extern FILE *yyin, *yyout;

YY_CHAR *yytext;
int yyleng;

FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;

#define YY_END_OF_BUFFER 136
typedef int yy_state_type;
static const short int yy_accept[591] =
    {   0,
        0,    0,    0,    0,    0,    0,    0,    0,  136,  135,
      132,  134,  133,  112,  114,  100,  101,   81,   97,   93,
       96,   94,   98,  123,  123,   91,   95,   86,   92,   87,
      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
      102,  135,  103,   82,   88,   83,   89,  131,  100,  118,
      116,  113,  115,  117,  111,  110,  109,  111,   84,  104,
       90,  104,  104,  104,  104,  104,  104,  104,  104,  104,
      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
      104,  104,   85,  132,  133,    0,    0,  107,  119,  120,

      123,  123,    0,  123,    0,   99,   78,   80,   79,  105,
      105,  105,  105,  105,  105,  105,  105,  105,   29,  105,
      105,  105,  105,  105,  105,  105,   37,   39,  112,  114,
      105,  105,  105,  105,  105,   41,   42,  105,  105,  105,
      105,  105,  105,  105,  105,   50,  105,  105,  105,  105,
      105,  105,  130,  131,    0,  106,  117,  110,  108,  104,
      104,  104,  104,  104,  104,  104,  104,   66,  104,  104,
      104,  104,  104,   29,  104,  104,  104,  104,  104,  104,
      104,  104,  104,   37,  104,   39,  104,  104,  104,  104,
      104,  104,  104,  104,   41,   42,  104,  104,  104,  104,

      104,  104,  104,  104,  104,  104,  104,   50,  104,  104,
      104,  104,  104,  104,  124,    0,  124,    0,    0,    0,
      119,  119,    0,  120,  123,    0,  121,  129,   24,  105,
      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
       32,  105,   34,  105,  105,  105,  105,  105,  105,   60,
       40,  105,  105,  105,  105,  105,  105,  105,  105,  105,
       47,  105,  105,  105,  105,  105,  105,   53,  105,  105,
      106,  104,   24,  104,  104,  104,  104,  104,  104,  104,
      104,  104,  104,  104,  104,  104,  104,  104,  104,   32,
      104,  104,  104,  104,   34,  104,  104,  104,  104,  104,

      104,  104,  104,  104,  104,  104,  104,   60,   40,  104,
      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
      104,   47,  104,  104,  104,  104,  104,  104,  104,  104,
       53,  104,  104,  125,  126,    0,    0,    0,  121,  119,
        0,  122,  129,  105,  105,  105,   27,   57,    0,    1,
      105,  105,    0,    2,  105,   31,   33,   36,  105,   38,
      105,    0,    4,    0,    5,    0,    8,    0,    7,  105,
      105,  105,   58,  105,  105,  105,  105,  105,   49,  105,
       51,  105,  105,   55,    0,   12,  104,  104,  104,  104,
        0,   13,  104,   27,   57,  104,    0,   22,  104,  104,

      104,   31,  104,  104,   33,  104,  104,  104,   36,  104,
       38,  104,  104,  104,    0,   23,  104,  104,   73,    0,
       19,    0,   18,  104,  104,  104,  104,   65,  104,   58,
      104,  104,  104,  104,  104,  104,  104,   49,  104,   51,
      104,    0,   21,  104,   55,    0,  127,    0,   25,   26,
      105,   28,  105,  105,  105,  105,  105,    0,    9,  105,
      105,  105,  105,  105,    0,    6,  105,   52,   54,   25,
       26,  104,  104,  104,   28,  104,  104,  104,   68,    0,
       14,  104,  104,  104,  104,    0,   16,  104,  104,    0,
       17,  104,  104,  104,  104,  104,  104,    0,   20,  104,

      104,  104,  104,  104,  104,  104,   52,   54,  105,  105,
       30,  105,  105,   43,  105,   45,   46,    0,   10,   48,
        0,   11,   64,  104,  104,  104,  104,   30,   69,    0,
       15,  104,  104,  104,   72,  104,   74,   43,  104,  104,
      104,   45,   46,   76,  104,  104,   48,   59,  105,  105,
       56,  105,   59,  104,  104,  104,   70,  104,  104,   56,
       75,  104,  104,  104,  104,    0,    3,   35,  105,   62,
      104,   35,  104,  104,  104,  104,   61,   44,  104,  104,
       44,   77,   63,   67,  104,  104,  104,  104,   71,    0
    } ;

static const YY_CHAR yy_ec[128] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    4,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    5,    6,    7,    8,    9,    6,   10,   11,   12,
       13,   14,   15,   16,   17,   18,   19,   20,   21,   21,
       21,   21,   21,   21,   21,   22,   22,   23,   24,   25,
       26,   27,   28,    6,   29,   30,   31,   32,   33,   34,
       35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
       45,   46,   47,   48,   49,   50,   51,   52,   53,   38,
       54,   55,   56,   57,   38,    6,   58,   58,   59,   59,

       60,   61,   38,   38,   38,   38,   38,   62,   38,   63,
       38,   38,   38,   63,   38,   63,   64,   63,   38,   65,
       38,   38,   66,   67,   68,   69,    1
    } ;

static const YY_CHAR yy_meta[70] =
    {   0,
        1,    1,    1,    1,    2,    2,    2,    2,    3,    2,
        4,    2,    2,    2,    2,    2,    2,    2,    2,    5,
        5,    5,    2,    2,    2,    2,    2,    2,    5,    5,
        5,    5,    5,    5,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
        6,    6,    6,    2,    2,    2,    2,    5,    5,    5,
        5,    6,    6,    6,    6,    2,    2,    2,    2
    } ;

static const short int yy_base[600] =
    {   0,
        0,   68,   68,   79,   86,   90,  104,  172, 1189, 1190,
       72, 1190, 1185, 1190, 1132, 1172, 1190, 1190, 1190, 1190,
     1190,   76, 1190,  167,  161, 1159, 1190,   75, 1190, 1158,
       30,  143,  161,  155,  151,  153,    0, 1154,  171,   76,
     1139,  175,  188,  149,  176,  191,  190, 1139, 1151,  178,
     1190, 1176, 1190, 1190, 1190, 1190, 1190,  233, 1164, 1190,
     1190, 1190, 1190,  239, 1190,  244, 1190, 1164, 1190,    0,
     1190,  221,  219,  228,  233,  208,  238, 1167,  245,  249,
      266,  256,  259,  271,  277,  246,  279,  280,  288,  252,
      250,  289, 1190,  299, 1190, 1164,  325, 1190,  317,  334,

      342,  379,  327, 1190,    0, 1190, 1190, 1190, 1190,    0,
     1142, 1127, 1137, 1128, 1123,  281, 1127,  261, 1117, 1120,
     1134, 1128, 1118, 1120, 1120, 1121,    0, 1112, 1190, 1104,
     1126, 1106, 1116, 1107, 1122,    0, 1121, 1121,  297,  340,
     1102, 1102, 1103, 1117, 1114,    0, 1097, 1101, 1096, 1097,
     1105, 1093, 1190,  403, 1126, 1190,  313,  356, 1190,    0,
     1130,  260,  334,  324,  171,  350,  364, 1129,  367,  343,
      376,  400,  383,  202,  356,  378,  407,  384,  408,  412,
      411,  416,  413, 1128,  291,  414,  415,  417,  423,  420,
      426,  427,  428,  431, 1127,  438,  433,  437,  440,  450,

      451,  441,  448,  457,  452,  462,  459, 1126,  463,  466,
      469,  475,  472,  476, 1190, 1123, 1122,  483,    0,  505,
     1190,  508,  516, 1190, 1190,  466,  485,  483,    0, 1103,
     1094, 1090, 1096, 1082,  506, 1080, 1082,  538, 1083, 1091,
        0, 1075,    0, 1081, 1090, 1072, 1086,  544,  549,    0,
        0,  550,  555, 1079, 1085, 1085, 1075, 1071, 1080, 1070,
        0, 1074, 1079, 1067, 1066, 1074, 1069,    0, 1065, 1068,
     1190,  569, 1094,  505,  482,  488,  504,  570,  507,  544,
      549,  571,  550,  582,  555,  554,  584,  557,  576, 1093,
      579,  556,  581,  591,  592,  593,  596,  594,  597,  598,

      606,  603,  601,  635,  646,  647,  648, 1092, 1091,  659,
      660,  634,  612,  607,  654,  626,  658,  661,  666,  665,
      667, 1090,  669,  668,  670,  671,  674,  673,  675,  685,
     1089,  677,  672, 1190, 1190,  611, 1086,  608,  671, 1190,
      698,  701, 1190, 1043, 1053, 1061,    0,    0,  698, 1190,
     1045, 1049,  722, 1190, 1043,    0,    0,    0, 1042,    0,
     1054,  723, 1190,  724, 1190,  728, 1190,  736, 1190, 1055,
      737, 1054,    0, 1040, 1056, 1052, 1041,  741,    0, 1051,
        0, 1041, 1047,    0,  742, 1190,  679,  722,  728,  736,
      750, 1190,  741, 1070, 1069,  742,  754, 1190,  749,  751,

      748, 1068,   69,  763, 1067,  754,  758,  761, 1066,  762,
     1065,  771,  768,  765,  777, 1190,  783,  772, 1064,  797,
     1190,  803, 1190,  777,  788,  775,  817,  794,  795,  826,
      778,  784,  803,  805,  807,  809,  831, 1063,  680, 1062,
      816,  840, 1190,  811, 1061, 1058, 1190, 1057,    0,    0,
     1038,    0, 1019, 1022, 1027, 1030, 1030,  845, 1190, 1029,
     1028, 1011,  856, 1023,  857, 1190,  858,    0,    0, 1044,
     1040,  825,  837,  830, 1018,  839,  832,  821, 1017,  869,
     1190,  844,  873,  845,  856,  882, 1190,  858,  868,  884,
     1190,  874,  879,  881,  882,  886,  888,  896, 1190,  891,

      893,  894,  912,  895,  896,  925, 1015, 1014,  979,  987,
        0,  976,  972,    0,  964,    0,    0,  923, 1190,    0,
      937, 1190, 1001,  901,  900,  897,  911, 1000,  998,  945,
     1190,  910,  924,  929,  993,  902,  992,  991,  931,  937,
      942,  990,  989,  983,  944,  945,  698,    0,  953,  660,
        0,  649,  617,  950,  947,  959,  614,  951,  954,  608,
      605,  957,  961,  960,  963,  973, 1190,    0,  469,  492,
      965,  480,  967,  971,  973,  980,  372,    0,  972,  988,
      312,  310,  305,  166,  974,  979,  982,  986,   90, 1190,
     1028, 1034, 1039, 1041, 1045, 1049,   89,   80, 1052

    } ;

static const short int yy_def[600] =
    {   0,
      590,    1,  591,  591,  592,  592,  590,    7,  590,  590,
      590,  590,  590,  590,  593,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  595,
      590,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  590,  590,  590,  590,  590,  590,  590,  590,

      590,  590,  590,  590,  597,  590,  590,  590,  590,  594,
      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
      594,  594,  594,  594,  594,  594,  594,  594,  590,  593,
      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
      594,  594,  590,  590,  590,  590,  590,  590,  590,  595,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,

      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  590,  590,  590,  590,  598,  590,
      590,  590,  590,  590,  590,  590,  590,  597,  594,  594,
      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
      590,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,

      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  590,  590,  590,  599,  590,  590,  590,
      590,  590,  590,  594,  594,  594,  594,  594,  590,  590,
      594,  594,  590,  590,  594,  594,  594,  594,  594,  594,
      594,  590,  590,  590,  590,  590,  590,  590,  590,  594,
      594,  594,  594,  594,  594,  594,  594,  594,  594,  594,
      594,  594,  594,  594,  590,  590,  596,  596,  596,  596,
      590,  590,  596,  596,  596,  596,  590,  590,  596,  596,

      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  590,  590,  596,  596,  596,  590,
      590,  590,  590,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  590,  590,  596,  596,  590,  590,  590,  594,  594,
      594,  594,  594,  594,  594,  594,  594,  590,  590,  594,
      594,  594,  594,  594,  590,  590,  594,  594,  594,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,  590,
      590,  596,  596,  596,  596,  590,  590,  596,  596,  590,
      590,  596,  596,  596,  596,  596,  596,  590,  590,  596,

      596,  596,  596,  596,  596,  596,  596,  596,  594,  594,
      594,  594,  594,  594,  594,  594,  594,  590,  590,  594,
      590,  590,  596,  596,  596,  596,  596,  596,  596,  590,
      590,  596,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  594,  594,  594,
      594,  594,  596,  596,  596,  596,  596,  596,  596,  596,
      596,  596,  596,  596,  596,  590,  590,  594,  594,  596,
      596,  596,  596,  596,  596,  596,  596,  594,  596,  596,
      596,  596,  596,  596,  596,  596,  596,  596,  596,    0,
      590,  590,  590,  590,  590,  590,  590,  590,  590

    } ;

static const short int yy_nxt[1260] =
    {   0,
       10,   11,   12,   13,   11,   10,   14,   10,   10,   10,
       15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
       25,   25,   26,   27,   28,   29,   30,   10,   31,   32,
       33,   34,   35,   36,   37,   38,   39,   37,   37,   40,
       41,   42,   43,   44,   37,   45,   46,   47,   48,   49,
       50,   37,   37,   51,   52,   53,   54,   37,   37,   37,
       37,   37,   37,   37,   37,   55,   56,   57,   10,   58,
       61,  111,   58,   94,   62,  112,   94,  160,   63,   59,
       64,   61,  129,   64,  337,   62,  130,   66,   67,   63,
       66,   66,   67,  228,   66,   99,   99,   99,  160,   68,

      107,  108,  479,   68,   10,   11,   12,   13,   11,   10,
       14,   69,   70,   71,   15,   16,   17,   18,   19,   20,
       21,   22,   23,   24,   25,   25,   26,   27,   28,   29,
       30,   10,   72,   73,   74,   75,   76,   77,   78,   79,
       80,   78,   78,   81,   82,   83,   84,   85,   86,   87,
       88,   89,   90,   91,   92,   78,   78,   51,   52,   53,
       54,   78,   78,   78,   78,   78,   78,   78,   78,   55,
       56,   57,   93,   58,  160,  113,   58,  138,  100,  160,
      102,  102,  102,   59,  100,  114,  101,  101,  102,  115,
      120,  118,  121,  103,  139,  123,  116,  119,  124,  103,

      104,  125,  122,  117,  127,  275,  104,  132,  140,  104,
      160,  133,  128,  151,  152,  104,  160,  134,  141,  135,
      103,  136,  104,  142,  104,  145,  103,  160,  104,  160,
      104,  105,  146,  137,  154,  147,  160,  154,  143,  144,
      157,  160,  148,  157,  155,  158,  160,  175,  158,  176,
      162,  165,  288,  160,  160,  166,  169,  160,  160,  177,
      160,  167,  163,  170,  160,  172,  164,  160,  160,  173,
      171,  168,  129,  182,  160,  174,  130,  178,  212,  160,
      179,  183,  184,  180,  188,  160,  181,  160,  160,  185,
      186,  191,  189,  211,  200,  192,  160,  160,  190,  160,

       94,  193,  194,   94,  195,  197,  272,  237,  187,  234,
      238,  201,  203,  160,  157,  204,  196,  157,  160,  198,
      160,  202,  199,  207,  213,  214,  235,  205,  206,  255,
      208,  216,  160,  209,  300,  217,   99,   99,   99,  256,
      210,  226,  160,  226,  218,  218,  227,  227,  227,  220,
      221,  160,  216,  222,  222,  222,  221,  158,  160,  100,
      158,  101,  101,  102,  160,  273,  223,  224,  257,  274,
      258,  281,  160,  224,  103,  160,  220,  221,  221,  216,
      160,  225,  216,  259,  160,  216,  160,  216,  282,  219,
      225,  160,  160,  223,  224,  224,  100,  276,  102,  102,

      102,  103,  289,  225,  154,  225,  277,  154,  160,  290,
      278,  103,  279,  280,  155,  160,  160,  283,  104,  160,
      160,  160,  160,  160,  160,  160,  294,  104,  160,  286,
      284,  160,  287,  285,  160,  160,  160,  291,  103,  160,
      104,  160,  104,  292,  301,  160,  160,  299,  160,  160,
      293,  306,  297,  295,  296,  298,  160,  303,  160,  160,
      160,  302,  310,  312,  305,  160,  308,  160,  304,  311,
      160,  160,  314,  313,  160,  309,  307,  160,  316,  317,
      160,  318,  315,  160,  160,  227,  227,  227,  160,  321,
      160,  326,  325,  335,  319,  322,  160,  324,  320,  323,

      160,  578,  336,  336,  227,  227,  227,  349,  332,  328,
      349,  327,  160,  160,  330,  160,  329,  350,  388,  338,
      331,  338,  343,  333,  339,  339,  339,  222,  222,  222,
      341,  343,  341,  387,  389,  342,  342,  342,  393,  353,
      103,  340,  353,  390,  343,  362,  343,  340,  362,  354,
      364,  366,  160,  364,  366,  363,  368,  160,  160,  368,
      365,  367,  160,  160,  160,  160,  369,  103,  340,  340,
      385,  391,  349,  385,  391,  349,  394,  160,  160,  160,
      386,  392,  350,  397,  160,  353,  397,  160,  353,  160,
      160,  399,  160,  398,  395,  354,  396,  400,  401,  160,

      160,  160,  160,  405,  160,  160,  160,  415,  402,  160,
      415,  160,  403,  160,  160,  160,  160,  416,  404,  407,
      160,  335,  160,  406,  408,  160,  410,  339,  339,  339,
      446,  446,  412,  409,  160,  418,  420,  413,  427,  420,
      414,  411,  160,  160,  419,  417,  421,  422,  362,  364,
      422,  362,  364,  426,  160,  160,  160,  423,  363,  365,
      366,  368,  160,  366,  368,  429,  160,  160,  160,  160,
      367,  369,  425,  160,  160,  160,  160,  160,  160,  160,
      160,  160,  160,  160,  428,  160,  442,  160,  160,  442,
      339,  339,  339,  160,  569,  424,  443,  430,  432,  349,

      437,  568,  349,  431,  436,  440,  160,  445,  434,  350,
      506,  441,  438,  433,  435,  439,  444,  342,  342,  342,
      342,  342,  342,  353,  362,  364,  353,  362,  364,  366,
      160,  470,  366,  354,  363,  365,  160,  368,  458,  367,
      368,  458,  465,  385,  160,  465,  385,  369,  459,  160,
      160,  391,  466,  386,  391,  397,  160,  160,  397,  160,
      472,  392,  160,  471,  480,  398,  160,  480,  473,  160,
      160,  160,  486,  160,  481,  486,  160,  474,  415,  160,
      160,  415,  487,  160,  490,  160,  160,  490,  416,  475,
      476,  160,  160,  477,  491,  478,  160,  484,  420,  482,

      488,  420,  160,  160,  422,  483,  492,  422,  421,  485,
      489,  160,  501,  160,  423,  160,  493,  160,  458,  160,
      494,  458,  495,  500,  160,  160,  496,  498,  459,  160,
      498,  497,  465,  160,  160,  465,  503,  499,  160,  160,
      160,  442,  466,  508,  442,  160,  458,  160,  502,  458,
      505,  443,  160,  160,  504,  507,  459,  518,  465,  521,
      518,  465,  521,  528,  160,  524,  160,  519,  466,  522,
      480,  525,  523,  480,  530,  526,  160,  530,  527,  532,
      481,  160,  160,  486,  531,  490,  486,  160,  490,  160,
      160,  529,  533,  487,  160,  491,  160,  498,  534,  160,

      498,  160,  160,  160,  160,  160,  536,  499,  160,  160,
      160,  537,  538,  518,  539,  535,  518,  540,  160,  160,
      160,  541,  542,  519,  518,  545,  521,  518,  554,  521,
      547,  546,  160,  160,  519,  544,  522,  160,  521,  160,
      543,  521,  553,  556,  555,  160,  530,  560,  522,  530,
      160,  557,  160,  160,  566,  160,  531,  566,  160,  160,
      566,  559,  160,  566,  567,  160,  558,  160,  160,  160,
      567,  160,  564,  160,  566,  160,  561,  566,  563,  160,
      160,  160,  160,  571,  567,  562,  565,  160,  160,  570,
      160,  160,  572,  575,  160,  573,  160,  160,  160,  160,

      160,  160,  574,  581,  582,  576,  160,  579,  160,  160,
      577,  583,  552,  584,  580,  587,  585,  551,  550,  549,
      548,  586,  160,  160,  588,  160,  160,  589,   60,   60,
       60,   60,   60,   60,   65,   65,   65,   65,   65,   65,
       96,   96,   96,   96,   96,  110,  110,  160,  160,  160,
      160,  161,  160,  161,  161,  448,  448,  520,  517,  516,
      515,  514,  513,  512,  511,  510,  509,  447,  335,  160,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  469,
      468,  467,  464,  463,  462,  461,  460,  457,  456,  455,
      454,  453,  452,  451,  450,  449,  447,  160,  160,  160,

      160,  160,  160,  384,  383,  382,  381,  380,  379,  378,
      377,  376,  375,  374,  373,  372,  371,  370,  361,  360,
      359,  358,  357,  356,  355,  352,  351,  348,  347,  346,
      345,  344,  334,  334,  160,  160,  160,  160,  160,  271,
      270,  269,  268,  267,  266,  265,  264,  263,  262,  261,
      260,  254,  253,  252,  251,  250,  249,  248,   97,  247,
      246,  245,  244,  243,  242,  241,  240,  239,  236,  233,
      232,  231,  230,  229,  215,  160,  159,  156,  153,  150,
      149,  131,  126,  109,  106,   98,   97,   95,  590,    9,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,

      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590
    } ;

static const short int yy_chk[1260] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
        3,   31,    2,   11,    3,   31,   11,  403,    3,    2,
        4,    4,   40,    4,  598,    4,   40,    5,    5,    4,
        5,    6,    6,  597,    6,   22,   22,   22,  589,    5,

       28,   28,  403,    6,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    8,  584,   32,    8,   44,   25,  165,
       25,   25,   25,    8,   24,   32,   24,   24,   24,   33,
       35,   34,   35,   25,   44,   36,   33,   34,   36,   24,

       25,   36,   35,   33,   39,  165,   24,   42,   45,   25,
      174,   42,   39,   50,   50,   24,   76,   42,   45,   43,
       25,   43,   25,   46,   25,   47,   24,   73,   24,   72,
       24,   24,   47,   43,   58,   47,   74,   58,   46,   46,
       64,   75,   47,   64,   58,   66,   77,   76,   66,   76,
       72,   73,  174,   79,   86,   73,   74,   80,   91,   76,
       90,   73,   72,   74,   82,   75,   72,   83,  162,   75,
       74,   73,   81,   79,   81,   75,   81,   77,   91,   84,
       77,   79,   80,   77,   82,   85,   77,   87,   88,   80,
       80,   83,   82,   90,   86,   83,   89,   92,   82,  185,

       94,   83,   84,   94,   84,   85,  162,  118,   81,  116,
      118,   87,   88,  583,  157,   88,   84,  157,  582,   85,
      581,   87,   85,   89,   92,   92,  116,   88,   88,  139,
       89,   97,  164,   89,  185,   97,   99,   99,   99,  139,
       89,  103,  163,  103,   97,   97,  103,  103,  103,   99,
       99,  170,   97,  100,  100,  100,   99,  158,  166,  101,
      158,  101,  101,  101,  175,  163,  100,  100,  140,  164,
      140,  170,  167,  100,  101,  169,   99,   99,   99,   97,
      577,  101,   97,  140,  171,   97,  176,   97,  170,   97,
      101,  173,  178,  100,  100,  100,  102,  166,  102,  102,

      102,  101,  175,  101,  154,  101,  167,  154,  172,  176,
      169,  102,  169,  169,  154,  177,  179,  171,  102,  181,
      180,  183,  186,  187,  182,  188,  178,  102,  190,  173,
      172,  189,  173,  172,  191,  192,  193,  177,  102,  194,
      102,  197,  102,  177,  186,  198,  196,  183,  199,  202,
      177,  190,  181,  179,  180,  182,  203,  187,  200,  201,
      205,  186,  194,  197,  189,  204,  192,  207,  188,  196,
      206,  209,  199,  198,  210,  193,  191,  211,  200,  201,
      213,  201,  199,  212,  214,  226,  226,  226,  572,  202,
      275,  207,  206,  218,  201,  203,  276,  205,  201,  204,

      570,  569,  218,  218,  227,  227,  227,  235,  213,  210,
      235,  209,  277,  274,  212,  279,  211,  235,  275,  220,
      212,  220,  228,  214,  220,  220,  220,  222,  222,  222,
      223,  228,  223,  274,  276,  223,  223,  223,  279,  238,
      222,  222,  238,  277,  228,  248,  228,  222,  248,  238,
      249,  252,  280,  249,  252,  248,  253,  281,  283,  253,
      249,  252,  286,  285,  292,  288,  253,  222,  222,  222,
      272,  278,  282,  272,  278,  282,  280,  272,  278,  282,
      272,  278,  282,  284,  289,  287,  284,  291,  287,  293,
      284,  285,  287,  284,  281,  287,  283,  286,  288,  294,

      295,  296,  298,  292,  297,  299,  300,  301,  289,  303,
      301,  302,  289,  561,  301,  314,  560,  301,  291,  294,
      313,  336,  557,  293,  295,  553,  297,  338,  338,  338,
      336,  336,  299,  296,  316,  302,  304,  300,  314,  304,
      300,  298,  312,  304,  303,  301,  304,  305,  306,  307,
      305,  306,  307,  313,  305,  306,  307,  305,  306,  307,
      310,  311,  315,  310,  311,  316,  317,  310,  311,  318,
      310,  311,  312,  320,  319,  321,  324,  323,  325,  326,
      333,  328,  327,  329,  315,  332,  330,  387,  439,  330,
      339,  339,  339,  330,  552,  306,  330,  317,  319,  349,

      325,  550,  349,  318,  324,  328,  547,  333,  321,  349,
      439,  329,  326,  320,  323,  327,  332,  341,  341,  341,
      342,  342,  342,  353,  362,  364,  353,  362,  364,  366,
      388,  387,  366,  353,  362,  364,  389,  368,  371,  366,
      368,  371,  378,  385,  390,  378,  385,  368,  371,  393,
      396,  391,  378,  385,  391,  397,  401,  399,  397,  400,
      389,  391,  406,  388,  404,  397,  407,  404,  390,  408,
      410,  404,  412,  414,  404,  412,  413,  393,  415,  412,
      418,  415,  412,  426,  417,  424,  431,  417,  415,  396,
      399,  417,  432,  400,  417,  401,  425,  408,  420,  406,

      413,  420,  428,  429,  422,  407,  418,  422,  420,  410,
      414,  433,  432,  434,  422,  435,  424,  436,  427,  444,
      425,  427,  426,  431,  441,  427,  428,  430,  427,  478,
      430,  429,  437,  472,  430,  437,  434,  430,  474,  437,
      477,  442,  437,  444,  442,  473,  458,  476,  433,  458,
      436,  442,  482,  484,  435,  441,  458,  463,  465,  467,
      463,  465,  467,  478,  485,  473,  488,  463,  465,  467,
      480,  474,  472,  480,  483,  476,  489,  483,  477,  484,
      480,  483,  492,  486,  483,  490,  486,  493,  490,  494,
      495,  482,  485,  486,  496,  490,  497,  498,  488,  500,

      498,  501,  502,  504,  505,  526,  492,  498,  525,  524,
      536,  493,  494,  503,  495,  489,  503,  496,  532,  527,
      503,  497,  500,  503,  518,  504,  506,  518,  525,  506,
      505,  504,  533,  506,  518,  502,  506,  534,  521,  539,
      501,  521,  524,  527,  526,  540,  530,  536,  521,  530,
      541,  532,  545,  546,  549,  555,  530,  549,  554,  558,
      556,  534,  559,  556,  549,  562,  533,  556,  564,  563,
      556,  565,  545,  571,  566,  573,  539,  566,  541,  574,
      579,  575,  585,  555,  566,  540,  546,  586,  576,  554,
      587,  544,  558,  563,  588,  559,  580,  543,  542,  538,

      537,  535,  562,  574,  575,  564,  529,  571,  528,  523,
      565,  576,  515,  579,  573,  586,  580,  513,  512,  510,
      509,  585,  508,  507,  587,  479,  475,  588,  591,  591,
      591,  591,  591,  591,  592,  592,  592,  592,  592,  592,
      593,  593,  593,  593,  593,  594,  594,  595,  471,  595,
      595,  596,  470,  596,  596,  599,  599,  464,  462,  461,
      460,  457,  456,  455,  454,  453,  451,  448,  446,  445,
      440,  438,  419,  411,  409,  405,  402,  395,  394,  383,
      382,  380,  377,  376,  375,  374,  372,  370,  361,  359,
      355,  352,  351,  346,  345,  344,  337,  331,  322,  309,

      308,  290,  273,  270,  269,  267,  266,  265,  264,  263,
      262,  260,  259,  258,  257,  256,  255,  254,  247,  246,
      245,  244,  242,  240,  239,  237,  236,  234,  233,  232,
      231,  230,  217,  216,  208,  195,  184,  168,  161,  155,
      152,  151,  150,  149,  148,  147,  145,  144,  143,  142,
      141,  138,  137,  135,  134,  133,  132,  131,  130,  128,
      126,  125,  124,  123,  122,  121,  120,  119,  117,  115,
      114,  113,  112,  111,   96,   78,   68,   59,   52,   49,
       48,   41,   38,   30,   26,   16,   15,   13,    9,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,

      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
      590,  590,  590,  590,  590,  590,  590,  590,  590
    } ;

static yy_state_type yy_last_accepting_state;
static YY_CHAR *yy_last_accepting_cpos;

/* the intent behind this definition is that it'll catch
 * any uses of REJECT which flex missed
 */
#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0

/* these variables are all declared out here so that section 3 code can
 * manipulate them
 */
/* points to current character in buffer */
static YY_CHAR *yy_c_buf_p = (YY_CHAR *) 0;
static int yy_init = 1;		/* whether we need to initialize */
static int yy_start = 0;	/* start state number */

/* flag which is used to allow yywrap()'s to do buffer switches
 * instead of setting up a fresh yyin.  A bit of a hack ...
 */
static int yy_did_buffer_switch_on_eof;

static yy_state_type yy_get_previous_state YY_PROTO(( void ));
static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
static int yy_get_next_buffer YY_PROTO(( void ));
static void yyunput YY_PROTO(( YY_CHAR c, YY_CHAR *buf_ptr ));
void yyrestart YY_PROTO(( FILE *input_file ));
void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
void yy_load_buffer_state YY_PROTO(( void ));
YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));

#define yy_new_buffer yy_create_buffer

#ifdef __cplusplus
static int yyinput YY_PROTO(( void ));
#else
static int input YY_PROTO(( void ));
#endif

YY_DECL
    {
    register yy_state_type yy_current_state;
    register YY_CHAR *yy_cp, *yy_bp;
    register int yy_act;



			INIT;


    if ( yy_init )
	{
	YY_USER_INIT;

	if ( ! yy_start )
	    yy_start = 1;	/* first start state */

	if ( ! yyin )
	    yyin = stdin;

	if ( ! yyout )
	    yyout = stdout;

	if ( yy_current_buffer )
	    yy_init_buffer( yy_current_buffer, yyin );
	else
	    yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );

	yy_load_buffer_state();

	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;

	yy_current_state = yy_start;
	if ( yy_bp[-1] == '\n' )
	    ++yy_current_state;
yy_match:
	do
	    {
	    register YY_CHAR yy_c = yy_ec[*yy_cp];
	    if ( yy_accept[yy_current_state] )
		{
		yy_last_accepting_state = yy_current_state;
		yy_last_accepting_cpos = yy_cp;
		}
	    while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
		{
		yy_current_state = yy_def[yy_current_state];
		if ( yy_current_state >= 591 )
		    yy_c = yy_meta[yy_c];
		}
	    yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
	    ++yy_cp;
	    }
	while ( yy_current_state != 590 );
	yy_cp = yy_last_accepting_cpos;
	yy_current_state = yy_last_accepting_state;

yy_find_action:
	yy_act = yy_accept[yy_current_state];

	YY_DO_BEFORE_ACTION;
	YY_USER_ACTION;

do_action:	/* this label is used only to access EOF actions */


	switch ( yy_act )
	    {
	    case 0: /* must backtrack */
	    /* undo the effects of YY_DO_BEFORE_ACTION */
	    *yy_cp = yy_hold_char;
	    yy_cp = yy_last_accepting_cpos;
	    yy_current_state = yy_last_accepting_state;
	    goto yy_find_action;

case 1:
# line 84 "m2latex.l"
case 2:
# line 85 "m2latex.l"
case 3:
# line 86 "m2latex.l"
case 4:
# line 87 "m2latex.l"
case 5:
# line 88 "m2latex.l"
case 6:
# line 89 "m2latex.l"
case 7:
# line 90 "m2latex.l"
case 8:
# line 91 "m2latex.l"
case 9:
# line 92 "m2latex.l"
case 10:
# line 93 "m2latex.l"
case 11:
# line 94 "m2latex.l"
case 12:
# line 95 "m2latex.l"
case 13:
# line 96 "m2latex.l"
case 14:
# line 97 "m2latex.l"
case 15:
# line 98 "m2latex.l"
case 16:
# line 99 "m2latex.l"
case 17:
# line 100 "m2latex.l"
case 18:
# line 101 "m2latex.l"
case 19:
# line 102 "m2latex.l"
case 20:
# line 103 "m2latex.l"
case 21:
# line 104 "m2latex.l"
case 22:
# line 105 "m2latex.l"
case 23:
# line 105 "m2latex.l"
STDFUN;
	YY_BREAK
case 24:
# line 108 "m2latex.l"
case 25:
# line 109 "m2latex.l"
case 26:
# line 110 "m2latex.l"
case 27:
# line 111 "m2latex.l"
case 28:
# line 112 "m2latex.l"
case 29:
# line 113 "m2latex.l"
case 30:
# line 114 "m2latex.l"
case 31:
# line 115 "m2latex.l"
case 32:
# line 116 "m2latex.l"
case 33:
# line 117 "m2latex.l"
case 34:
# line 118 "m2latex.l"
case 35:
# line 119 "m2latex.l"
case 36:
# line 120 "m2latex.l"
case 37:
# line 121 "m2latex.l"
case 38:
# line 122 "m2latex.l"
case 39:
# line 123 "m2latex.l"
case 40:
# line 124 "m2latex.l"
case 41:
# line 125 "m2latex.l"
case 42:
# line 126 "m2latex.l"
case 43:
# line 127 "m2latex.l"
case 44:
# line 128 "m2latex.l"
case 45:
# line 129 "m2latex.l"
case 46:
# line 130 "m2latex.l"
case 47:
# line 131 "m2latex.l"
case 48:
# line 132 "m2latex.l"
case 49:
# line 133 "m2latex.l"
case 50:
# line 134 "m2latex.l"
case 51:
# line 135 "m2latex.l"
case 52:
# line 136 "m2latex.l"
case 53:
# line 137 "m2latex.l"
case 54:
# line 138 "m2latex.l"
case 55:
# line 139 "m2latex.l"
case 56:
# line 140 "m2latex.l"
case 57:
# line 141 "m2latex.l"
case 58:
# line 142 "m2latex.l"
case 59:
# line 143 "m2latex.l"
case 60:
# line 144 "m2latex.l"
case 61:
# line 145 "m2latex.l"
case 62:
# line 146 "m2latex.l"
case 63:
# line 147 "m2latex.l"
case 64:
# line 148 "m2latex.l"
case 65:
# line 149 "m2latex.l"
case 66:
# line 150 "m2latex.l"
case 67:
# line 151 "m2latex.l"
case 68:
# line 152 "m2latex.l"
case 69:
# line 153 "m2latex.l"
case 70:
# line 154 "m2latex.l"
case 71:
# line 155 "m2latex.l"
case 72:
# line 156 "m2latex.l"
case 73:
# line 157 "m2latex.l"
case 74:
# line 158 "m2latex.l"
case 75:
# line 159 "m2latex.l"
case 76:
# line 160 "m2latex.l"
case 77:
# line 160 "m2latex.l"
KEY;
	YY_BREAK
case 78:
# line 162 "m2latex.l"
SYM ("leq");
	YY_BREAK
case 79:
# line 163 "m2latex.l"
SYM ("geq");
	YY_BREAK
case 80:
# line 164 "m2latex.l"
SYM ("neq");
	YY_BREAK
case 81:
# line 165 "m2latex.l"
SYM ("ast");
	YY_BREAK
case 82:
# line 166 "m2latex.l"
SYM ("wedge");
	YY_BREAK
case 83:
# line 167 "m2latex.l"
SYM ("mid");
	YY_BREAK
case 84:
# line 168 "m2latex.l"
SYM ("neq");
	YY_BREAK
case 85:
# line 169 "m2latex.l"
SYM ("sim");
	YY_BREAK
case 86:
# line 170 "m2latex.l"
OUT ("$<$");
	YY_BREAK
case 87:
# line 171 "m2latex.l"
OUT ("$>$");
	YY_BREAK
case 88:
# line 172 "m2latex.l"
OUT ("\\{");
	YY_BREAK
case 89:
# line 173 "m2latex.l"
OUT ("\\}");
	YY_BREAK
case 90:
# line 174 "m2latex.l"
OUT ("\\&");
	YY_BREAK
case 91:
# line 176 "m2latex.l"
case 92:
# line 177 "m2latex.l"
case 93:
# line 178 "m2latex.l"
case 94:
# line 179 "m2latex.l"
case 95:
# line 180 "m2latex.l"
case 96:
# line 181 "m2latex.l"
case 97:
# line 182 "m2latex.l"
case 98:
# line 183 "m2latex.l"
case 99:
# line 184 "m2latex.l"
case 100:
# line 185 "m2latex.l"
case 101:
# line 186 "m2latex.l"
case 102:
# line 187 "m2latex.l"
case 103:
# line 187 "m2latex.l"
ECHO;
	YY_BREAK
case 104:
# line 190 "m2latex.l"
case 105:
# line 190 "m2latex.l"
SUB (yytext);
	YY_BREAK
case 106:
# line 192 "m2latex.l"
{ BEGIN (COMMENT);
				FONT (comment_font);
                                REPARSE; }
	YY_BREAK
case 107:
# line 196 "m2latex.l"
{ BEGIN (COMMENT);
                                if (aligntoright) {
					OUT ("\\hfill");
				} else {
					CTAB;
				}
				FONT (comment_font);
                                OUT ("($\\ast$"); }
	YY_BREAK
case 108:
# line 205 "m2latex.l"
{ INIT; OUT ("$\\ast$)}"); }
	YY_BREAK
case 109:
# line 206 "m2latex.l"
OUT ("\\mbox{}\\\\\n");
	YY_BREAK
case 110:
# line 207 "m2latex.l"
IND;
	YY_BREAK
case 111:
# line 208 "m2latex.l"
SUB (yytext);
	YY_BREAK
case 112:
# line 210 "m2latex.l"
{ BEGIN (STRING);
				FONT (string_font); OUT ("\""); }
	YY_BREAK
case 113:
# line 212 "m2latex.l"
{ INIT; OUT ("\"}"); }
	YY_BREAK
case 114:
# line 214 "m2latex.l"
{ BEGIN (STRING);
				FONT (string_font); OUT ("'"); }
	YY_BREAK
case 115:
# line 216 "m2latex.l"
{ INIT; OUT ("'}"); }
	YY_BREAK
case 116:
# line 217 "m2latex.l"
OUT ("\\mbox{}\\\\\n");
	YY_BREAK
case 117:
# line 218 "m2latex.l"
IND;
	YY_BREAK
case 118:
# line 219 "m2latex.l"
SUB (yytext);
	YY_BREAK
case 119:
# line 222 "m2latex.l"
case 120:
# line 223 "m2latex.l"
case 121:
# line 224 "m2latex.l"
case 122:
# line 224 "m2latex.l"
ECHO;
	YY_BREAK
case 123:
# line 226 "m2latex.l"
ECHO;
	YY_BREAK
case 124:
# line 229 "m2latex.l"
case 125:
# line 230 "m2latex.l"
case 126:
# line 231 "m2latex.l"
case 127:
# line 231 "m2latex.l"
SUB (yytext);
	YY_BREAK
case 128:
# line 233 "m2latex.l"
ECHO;
	YY_BREAK
case 129:
# line 235 "m2latex.l"
ECHO;
	YY_BREAK
case 130:
# line 237 "m2latex.l"
OUT ("$\\backslash$\\\\\n");
	YY_BREAK
case 131:
# line 238 "m2latex.l"
IND;
	YY_BREAK
case 132:
# line 239 "m2latex.l"
ECHO;
	YY_BREAK
case 133:
# line 240 "m2latex.l"
OUT ("\\newpage\n");
	YY_BREAK
case 134:
# line 241 "m2latex.l"
OUT ("\\mbox{}\\\\\n");
	YY_BREAK
case 135:
# line 243 "m2latex.l"
ECHO;
	YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(STRING):
case YY_STATE_EOF(COMMENT):
case YY_STATE_EOF(MODULA2):
    yyterminate();

	    case YY_END_OF_BUFFER:
		{
		/* amount of text matched not including the EOB char */
		int yy_amount_of_matched_text = yy_cp - yytext - 1;

		/* undo the effects of YY_DO_BEFORE_ACTION */
		*yy_cp = yy_hold_char;

		/* note that here we test for yy_c_buf_p "<=" to the position
		 * of the first EOB in the buffer, since yy_c_buf_p will
		 * already have been incremented past the NUL character
		 * (since all states make transitions on EOB to the end-
		 * of-buffer state).  Contrast this with the test in yyinput().
		 */
		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
		    /* this was really a NUL */
		    {
		    yy_state_type yy_next_state;

		    yy_c_buf_p = yytext + yy_amount_of_matched_text;

		    yy_current_state = yy_get_previous_state();

		    /* okay, we're now positioned to make the
		     * NUL transition.  We couldn't have
		     * yy_get_previous_state() go ahead and do it
		     * for us because it doesn't know how to deal
		     * with the possibility of jamming (and we
		     * don't want to build jamming into it because
		     * then it will run more slowly)
		     */

		    yy_next_state = yy_try_NUL_trans( yy_current_state );

		    yy_bp = yytext + YY_MORE_ADJ;

		    if ( yy_next_state )
			{
			/* consume the NUL */
			yy_cp = ++yy_c_buf_p;
			yy_current_state = yy_next_state;
			goto yy_match;
			}

		    else
			{
			    yy_cp = yy_last_accepting_cpos;
			    yy_current_state = yy_last_accepting_state;
			goto yy_find_action;
			}
		    }

		else switch ( yy_get_next_buffer() )
		    {
		    case EOB_ACT_END_OF_FILE:
			{
			yy_did_buffer_switch_on_eof = 0;

			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 + YY_MORE_ADJ;

			    yy_act = YY_STATE_EOF((yy_start - 1) / 2);
			    goto do_action;
			    }

			else
			    {
			    if ( ! yy_did_buffer_switch_on_eof )
				YY_NEW_FILE;
			    }
			}
			break;

		    case EOB_ACT_CONTINUE_SCAN:
			yy_c_buf_p = yytext + yy_amount_of_matched_text;

			yy_current_state = yy_get_previous_state();

			yy_cp = yy_c_buf_p;
			yy_bp = yytext + YY_MORE_ADJ;
			goto yy_match;

		    case EOB_ACT_LAST_MATCH:
			yy_c_buf_p =
			    &yy_current_buffer->yy_ch_buf[yy_n_chars];

			yy_current_state = yy_get_previous_state();

			yy_cp = yy_c_buf_p;
			yy_bp = yytext + YY_MORE_ADJ;
			goto yy_find_action;
		    }
		break;
		}

	    default:
#ifdef FLEX_DEBUG
		printf( "action # %d\n", yy_act );
#endif
		YY_FATAL_ERROR(
			"fatal flex scanner internal error--no action found" );
	    }
	}
    }


/* yy_get_next_buffer - try to read in a new buffer
 *
 * synopsis
 *     int yy_get_next_buffer();
 *     
 * returns a code representing an action
 *     EOB_ACT_LAST_MATCH - 
 *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 *     EOB_ACT_END_OF_FILE - end of file
 */

static int yy_get_next_buffer()

    {
    register YY_CHAR *dest = yy_current_buffer->yy_ch_buf;
    register YY_CHAR *source = yytext - 1; /* copy prev. char, too */
    register int number_to_move, i;
    int ret_val;

    if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
	YY_FATAL_ERROR(
		"fatal flex scanner internal error--end of buffer missed" );

    /* try to read more data */

    /* 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_current_buffer->yy_eof_status != EOF_NOT_SEEN )
	/* don't do the read, it's not guaranteed to return an EOF,
	 * just force an EOF
	 */
	yy_n_chars = 0;

    else
	{
	int num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1;

	if ( num_to_read > YY_READ_BUF_SIZE )
	    num_to_read = YY_READ_BUF_SIZE;

	else if ( num_to_read <= 0 )
	    YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" );

	/* read in more data */
	YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
		  yy_n_chars, num_to_read );
	}

    if ( yy_n_chars == 0 )
	{
	if ( number_to_move == 1 )
	    {
	    ret_val = EOB_ACT_END_OF_FILE;
	    yy_current_buffer->yy_eof_status = EOF_DONE;
	    }

	else
	    {
	    ret_val = EOB_ACT_LAST_MATCH;
	    yy_current_buffer->yy_eof_status = EOF_PENDING;
	    }
	}

    else
	ret_val = EOB_ACT_CONTINUE_SCAN;

    yy_n_chars += number_to_move;
    yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
    yy_current_buffer->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_current_buffer->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 YY_CHAR *yy_cp;

    register YY_CHAR *yy_bp = yytext;

    yy_current_state = yy_start;
    if ( yy_bp[-1] == '\n' )
	++yy_current_state;

    for ( yy_cp = yytext + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
	{
	register YY_CHAR yy_c = (*yy_cp ? yy_ec[*yy_cp] : 1);
	if ( yy_accept[yy_current_state] )
	    {
	    yy_last_accepting_state = yy_current_state;
	    yy_last_accepting_cpos = yy_cp;
	    }
	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
	    {
	    yy_current_state = yy_def[yy_current_state];
	    if ( yy_current_state >= 591 )
		yy_c = yy_meta[yy_c];
	    }
	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
	}

    return ( yy_current_state );
    }


/* yy_try_NUL_trans - try to make a transition on the NUL character
 *
 * synopsis
 *     next_state = yy_try_NUL_trans( current_state );
 */

#ifdef YY_USE_PROTOS
static yy_state_type yy_try_NUL_trans( register yy_state_type yy_current_state )
#else
static yy_state_type yy_try_NUL_trans( yy_current_state )
register yy_state_type yy_current_state;
#endif

    {
    register int yy_is_jam;
    register YY_CHAR *yy_cp = yy_c_buf_p;

    register YY_CHAR yy_c = 1;
    if ( yy_accept[yy_current_state] )
	{
	yy_last_accepting_state = yy_current_state;
	yy_last_accepting_cpos = yy_cp;
	}
    while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
	{
	yy_current_state = yy_def[yy_current_state];
	if ( yy_current_state >= 591 )
	    yy_c = yy_meta[yy_c];
	}
    yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
    yy_is_jam = (yy_current_state == 590);

    return ( yy_is_jam ? 0 : yy_current_state );
    }


#ifdef YY_USE_PROTOS
static void yyunput( YY_CHAR c, register YY_CHAR *yy_bp )
#else
static void yyunput( c, yy_bp )
YY_CHAR c;
register YY_CHAR *yy_bp;
#endif

    {
    register YY_CHAR *yy_cp = yy_c_buf_p;

    /* undo effects of setting up yytext */
    *yy_cp = yy_hold_char;

    if ( yy_cp < yy_current_buffer->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 YY_CHAR *dest =
	    &yy_current_buffer->yy_ch_buf[yy_current_buffer->yy_buf_size + 2];
	register YY_CHAR *source =
	    &yy_current_buffer->yy_ch_buf[number_to_move];

	while ( source > yy_current_buffer->yy_ch_buf )
	    *--dest = *--source;

	yy_cp += dest - source;
	yy_bp += dest - source;
	yy_n_chars = yy_current_buffer->yy_buf_size;

	if ( yy_cp < yy_current_buffer->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;

    /* note: the formal parameter *must* be called "yy_bp" for this
     *       macro to now work correctly
     */
    YY_DO_BEFORE_ACTION; /* set up yytext again */
    }


#ifdef __cplusplus
static int yyinput()
#else
static int input()
#endif

    {
    int c;
    YY_CHAR *yy_cp = yy_c_buf_p;

    *yy_cp = yy_hold_char;

    if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
	{
	/* yy_c_buf_p now points to the character we want to return.
	 * If this occurs *before* the EOB characters, then it's a
	 * valid NUL; if not, then we've hit the end of the buffer.
	 */
	if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
	    /* this was really a NUL */
	    *yy_c_buf_p = '\0';

	else
	    { /* need more input */
	    yytext = yy_c_buf_p;
	    ++yy_c_buf_p;

	    switch ( yy_get_next_buffer() )
		{
		case EOB_ACT_END_OF_FILE:
		    {
		    if ( yywrap() )
			{
			yy_c_buf_p = yytext + YY_MORE_ADJ;
			return ( EOF );
			}

		    YY_NEW_FILE;

#ifdef __cplusplus
		    return ( yyinput() );
#else
		    return ( input() );
#endif
		    }
		    break;

		case EOB_ACT_CONTINUE_SCAN:
		    yy_c_buf_p = yytext + YY_MORE_ADJ;
		    break;

		case EOB_ACT_LAST_MATCH:
#ifdef __cplusplus
		    YY_FATAL_ERROR( "unexpected last match in yyinput()" );
#else
		    YY_FATAL_ERROR( "unexpected last match in input()" );
#endif
		}
	    }
	}

    c = *yy_c_buf_p;
    yy_hold_char = *++yy_c_buf_p;

    return ( c );
    }


#ifdef YY_USE_PROTOS
void yyrestart( FILE *input_file )
#else
void yyrestart( input_file )
FILE *input_file;
#endif

    {
    yy_init_buffer( yy_current_buffer, input_file );
    yy_load_buffer_state();
    }


#ifdef YY_USE_PROTOS
void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
#else
void yy_switch_to_buffer( new_buffer )
YY_BUFFER_STATE new_buffer;
#endif

    {
    if ( yy_current_buffer == new_buffer )
	return;

    if ( yy_current_buffer )
	{
	/* flush out information for old buffer */
	*yy_c_buf_p = yy_hold_char;
	yy_current_buffer->yy_buf_pos = yy_c_buf_p;
	yy_current_buffer->yy_n_chars = yy_n_chars;
	}

    yy_current_buffer = new_buffer;
    yy_load_buffer_state();

    /* we don't actually know whether we did this switch during
     * EOF (yywrap()) processing, but the only time this flag
     * is looked at is after yywrap() is called, so it's safe
     * to go ahead and always set it.
     */
    yy_did_buffer_switch_on_eof = 1;
    }


#ifdef YY_USE_PROTOS
void yy_load_buffer_state( void )
#else
void yy_load_buffer_state()
#endif

    {
    yy_n_chars = yy_current_buffer->yy_n_chars;
    yytext = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
    yyin = yy_current_buffer->yy_input_file;
    yy_hold_char = *yy_c_buf_p;
    }


#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
#else
YY_BUFFER_STATE yy_create_buffer( file, size )
FILE *file;
int size;
#endif

    {
    YY_BUFFER_STATE b;

    b = (YY_BUFFER_STATE) malloc( sizeof( struct yy_buffer_state ) );

    if ( ! b )
	YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

    b->yy_buf_size = size;

    /* yy_ch_buf has to be 2 characters longer than the size given because
     * we need to put in 2 end-of-buffer characters.
     */
    b->yy_ch_buf = (YY_CHAR *) malloc( (unsigned) (b->yy_buf_size + 2) );

    if ( ! b->yy_ch_buf )
	YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

    yy_init_buffer( b, file );

    return ( b );
    }


#ifdef YY_USE_PROTOS
void yy_delete_buffer( YY_BUFFER_STATE b )
#else
void yy_delete_buffer( b )
YY_BUFFER_STATE b;
#endif

    {
    if ( b == yy_current_buffer )
	yy_current_buffer = (YY_BUFFER_STATE) 0;

    free( (char *) b->yy_ch_buf );
    free( (char *) b );
    }


#ifdef YY_USE_PROTOS
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
#else
void yy_init_buffer( b, file )
YY_BUFFER_STATE b;
FILE *file;
#endif

    {
    b->yy_input_file = file;

    /* we put in the '\n' and start reading from [1] so that an
     * initial match-at-newline will be true.
     */

    b->yy_ch_buf[0] = '\n';
    b->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.
     */
    b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
    b->yy_ch_buf[2] = YY_END_OF_BUFFER_CHAR;

    b->yy_buf_pos = &b->yy_ch_buf[1];

    b->yy_eof_status = EOF_NOT_SEEN;
    }
# line 243 "m2latex.l"


#include "main.c"
