[project @ 1996-03-22 09:24:22 by partain]
[ghc-hetmet.git] / ghc / compiler / yaccParser / hslexer.c
index 20c54d3..add30be 100644 (file)
@@ -1,10 +1,12 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /srv/cvs/cvs.haskell.org/fptools/ghc/compiler/yaccParser/Attic/hslexer.c,v 1.1 1996/01/08 20:15:54 partain Exp $
+ * $Header: /srv/cvs/cvs.haskell.org/fptools/ghc/compiler/yaccParser/Attic/hslexer.c,v 1.4 1996/01/23 11:11:20 partain Exp $
  */
 
 #define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
 
 #include <stdio.h>
 
@@ -30,7 +32,7 @@
 
 #else  /* ! __cplusplus */
 
-#ifdef __STDC__
+#if __STDC__
 
 #define YY_USE_PROTOS
 #define YY_USE_CONST
 #endif /* __STDC__ */
 #endif /* ! __cplusplus */
 
-
 #ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
 #define YY_USE_CONST
+#define YY_USE_PROTOS
 #endif
 
-
-#ifndef YY_USE_CONST
-#ifndef const
-#define const
-#endif
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
 #endif
 
 
 #define BEGIN yy_start = 1 + 2 *
 
 /* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
  */
 #define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
 
 /* 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".  Now included
- * only for backward compatibility with previous versions of flex.
- */
+/* Special action meaning "start processing a new file". */
 #define YY_NEW_FILE yyrestart( yyin )
 
 #define YY_END_OF_BUFFER_CHAR 0
@@ -96,14 +101,6 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
 extern int yyleng;
 extern FILE *yyin, *yyout;
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-       extern int yywrap YY_PROTO(( void ));
-#ifdef __cplusplus
-       }
-#endif
-
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
@@ -136,6 +133,12 @@ extern "C" {
 
 #define unput(c) yyunput( c, yytext_ptr )
 
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
 
 struct yy_buffer_state
        {
@@ -147,13 +150,19 @@ struct yy_buffer_state
        /* Size of input buffer in bytes, not including room for EOB
         * characters.
         */
-       int yy_buf_size;
+       yy_size_t yy_buf_size;
 
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
        int yy_n_chars;
 
+       /* Whether we "own" the buffer - i.e., we know we created it,
+        * and can realloc() it to grow it, and should free() it to
+        * delete it.
+        */
+       int yy_is_our_buffer;
+
        /* Whether this is an "interactive" input source; if so, and
         * if we're using stdio for input, then we want to use getc()
         * instead of fread(), to make sure we stop fetching input after
@@ -161,6 +170,12 @@ struct yy_buffer_state
         */
        int yy_is_interactive;
 
+       /* Whether we're considered to be at the beginning of a line.
+        * If so, '^' rules will be active on the next match, otherwise
+        * not.
+        */
+       int yy_at_bol;
+
        /* Whether to try to fill the input buffer when we reach the
         * end of it.
         */
@@ -209,166 +224,152 @@ static int yy_start = 0;        /* start state number */
  */
 static int yy_did_buffer_switch_on_eof;
 
-static void yyunput YY_PROTO(( int c, 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 ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
 
-static int yy_start_stack_ptr = 0;
-static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
-static void yy_push_state YY_PROTO(( int new_state ));
-static void yy_pop_state YY_PROTO(( void ));
-static int yy_top_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
 
-static void *yy_flex_alloc YY_PROTO(( unsigned int ));
-static void *yy_flex_realloc YY_PROTO(( void *, unsigned int ));
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
 static void yy_flex_free YY_PROTO(( void * ));
 
 #define yy_new_buffer yy_create_buffer
 
-#define INITIAL 0
-#define Char 1
-#define CharEsc 2
-#define Code 3
-#define Comment 4
-#define GlaExt 5
-#define GhcPragma 6
-#define UserPragma 7
-#define String 8
-#define StringEsc 9
+#define yy_set_interactive(is_interactive) \
+       { \
+       if ( ! yy_current_buffer ) \
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       yy_current_buffer->yy_is_interactive = is_interactive; \
+       }
+
+#define yy_set_bol(at_bol) \
+       { \
+       if ( ! yy_current_buffer ) \
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+       yy_current_buffer->yy_at_bol = at_bol; \
+       }
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
 typedef unsigned char YY_CHAR;
-typedef int yy_state_type;
 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
 extern char *yytext;
 #define yytext_ptr yytext
 
-#ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, const char *, int ));
-#endif
-
-#ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
-#else
-static int input YY_PROTO(( void ));
-#endif
-
 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 yy_fatal_error YY_PROTO(( const char msg[] ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
 
 /* Done after the current pattern has been matched and before the
  * corresponding action - sets up yytext.
  */
 #define YY_DO_BEFORE_ACTION \
        yytext_ptr = yy_bp; \
-       yyleng = yy_cp - yy_bp; \
+       yyleng = (int) (yy_cp - yy_bp); \
        yy_hold_char = *yy_cp; \
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_END_OF_BUFFER 202
-static const short int yy_accept[838] =
+#define YY_NUM_RULES 202
+#define YY_END_OF_BUFFER 203
+static yyconst short int yy_accept[743] =
     {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,  190,  190,
+        0,    0,    0,    0,    0,    0,    0,    0,  191,  191,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      202,  196,  197,  129,  128,  136,  198,  141,  184,  198,
-      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
-      198,  198,  198,  139,  198,  150,  152,  160,  156,  198,
-      162,  154,  158,  198,  188,  121,  132,  126,   91,   92,
-       97,   84,  104,  121,  110,  110,  121,   83,  121,   86,
-       98,  120,   93,   99,   94,  101,  102,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,   95,   85,
-       96,  103,  121,  190,  195,  195,  132,  126,  104,  110,
-
-      110,  120,  101,  102,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  188,  126,  121,  110,  196,
-      120,  120,  120,  120,  120,   95,  121,  121,  121,  196,
-      196,  120,  120,  196,  199,  135,  134,  138,  200,  188,
-      141,  200,  184,  200,  200,  200,  200,  200,  200,  200,
-      200,  200,  200,  200,  200,  200,  200,  140,  200,  150,
-      152,  160,  156,  200,  162,  154,  158,  200,  200,  129,
-      128,  127,  184,    0,    0,  151,    0,  161,    0,    0,
-        0,  174,    0,    0,    0,    0,  159,  177,  178,  153,
-      155,    0,    0,  179,  164,  163,  181,    0,    0,    0,
-
-      180,  157,  183,  185,  186,  188,  121,  132,  131,  126,
-      125,    0,   88,   82,    0,  110,    0,    0,   90,   87,
-       89,  120,  119,    0,  119,  120,  120,  120,  120,  120,
-      120,   60,  120,   74,  120,  120,   68,  120,  120,   71,
-      120,  120,  189,    0,    0,  190,  191,    0,  194,  192,
-      193,    0,  132,  131,  126,    0,    0,  109,    0,  110,
-        0,    0,  118,  120,  119,    0,    0,  120,  120,  120,
-      120,  120,  120,   60,  120,   74,  120,  120,   68,  120,
-      120,   71,  120,  120,    0,  126,    0,  110,    0,    0,
-        0,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-
-      119,  119,  119,  119,  119,  119,  119,    0,  120,  120,
-       74,  120,   68,  189,    0,  120,  135,  134,  133,  137,
-      148,  149,  173,  166,  167,  168,  169,  182,  165,  147,
-      146,  176,  172,  145,  170,  142,  143,  144,  175,  171,
-      126,  124,    0,  187,  187,  113,  106,  108,  119,  119,
+      203,  197,  198,  130,  129,  137,  199,  142,  185,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  140,  199,  151,  153,  161,  157,  199,
+      163,  155,  159,  199,  189,  122,  133,  127,   92,   93,
+       98,   85,  105,  122,  111,  111,  122,   84,  122,   87,
+       99,  121,   94,  100,   95,  102,  103,  121,  121,  121,
+      121,  121,  121,  121,  121,  121,  121,  121,   96,   86,
+       97,  104,  122,  191,  196,  196,  133,  127,  105,  111,
+
+      111,  102,  103,  189,  127,  122,  111,  197,  121,  121,
+      121,  121,  121,   96,  122,  122,  122,  197,  197,  121,
+      121,  197,  200,  136,  135,  139,  201,  189,  142,  201,
+      185,  201,  201,  201,  201,  201,  201,  201,  201,  201,
+      201,  201,  201,  201,  201,  141,  201,  151,  153,  161,
+      157,  201,  163,  155,  159,  201,  201,  130,  129,  128,
+      185,    0,    0,  152,    0,  162,    0,    0,    0,  175,
+        0,    0,    0,    0,  160,  178,  179,  154,  156,    0,
+        0,  180,  165,  164,  182,    0,    0,    0,  181,  158,
+      184,  186,  187,  189,  122,  133,  132,  127,  126,  188,
+
+       89,   83,    0,  111,    0,    0,   91,   88,   90,  119,
+      121,  120,    0,  120,  121,  121,  121,  121,  121,  121,
+       61,  121,   75,  121,  121,   69,  121,  121,   72,  121,
+      121,  190,    0,    0,  191,  192,    0,  195,  193,  194,
+        0,  133,  132,  127,    0,    0,  110,    0,  111,    0,
+        0,  120,    0,    0,    0,  127,    0,  111,    0,    0,
+        0,  120,  120,  120,  120,  120,  120,  120,  120,  120,
+      120,  120,  120,  120,  120,  120,  120,    0,  121,  121,
+       75,  121,   69,  190,    0,  121,  136,  135,  134,  138,
+      149,  150,  174,  167,  168,  169,  170,  183,  166,  148,
+
+      147,  177,  173,  146,  171,  143,  144,  145,  176,  172,
+      127,  125,  188,  188,  188,  188,  114,  107,  109,  120,
+      120,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,   76,  121,  121,  121,  121,  121,    0,    0,
+        1,    1,    0,  131,  125,    0,    0,  114,  107,  109,
+      120,  120,    0,    0,    0,    0,    0,    0,   18,   19,
+        0,  120,  120,  120,  120,   12,  120,  120,  120,  120,
+      120,  120,   17,  120,   15,  120,  120,  120,   11,  120,
+      120,    6,  120,  120,  120,  120,   14,  120,  120,  120,
+       13,  120,  120,  118,  121,   76,   53,  188,    0,  120,
+
+       54,  121,   56,  121,  121,   59,  121,  121,  121,  121,
+      121,  121,  121,   71,   73,  121,    0,    0,   52,   52,
+       52,   52,   52,   52,    0,  124,    0,    0,  113,    0,
+      106,  108,  120,  120,  123,    0,   46,    0,  101,  120,
       120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,   75,  120,  120,  120,  120,  120,    0,    0,    1,
-        1,    0,  130,  124,    0,    0,  113,  106,  108,  119,
-      119,    0,    0,    0,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,   75,  120,  120,  120,  120,
-
-      120,    0,    0,    0,   18,   19,    0,  119,  119,  119,
-      119,   12,  119,  119,  119,  119,  119,  119,   17,  119,
-       15,  119,  119,  119,   11,  119,  119,    6,  119,  119,
-      119,  119,   14,  119,  119,  119,   13,  119,  119,  117,
-      120,   75,   52,  187,  187,  187,  187,    0,  119,   53,
-      120,   55,  120,  120,   58,  120,  120,  120,  120,  120,
-      120,  120,   70,   72,  120,    0,    0,    0,    0,    0,
-        0,    0,    0,  123,    0,    0,  112,    0,  105,  107,
-      119,  119,  122,    0,   53,  120,   55,  120,  120,   58,
-      120,  120,  120,  120,  120,  120,  120,   70,   72,  120,
-
-       46,    0,  100,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,   16,  119,
-        7,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  117,   53,    0,  113,   80,   54,  120,
-      120,  120,  120,   62,  120,  120,  120,  120,   73,    0,
-        0,    0,    0,    0,    0,    0,    0,  111,    0,  113,
-      119,  119,  114,   54,  120,  120,  120,  120,   62,  120,
-      120,  120,  120,   73,    0,    0,  119,   22,  119,  119,
-       20,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  115,  119,  119,  119,  119,  119,  119,  119,
-
-      119,  119,  119,  119,  119,  120,  120,   59,   61,   63,
-       64,  120,  120,   67,  120,    0,    0,    0,    0,    0,
-        0,    0,    0,   78,  119,  120,  120,   59,   61,   63,
-       64,  120,  120,   67,  120,  119,  119,  119,  119,  119,
-      119,   35,  119,   36,  119,  119,  119,  119,   34,  119,
-      119,   40,  119,   23,  119,  119,   38,  116,  119,  119,
-       39,  119,   56,  120,  120,  120,  120,    0,    0,    0,
-        0,    0,    0,    0,    0,    2,    2,  119,   76,   56,
-      120,  120,  120,  120,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,   33,  119,
-
-       21,  119,  119,   57,   65,  120,   69,    0,    0,    0,
-        0,    0,    0,    0,  119,  119,   57,   65,  120,   69,
-      119,  119,   41,  119,   32,   37,  119,  119,  119,  119,
-       25,  119,  119,  119,  119,  119,  119,  119,   81,   66,
-        0,    0,    0,    0,   48,    0,    0,   79,  119,   66,
-      119,  119,   29,  119,   30,   31,   42,   43,   44,   45,
-      119,  119,  119,   28,    0,    0,    0,    0,    0,    0,
-        0,   77,    8,  119,    9,   24,  119,  119,    0,    0,
-       51,   50,    0,    0,  119,  119,  119,    0,    3,    3,
-        0,    0,  119,  119,   10,    0,    0,   47,  119,  119,
-
-        0,    0,   27,  119,    5,    0,  119,    0,    0,  119,
-        0,    0,  119,    0,   49,   26,    0,    0,    0,    0,
+      120,  120,  120,  120,   16,  120,    7,  120,  120,  120,
+      120,  120,  120,  120,  120,  120,  120,  120,  120,  118,
+       54,    0,  114,   81,   55,  121,  121,  121,  121,   63,
+      121,  121,  121,  121,   74,   52,   52,   52,   52,   52,
+       52,   52,    0,  112,    0,  114,  120,  120,  115,    0,
+
+        0,  120,   22,  120,  120,   20,  120,  120,  120,  120,
+      120,  120,  120,  120,  120,  120,  120,  116,  120,  120,
+      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
+      121,  121,   60,   62,   64,   65,  121,  121,   68,  121,
+       52,   52,   52,   52,   52,   52,   52,    0,   79,  120,
+      120,  120,  120,  120,  120,  120,   35,  120,   36,  120,
+      120,  120,  120,   34,  120,  120,   40,  120,   23,  120,
+      120,   38,  117,  120,  120,   39,  120,   57,  121,  121,
+      121,  121,   52,   52,   52,   52,   52,   52,   52,    0,
+        2,    2,  120,   77,  120,  120,  120,  120,  120,  120,
+
+      120,  120,  120,  120,  120,  120,  120,  120,   33,  120,
+       21,  120,  120,   58,   66,  121,   70,   52,   52,   52,
+       52,   52,   52,   52,  120,  120,  120,  120,   41,  120,
+       32,   37,  120,  120,  120,  120,   25,  120,  120,  120,
+      120,  120,  120,  120,   82,   67,   52,    0,   52,   52,
+       48,   52,   52,   80,  120,  120,  120,   29,  120,   30,
+       31,   42,   43,   44,   45,  120,  120,  120,   28,   52,
+        0,    0,   52,   52,   52,   52,   78,    8,  120,    9,
+       24,  120,  120,   52,    0,   51,   50,   52,   52,  120,
+      120,  120,   52,    3,    3,   52,   52,  120,  120,   10,
+
+       52,   52,   47,  120,  120,   52,   52,   27,  120,    5,
+       52,  120,    0,   52,  120,    0,   52,  120,    0,   49,
+       26,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    4,    0
+        4,    0
     } ;
 
-static const int yy_ec[256] =
+static yyconst int yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         2,    2,    4,    1,    1,    1,    1,    1,    1,    1,
@@ -400,248 +401,228 @@ static const int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static const int yy_meta[92] =
+static yyconst int yy_meta[92] =
     {   0,
-        1,    1,    2,    1,    3,    4,    3,    5,    6,    4,
-        4,    7,    3,    3,    4,    3,    8,    4,    4,    9,
-        9,    9,    9,    9,    9,    9,    4,    3,    4,    4,
-        4,   10,   11,   11,   11,   11,   11,   11,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   13,   14,
-       13,   10,   15,   16,   17,   17,   17,   17,   17,   17,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   19,    4,   20,
-        4
+        1,    2,    3,    2,    4,    5,    6,    7,    8,    5,
+        5,    9,    6,    6,    5,    6,   10,    5,    5,   11,
+       11,   11,   11,   11,   11,   11,    5,    6,    5,    5,
+        5,   12,   13,   13,   13,   13,   13,   13,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,   15,   16,
+       15,   12,   17,   18,   19,   19,   19,   19,   19,   19,
+       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
+       20,   20,   20,   20,   20,   20,   20,   21,    5,   22,
+        5
 
     } ;
 
-static const short int yy_base[881] =
+static yyconst short int yy_base[785] =
     {   0,
-        0,    0,    0,    4,   58,  138,  224, 2192,    0,    1,
-      315, 2191,  402,    0,  487,    0,   25,   39,  578,    0,
-     2198, 2201, 2201, 2185, 2188, 2201, 2201, 2201,   13, 2160,
-        7,   12,   12,   21,   10, 2143, 2141, 2154,   18, 2140,
-       69, 2139, 2137, 2201,    0, 2201, 2201, 2201, 2201,    0,
-     2201, 2201, 2201,    0,   50,    0, 2181, 2175, 2201, 2201,
-        0, 2201,   46, 2168,  131,  415, 2158, 2201, 2167, 2152,
-        0,    0, 2201,    0, 2201,    6, 2201,   11,   36, 2107,
-     2108,   30, 2111, 2101, 2108, 2108,   47, 2104, 2158,    0,
-     2201,    0,   52,    0,   13,    2, 2167, 2161,  425,  662,
-
-      506, 2164,   66, 2107,   66,  452,  105,    2,  129,  124,
-      107,  131,  138,  663,   42,  407,    0,  148,  515,  745,
-        5,  158,  421,  449,  455, 2153,    0, 2152, 2137, 2104,
-     2102,  122,  135, 2148, 2201, 2157, 2155, 2151, 2201,  192,
-     2201, 2144,  652, 2125,  132,  169,  417,  497,  370, 2108,
-     2106, 2119,  137, 2105,  648, 2104, 2102, 2201,    0, 2201,
-     2201, 2201, 2201,  686, 2201, 2201, 2201,    0, 2136, 2140,
-     2143, 2201,  692, 2107, 2105, 2201, 2102, 2201,  669, 2103,
-     2109, 2201, 2096, 2092, 2108,  410, 2201, 2201, 2201, 2201,
-     2201, 2099, 2097, 2201, 2201, 2100, 2201, 2083, 2104, 2091,
-
-     2201, 2201, 2201,  699,    0,  723,    0, 2129, 2201, 2123,
-     2201,  207,    0,    0,  734,  745,  709,    0,    0, 2201,
-        0,    0,    0, 2071, 2066, 2051, 2066, 2048,  373, 2048,
-     2060,    0, 2048,  464, 2044, 2057,    0, 2047, 2054,    0,
-     2043, 2052, 2112,  210, 2046,    0,    0, 2101, 2201,    0,
-     2201, 2029, 2109, 2107, 2102,  796,  815, 2201,  822,  841,
-      722,    0, 2201, 2105,  114, 2104,    0,  140,  488,  410,
-      729,  483,  454, 2103,  424,  691,  489,  493, 2102,  728,
-      451, 2101,  673,  741, 2091, 2095,  830,  863, 2043, 2042,
-     2044,  846,  519,  838, 2040, 2064, 2038, 2063,  738,  766,
-
-     2049, 2048,  856,  517,  711, 2047, 2018,    0,  549,  730,
-      689,  695,  776, 2201, 2005,  492, 2087, 2085, 2201, 2201,
-     2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201,
-     2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201,
-     2080, 2201,  791,  893,  898,  890,  900,    0,    0, 2024,
-     2021, 2008, 2023, 2022, 2013, 2016, 2011, 2005, 2009, 1999,
-     2011,    0, 1996, 2013, 2000, 2007, 1995,  903,  799, 2201,
-      821, 1997, 2201, 2065,  908,    0,  941,  948, 2064, 1990,
-     2005, 2005, 2060, 2055,  824,  779,  861,  869,  862,  849,
-      864,  860,  870,  865,  932, 2058,  909,  933,  934,  937,
-
-      938, 1975, 2056,  999, 2201, 2201, 2000, 2011,  935, 2013,
-     2008,    0, 2021, 2012, 2019, 2003, 2020, 2006,    0, 1990,
-        0, 2000, 1999, 1987,    0,  913,  925,    0, 2008,  790,
-     1997, 2010,    0, 1998, 2012, 2007,    0, 2000, 1962,    0,
-      943,  972, 2201,  980,  991, 1000, 1011, 1017, 1978,    0,
-     1959,    0, 1956, 1954,    0, 1960, 1956, 1949, 1969, 1953,
-     1957, 1955,    0,    0, 1961, 1024, 1043, 1995, 1991, 1981,
-     1993, 1977, 1955, 2201, 1075, 2015, 2014, 1086, 2201, 2201,
-     1945, 1945, 2201, 2007, 2010,  950, 2009,  947,  774, 2008,
-      978,  969,  981,  952,  979,  983, 1001, 2007, 2006,  992,
-
-     2201, 1098, 2201, 1961, 1949, 1948, 1977, 1946, 1961, 1944,
-     1955,  783, 1959, 1952, 1967, 1969, 1951, 1960,    0, 1936,
-        0, 1961, 1961, 1957, 1951, 1949, 1956, 1957, 1928, 1942,
-     1939, 1938, 1922,    0, 1042, 1105, 1112,    0,    0, 1911,
-     1912, 1913, 1901,  991, 1905, 1911, 1911, 1906,    0, 1938,
-     1936, 1925, 1937, 1930, 1934, 1935, 1966, 2201, 1119, 1138,
-     1907, 1894, 2201, 1960,  989, 1000,  991, 1066, 1072, 1025,
-      498, 1036, 1044, 1959, 1145, 1164, 1916,    0, 1929, 1907,
-        0, 1900, 1927, 1909, 1897, 1909, 1895, 1894, 1893, 1905,
-     1917, 1890,    0, 1904, 1914, 1887, 1896, 1885, 1903, 1015,
-
-     1153, 1898, 1882, 1881, 1868, 1860, 1864,    0,    0,    0,
-        0, 1873, 1874,    0, 1861, 1902, 1890, 1883, 1887, 1892,
-     1891, 1896, 1050, 1891, 1866, 1073, 1027, 1920, 1919, 1918,
-     1917, 1082, 1085, 1916, 1077, 1890, 1881, 1870, 1885, 1884,
-     1873,    0, 1880,    0, 1881, 1880, 1875, 1878,    0, 1849,
-     1873,    0, 1874,    0, 1846, 1875,    0, 1171, 1844, 1871,
-        0, 1830,    0, 1833, 1834, 1835, 1830, 1837, 1862, 1848,
-     1847, 1850, 1860, 1853, 1088, 2201, 1153, 1858, 1853, 1883,
-     1143, 1172, 1145, 1173, 1855, 1854, 1807, 1811, 1781, 1780,
-     1789, 1803, 1795, 1765, 1751, 1157, 1769, 1773,    0, 1764,
-
-        0, 1756, 1719,    0,    0, 1711,    0, 1731, 1771, 1741,
-     1735, 1727, 1679, 1691, 1652, 1669, 1666, 1664, 1174, 1663,
-     1616, 1614,    0, 1599,    0,    0, 1608, 1596, 1593, 1591,
-        0, 1563, 1545, 1531, 1540, 1528, 1547, 1523,    0,    0,
-     1526, 1552, 1526, 1509, 2201, 1506, 1510,    0, 1489, 1543,
-     1485, 1495,    0, 1481,    0,    0,    0,    0,    0,    0,
-     1473, 1482, 1435,    0, 1433, 1438, 1166, 1393, 1391, 1396,
-     1396,    0,    0, 1372,    0,    0, 1393, 1394, 1390, 1196,
-     2201, 2201, 1383, 1012, 1368, 1355, 1326, 1343, 2201, 1369,
-     1338, 1347, 1333, 1203,    0, 1221, 1209, 2201, 1189, 1200,
-
-     1245, 1213,    0, 1185, 1206, 1205, 1210, 1196, 1192, 1202,
-     1184, 1196, 1143, 1164, 2201,    0, 1066, 1076, 1056, 1051,
-     1035,  948,  896,  797,  756,  728,  661,  647,  633,  450,
-     1195, 1204,  408,  396,   96, 2201, 2201, 1256, 1276, 1296,
-     1316, 1336, 1354, 1365, 1193, 1377, 1389, 1407, 1421, 1429,
-     1447, 1467, 1487, 1504, 1522, 1538, 1546, 1562, 1578, 1594,
-     1612, 1632, 1194, 1646, 1658, 1676, 1696, 1716, 1734, 1750,
-     1222, 1766, 1784, 1205, 1800, 1816, 1223, 1830, 1848, 1868
+        0,    0,    0,    4,   58,  138,  224, 2291,    0,    1,
+        3,   23,  311,    0,  396,    0,   50,   70,  487,    0,
+     2298, 2300, 2300, 2285, 2288, 2300, 2300, 2300,  131, 2260,
+        4,    0,   24,   54,   18, 2243, 2241, 2254,    5, 2240,
+       74, 2239, 2237, 2300,    0, 2300, 2300, 2300, 2300,  145,
+     2300, 2300, 2300,    0,  144,    0, 2281, 2275, 2300, 2300,
+        0, 2300,    5, 2268,  329,  338, 2258, 2300, 2267, 2252,
+        0, 2274, 2300,    0, 2300,   22, 2300,   54,   68,  105,
+       34,  109,    6,  117,  124,  133,  357,  135, 2264,    0,
+     2300,    0,  134,    0,   97,    2, 2273, 2267,  416,  571,
+
+      580,  130, 2214,  317,    0,   17,  591,  652,  197,  336,
+      333,  358,  330, 2260,    0, 2259, 2244, 2211, 2209,  340,
+      349, 2255, 2300, 2264, 2262, 2258, 2300,  366, 2300, 2251,
+      428, 2232,  159,  373,  146,  535,  161, 2215, 2213, 2226,
+      168, 2212,  577, 2211, 2209, 2300,    0, 2300, 2300, 2300,
+     2300,  615, 2300, 2300, 2300,    0, 2243, 2247, 2250, 2300,
+      621, 2214, 2212, 2300, 2209, 2300,  598, 2210, 2216, 2300,
+     2203, 2199, 2215,  290, 2300, 2300, 2300, 2300, 2300, 2206,
+     2204, 2300, 2300, 2207, 2300, 2190, 2211, 2198, 2300, 2300,
+     2300,  630,    0,  659,    0, 2236, 2300, 2230, 2300,  663,
+
+        0,    0,  652,  688,  659,    0,    0, 2300,    0, 2300,
+     2233,    0, 2177, 2172,  364,  365,  401,  648,  620,  602,
+     2230,   55,  661,  577,  618, 2229,  615,  404, 2228,  623,
+      625, 2227,  210, 2161,    0,    0, 2216, 2300,    0, 2300,
+     2144, 2224, 2222, 2217,  726,  737, 2300,  715,  746,  753,
+        0,  152, 2220,    0, 2210, 2214,  759,  785, 2162, 2161,
+     2163,  779,  399,  429, 2159, 2183, 2157, 2182,  751,  414,
+     2168, 2167,  395,  422,  666, 2166, 2137,    0,  575,  715,
+      599,  712,  717, 2300, 2124,  719, 2206, 2204, 2300, 2300,
+     2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300,
+
+     2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300,
+     2199, 2300,  813,  817,  826,  831,  823,  830,    0,    0,
+     2143,  722,  745,  624,  791,  683,  789,  784,  708,  790,
+      757,  793, 2201,  782,  794,  787,  816,  817,  865,  834,
+     2300,  837, 2131, 2300, 2199,  851,    0,  858,  897, 2198,
+     2124, 2139, 2139, 2194, 2189, 2110, 2191,  915, 2300, 2300,
+     2135, 2146,  847, 2148, 2143,    0, 2156, 2147, 2154, 2138,
+     2155, 2141,    0, 2125,    0, 2135, 2134, 2122,    0,  833,
+      267,    0, 2143,  852, 2132, 2145,    0, 2133, 2147, 2142,
+        0, 2135, 2097,    0,  879,  891, 2300,  909,  934, 2113,
+
+     2167,  853, 2166,  882,  886, 2165,  895,  896,  899,  901,
+      900,  907,  916, 2164, 2163,  917,  928,  418,  940,  985,
+      991,  995,  999, 1003, 2101, 2300, 1001, 2161, 2160, 1014,
+     2300, 2300, 2091, 2091, 2300, 2153, 2300, 1032, 2300, 2112,
+     2100, 2099, 2128, 2097, 2112, 2095, 2106,  881, 2110, 2103,
+     2118, 2120, 2102, 2111,    0, 2087,    0, 2112, 2112, 2108,
+     2102, 2100, 2107, 2108, 2079, 2093, 2090, 2089, 2073,    0,
+      938,  990, 1039,    0, 2129,  942,  945,  959,  960,  970,
+      967,  921, 1011,  954, 2128, 1064, 1068, 1072, 1079, 1083,
+     1087, 1091, 2130, 2300, 1077, 1110, 2071, 2058, 2300, 1090,
+
+     1117, 2082,    0, 2095, 2073,    0, 2066, 2093, 2075, 2063,
+     2075, 2061, 2060, 2059, 2071, 2083, 2056,    0, 2070, 2080,
+     2034, 2017, 2005, 2023, 1066, 1124, 2016, 1999, 1996, 1983,
+     1038, 1097, 2047, 2046, 2045, 2044, 1012, 1098, 2043, 1100,
+     1149, 1153, 1157, 1163, 1167, 1176, 1183, 1118, 2011, 1986,
+     2015, 1997, 1972, 1986, 1985, 1972,    0, 1978,    0, 1963,
+     1952, 1946, 1949,    0, 1918, 1941,    0, 1941,    0, 1906,
+     1913,    0, 1169, 1863, 1880,    0, 1829, 1862, 1111, 1156,
+     1116, 1165, 1198, 1202, 1209, 1217, 1224, 1228, 1238, 1172,
+     2300, 1193, 1833, 1828, 1829, 1827, 1769, 1778, 1735, 1733,
+
+     1744, 1757, 1755, 1729, 1710, 1194, 1720, 1726,    0, 1718,
+        0, 1718, 1671, 1691, 1669, 1207, 1658, 1244, 1248, 1252,
+     1269, 1278, 1284, 1291, 1591, 1617, 1599, 1594,    0, 1580,
+        0,    0, 1588, 1565, 1546, 1532,    0, 1531, 1530, 1528,
+     1538, 1526, 1545, 1509,    0, 1434, 1295, 1416, 1299, 1305,
+     1309, 1314, 1318,    0, 1368, 1367, 1378,    0, 1363,    0,
+        0,    0,    0,    0,    0, 1360, 1386, 1369,    0, 1324,
+     1393, 1241, 1333, 1337, 1346, 1350,    0,    0, 1341,    0,
+        0, 1346, 1309, 1356, 1220, 1361, 1366, 1370, 1374, 1309,
+     1308, 1270, 1217, 2300, 1313, 1335, 1343, 1270, 1238,    0,
+
+     1233, 1339, 1274, 1215, 1226, 1376, 1348,    0, 1206, 1219,
+     1347, 1203, 1188, 1356, 1181, 1146, 1361, 1015, 1011, 1345,
+        0,  993,  995,  950,  946,  940,  966,  909,  750,  682,
+      597,  586,  543,  434,  429, 1415, 1423,  319,  206,   26,
+     2300, 2300, 1449, 1471, 1493, 1515, 1537, 1556, 1567, 1398,
+     1580, 1593, 1612, 1628, 1636, 1656, 1678, 1700, 1718, 1737,
+     1747, 1764, 1780, 1797, 1816, 1838, 1402, 1852, 1872, 1894,
+     1916, 1936, 1953, 1405, 1969, 1989, 1245, 2005, 2022, 2043,
+     1625, 2052, 2072, 2094
     } ;
 
-static const short int yy_def[881] =
+static yyconst short int yy_def[785] =
     {   0,
-      838,  838,  839,  839,  840,  840,  837,    7,  841,  841,
-      837,   11,   11,   13,   11,   15,  842,  842,  837,   19,
-      837,  837,  837,  843,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  844,  837,  837,  837,  837,  837,
-      837,  837,  837,  845,  837,  846,  847,  848,  837,  837,
-      846,  837,  846,  846,  837,  837,  846,  837,  846,  846,
-      846,  849,  837,  846,  837,  850,  837,  849,  849,  849,
-      849,  849,  849,  849,  849,  849,  849,  849,  837,  846,
-      837,  846,  846,  851,  852,  853,  854,  855,  846,  837,
-
-      837,  856,  850,  857,  856,  856,  856,  856,  856,  856,
-      856,  856,  856,  856,  856,  837,  858,   99,  837,  850,
-      859,  859,  859,  859,  859,  837,  846,  846,  846,  850,
-      857,  856,  856,  837,  837,  860,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  844,  837,
-      837,  837,  837,  837,  837,  837,  837,  845,  837,  843,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-
-      837,  837,  837,  837,  845,  837,  846,  847,  837,  861,
-      837,  862,  846,  846,  837,  837,  837,  863,  846,  837,
-      846,  864,  865,  850,  865,  864,  864,  864,  864,  864,
-      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
-      864,  864,  837,  866,  837,  867,  868,  868,  837,  869,
-      837,  869,  870,  837,  861,  837,  837,  837,  837,  837,
-      837,  871,  837,  856,  865,  872,  873,  856,  856,  856,
-      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
-      856,  856,  856,  856,  837,  861,  837,  837,  837,  837,
-      837,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-
-      865,  865,  865,  865,  865,  865,  865,  874,  875,  875,
-      875,  875,  875,  837,  837,  856,  876,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      861,  837,  862,  837,  862,  837,  837,  863,  865,  865,
-      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
-      864,  864,  864,  864,  864,  864,  864,  837,  866,  837,
-      866,  837,  837,  837,  837,  877,  837,  837,  871,  865,
-      865,  837,  872,  873,  856,  856,  856,  856,  856,  856,
-      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
-
-      856,  837,  837,  837,  837,  837,  837,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  878,
-      875,  875,  837,  837,  862,  837,  862,  837,  865,  864,
-      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
-      864,  864,  864,  864,  864,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  877,  837,  837,  837,  837,
-      865,  865,  837,  837,  856,  856,  856,  856,  856,  856,
-      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
-
-      837,  837,  837,  865,  865,  865,  865,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-      865,  865,  865,  878,  875,  837,  837,  865,  864,  864,
-      864,  864,  864,  864,  864,  864,  864,  864,  864,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      865,  865,  837,  856,  856,  856,  856,  856,  856,  856,
-      856,  856,  856,  856,  837,  837,  865,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-
-      865,  865,  865,  865,  865,  864,  864,  864,  864,  864,
-      864,  864,  864,  864,  864,  837,  837,  837,  837,  837,
-      837,  837,  879,  865,  865,  856,  856,  856,  856,  856,
-      856,  856,  856,  856,  856,  865,  865,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-      865,  865,  864,  864,  864,  864,  864,  837,  837,  837,
-      837,  837,  837,  837,  879,  837,  879,  865,  865,  856,
-      856,  856,  856,  856,  865,  865,  865,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-
-      865,  865,  865,  864,  864,  864,  864,  837,  837,  837,
-      837,  837,  837,  837,  865,  865,  856,  856,  856,  856,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  864,
-      837,  880,  837,  837,  837,  837,  837,  865,  865,  856,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
-      865,  865,  865,  865,  837,  880,  880,  837,  837,  837,
-      837,  865,  865,  865,  865,  865,  865,  865,  837,  880,
-      837,  837,  837,  837,  865,  865,  865,  837,  837,  880,
-      837,  837,  865,  865,  865,  837,  837,  837,  865,  865,
-
-      837,  837,  865,  865,  837,  837,  865,  837,  837,  865,
-      837,  837,  865,  837,  837,  865,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,    0,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837
+      743,  743,  744,  744,  745,  745,  742,    7,  746,  746,
+        7,    7,    7,   13,    7,   15,  747,  747,  742,   19,
+      742,  742,  742,  748,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  749,  742,  742,  742,  742,  742,
+      742,  742,  742,  750,  742,  751,  752,  753,  742,  742,
+      751,  742,  751,  751,  742,  742,  751,  742,  751,  751,
+      751,  754,  742,  751,  742,  755,  742,  754,  754,  754,
+      754,  754,  754,  754,  754,  754,  754,  754,  742,  751,
+      742,  751,  751,  756,  757,  758,  759,  760,  751,  742,
+
+      742,  755,  761,  742,  762,   99,  742,  755,  763,  763,
+      763,  763,  763,  742,  751,  751,  751,  755,  761,  754,
+      754,  742,  742,  764,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  749,  742,  742,  742,
+      742,  742,  742,  742,  742,  750,  742,  748,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  750,  742,  751,  752,  742,  765,  742,  766,
+
+      751,  751,  742,  742,  742,  767,  751,  742,  751,  742,
+      754,  768,  755,  768,  754,  754,  754,  754,  754,  754,
+      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
+      754,  742,  769,  742,  770,  771,  771,  742,  772,  742,
+      772,  773,  742,  765,  742,  742,  742,  742,  742,  742,
+      774,  768,  775,  776,  742,  765,  742,  742,  742,  742,
+      742,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  777,  778,  778,
+      778,  778,  778,  742,  742,  754,  779,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      765,  742,  766,  766,  742,  766,  742,  742,  767,  768,
+      768,  754,  754,  754,  754,  754,  754,  754,  754,  754,
+      754,  754,  754,  754,  754,  754,  754,  754,  780,  769,
+      742,  769,  742,  742,  742,  742,  781,  742,  742,  774,
+      768,  768,  742,  775,  776,  742,  742,  742,  742,  742,
+      742,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  782,  778,  778,  742,  742,  742,  768,
+
+      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
+      754,  754,  754,  754,  754,  754,  780,  417,  780,  780,
+      780,  780,  780,  780,  742,  742,  742,  781,  742,  742,
+      742,  742,  768,  768,  742,  742,  742,  742,  742,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  782,
+      778,  742,  742,  768,  754,  754,  754,  754,  754,  754,
+      754,  754,  754,  754,  754,  780,  780,  780,  780,  780,
+      780,  780,  742,  742,  742,  742,  768,  768,  742,  742,
+
+      742,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
+      780,  780,  780,  780,  780,  780,  780,  783,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  754,  754,  754,
+      754,  754,  780,  780,  780,  780,  780,  780,  780,  783,
+      742,  783,  768,  768,  768,  768,  768,  768,  768,  768,
+
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  754,  754,  754,  754,  780,  780,  780,
+      780,  780,  780,  780,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  754,  780,  784,  780,  780,
+      780,  780,  780,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  780,
+      784,  784,  780,  780,  780,  780,  768,  768,  768,  768,
+      768,  768,  768,  780,  784,  780,  780,  780,  780,  768,
+      768,  768,  689,  742,  784,  689,  689,  768,  768,  768,
+
+      689,  689,  689,  768,  768,  689,  689,  768,  768,  742,
+      689,  768,  742,  689,  768,  742,  689,  768,  742,  689,
+      768,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,    0,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742
     } ;
 
-static const short int yy_nxt[2293] =
+static yyconst short int yy_nxt[2392] =
     {   0,
-       23,   23,   23,   23,   23,   23,   23,   23,  837,  263,
-      837,   25,  263,  308,  837,   25,   95,   95,  251,  204,
-      204,  204,  204,  204,  204,  135,  135,  135,  135,  248,
-      837,  137,  173,  173,  173,  173,  173,  173,  173,  135,
-      135,  135,  135,  175,  177,  137,  179,  187,  180,  263,
-      192,  206,  206,  206,  206,  181,  244,  176,  837,   26,
-      188,  178,  212,   26,   28,  182,  183,  184,  224,   28,
-      193,  185,  186,  263,  273,  226,  213,   29,   29,   29,
-       29,   29,   29,   29,  138,  227,  225,   96,   96,  252,
-       30,   31,   32,   33,   34,   35,   36,   37,  138,  232,
-
-      228,   38,  249,   39,  229,  233,  234,   40,   41,  195,
-       42,   43,  263,  284,  263,  196,  197,   44,  239,   45,
-      198,  199,   46,   47,  240,  200,  245,   48,  224,  263,
-      268,  263,  265,  241,   49,   50,  263,   51,  263,   52,
-      269,   53,  263,   54,   28,  263,  225,  263,  215,   28,
-      216,  216,  216,  216,  216,  216,  216,   29,   29,   29,
-       29,   29,   29,   29,  837,  263,  308,  257,  175,  192,
-       30,   31,   32,   33,   34,   35,   36,   37,  380,  272,
-      381,   38,  176,   39,  278,  836,  270,   40,   41,  193,
-       42,   43,  277,  206,  206,  206,  206,   44,  274,   45,
-
-      279,  177,   46,   47,  275,  276,  280,   48,  217,  344,
-      345,  316,  370,  371,   49,   50,  218,   51,  178,   52,
-      385,   53,  310,   54,   22,   55,   55,   55,   55,   56,
+       23,   23,   23,   23,   23,   23,   23,   23,  742,   97,
+      742,   25,  742,  210,   98,   25,   95,   95,  240,   99,
+      742,  200,  100,  101,  101,  101,  101,  101,  101,   97,
+       93,  742,  165,  742,   98,  201,  246,  180,  742,   99,
+      163,  210,  100,  101,  101,  101,  101,  101,  101,  166,
+      123,  123,  123,  123,  164,  175,  125,  181,  167,   26,
+      168,  210,  210,   26,   28,  102,  103,  169,  176,   28,
+      123,  123,  123,  123,  224,  210,  125,   29,   29,   29,
+       29,   29,   29,   29,  213,  102,  103,   96,   96,  241,
+       30,   31,   32,   33,   34,   35,   36,   37,  170,  171,
+
+      172,   38,  214,   39,  173,  174,  220,   40,   41,  126,
+       42,   43,  210,  237,  183,  741,  210,   44,  215,   45,
+      184,  185,   46,   47,  210,  186,  187,   48,  216,  126,
+      188,  210,  217,  329,   49,   50,  218,   51,  233,   52,
+      210,   53,  210,   54,   28,  194,  194,  194,  194,   28,
+      161,  161,  161,  161,  161,  161,  161,   29,   29,   29,
+       29,   29,   29,   29,  192,  192,  192,  192,  192,  192,
+       30,   31,   32,   33,   34,   35,   36,   37,  221,  219,
+      167,   38,  168,   39,  222,  223,  238,   40,   41,  169,
+       42,   43,  213,  226,  225,  163,  252,   44,  175,   45,
+
+      180,  227,   46,   47,  210,  278,  231,   48,  234,  164,
+      214,  176,  341,  342,   49,   50,  351,   51,  352,   52,
+      181,   53,  740,   54,   22,   55,   55,   55,   55,   56,
        57,   56,   56,   56,   56,   58,   59,   60,   61,   62,
        63,   64,   56,   65,   66,   66,   66,   66,   66,   66,
        67,   68,   69,   70,   56,   71,   72,   72,   72,   72,
@@ -651,254 +632,265 @@ static const short int yy_nxt[2293] =
        78,   79,   80,   72,   72,   81,   82,   72,   83,   84,
 
        72,   85,   72,   86,   72,   87,   72,   72,   88,   72,
-       72,   89,   90,   91,   92,   22,   55,   55,   55,   55,
-       56,   97,   56,   56,   56,   56,   98,   59,   60,   61,
-       62,   99,   64,   56,  100,  101,  101,  101,  101,  101,
-      101,   67,   68,   69,   70,   56,   71,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,   73,   74,   75,   56,  103,  104,  102,
-      102,  105,  106,  107,  102,  102,  108,  109,  102,  110,
-      111,  102,  112,  102,  113,  102,  114,  102,  102,  115,
-
-      102,  102,   89,   90,   91,   92,  116,  187,  206,  206,
-      206,  206,  835,  117,  285,  834,   56,  263,  118,   56,
-      188,  119,  119,  119,  119,  119,  119,  119,  263,  308,
-       56,  263,  215,   56,  216,  216,  216,  216,  216,  216,
-      216,  212,  354,  333,  256,  257,  257,  257,  257,  257,
-      257,  179,  355,  180,  831,  213,  263,  308,  263,  263,
-      181,  263,  263,  308,  120,  334,  121,  121,  122,  121,
-      121,  121,  121,  121,  123,  121,  124,  121,  121,  125,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  126,
-      263,  387,  127,   22,  128,  263,  263,  311,   22,  263,
-
-      263,   56,  392,  129,   56,  263,   22,   22,   22,   22,
-       22,   22,   22,  258,   22,   56,  270,  312,   56,  399,
-      271,  391,  258,  259,  313,  260,  260,  260,  260,  260,
-      260,  260,  287,  359,  288,  288,  288,  288,  288,  288,
-      288,  182,  183,  184,  360,  361,   56,  185,  186,  130,
-      131,  413,  386,  102,  132,  102,  263,  308,  102,  133,
-      397,  102,  102,  390,  102,  414,  102,  633,  102,  434,
-      396,  102,  394,  435,  134,   56,   22,  127,  139,  140,
-      140,  140,  140,  139,  141,  139,  139,  139,  139,  141,
-      139,  139,  139,  139,  142,  139,  139,  143,  143,  143,
-
-      143,  143,  143,  143,  139,  139,  139,  139,  139,  139,
-      144,  145,  146,  147,  148,  149,  150,  151,  139,  139,
-      139,  152,  139,  153,  139,  139,  139,  154,  155,  139,
-      156,  157,  139,  139,  139,  139,  139,  158,  139,  159,
-      139,  139,  160,  161,  139,  139,  139,  162,  139,  139,
-      139,  139,  139,  139,  163,  164,  139,  165,  139,  166,
-      139,  167,  139,  168,  139,  169,  139,  139,  139,  258,
-      263,  173,  173,  173,  173,  173,  173,  173,  830,  259,
-      263,  260,  260,  260,  260,  260,  260,  260,  195,  324,
-      325,  326,  327,  829,  196,  197,  263,  308,  263,  198,
-
-      199,  828,  263,  308,  200,  204,  204,  204,  204,  204,
-      204,  173,  173,  173,  173,  173,  173,  173,  204,  204,
-      204,  204,  204,  204,  206,  206,  206,  206,  347,  347,
-      347,  347,  347,  347,  281,  263,  263,  263,  308,  261,
-      282,  378,  378,  378,  378,  378,  378,  262,  263,  283,
-      289,  400,  290,  346,  346,  346,  346,  346,  346,  346,
-      393,  436,  215,  291,  216,  216,  216,  216,  216,  216,
-      216,  394,  395,  437,  423,  424,  442,  292,  827,  293,
-      294,  263,  295,  263,  308,  296,  263,  297,  298,  299,
-      300,  301,  302,  344,  345,  303,  304,  305,  388,  306,
-
-      425,  370,  371,  258,  398,  826,  426,  224,  389,  401,
-      441,  265,  427,  287,  307,  257,  257,  257,  257,  257,
-      257,  257,  258,  370,  371,  225,  525,  585,  428,  586,
-      526,  263,  287,  825,  257,  257,  257,  257,  257,  257,
-      257,  377,  377,  377,  377,  377,  377,  377,  258,  404,
-      404,  404,  404,  404,  404,  404,  263,  566,  259,  486,
-      260,  260,  260,  260,  260,  260,  260,  263,  263,  263,
-      258,  263,  263,  375,  415,  416,  263,  263,  417,  408,
-      287,  376,  288,  288,  288,  288,  288,  288,  288,  409,
-      418,  431,  485,  410,  444,  444,  444,  444,  411,  445,
-
-      446,  447,  445,  432,  466,  466,  466,  467,  412,  346,
-      346,  346,  346,  346,  346,  346,  263,  490,  433,  347,
-      347,  347,  347,  347,  347,  487,  448,  475,  475,  475,
-      475,  475,  475,  488,  489,  468,  491,  492,  469,  263,
-      263,  263,  493,  470,  263,  263,  494,  471,  477,  824,
-      263,  308,  823,  472,  263,  479,  520,  263,  448,  263,
-      377,  377,  377,  377,  377,  377,  377,  378,  378,  378,
-      378,  378,  378,  505,  522,  521,  263,  478,  506,  263,
-      308,  444,  444,  444,  444,  263,  263,  523,  263,  507,
-      263,  496,  445,  446,  447,  445,  263,  497,  263,  263,
-
-      495,  444,  444,  444,  444,  499,  477,  263,  263,  478,
-      498,  535,  445,  446,  447,  445,  570,  500,  404,  404,
-      404,  404,  404,  404,  404,  466,  466,  466,  466,  565,
-      564,  536,  263,  536,  263,  502,  537,  537,  537,  537,
-      537,  537,  537,  263,  466,  466,  466,  466,  568,  263,
-      308,  263,  676,  677,  567,  656,  468,  572,  571,  469,
-      574,  628,  792,  626,  470,  610,  569,  502,  471,  792,
-      611,  822,  627,  263,  472,  468,  573,  657,  469,  263,
-      263,  550,  479,  470,  263,  821,  551,  471,  820,  263,
-      676,  677,  263,  472,  475,  475,  475,  475,  475,  475,
-
-      559,  632,  559,  681,  634,  560,  560,  560,  560,  560,
-      560,  560,  575,  819,  575,  818,  635,  576,  576,  576,
-      576,  576,  576,  576,  537,  537,  537,  537,  537,  537,
-      537,  537,  537,  537,  537,  537,  537,  537,  560,  560,
-      560,  560,  560,  560,  560,  477,  630,  629,  682,  683,
-      263,  631,  263,  684,  680,  676,  677,  560,  560,  560,
-      560,  560,  560,  560,  576,  576,  576,  576,  576,  576,
-      576,  477,  658,  658,  658,  658,  658,  658,  658,  263,
-      263,  263,  767,  576,  576,  576,  576,  576,  576,  576,
-      658,  658,  658,  658,  658,  658,  658,  732,  789,  790,
-
-      817,  205,  348,  205,  348,  816,  733,  734,  833,  205,
-      348,  719,  767,  717,  832,  832,  832,  832,  832,  832,
-      832,  440,  440,  832,  832,  832,  832,  832,  832,  832,
-      379,  476,  379,  476,  815,  814,  813,  812,  379,  476,
-      718,  811,  750,  720,  810,  809,  808,  807,  806,  805,
-      804,  803,  802,  801,  800,  780,   22,   22,   22,   22,
+       72,   89,   90,   91,   92,  104,  458,   97,  194,  194,
+      194,  194,  105,  303,  255,   56,  739,  106,   56,  459,
+      107,  107,  107,  107,  107,  107,  107,  210,  278,   56,
+      210,  278,   56,  210,  278,  304,  203,  210,  204,  204,
+      204,  204,  204,  204,  204,  203,  210,  204,  204,  204,
+      204,  204,  204,  204,  210,  210,  278,  194,  194,  194,
+      194,  210,  210,  108,  103,  109,  109,  110,  109,  109,
+      109,  109,  109,  111,  109,  112,  109,  109,  113,  109,
+      109,  109,  109,  109,  109,  109,  109,  109,  114,  283,
+
+      280,  115,   22,  116,  217,  165,  205,   22,  210,  281,
+       56,  210,  117,   56,  206,   22,   22,   22,   22,   22,
+       22,   22,  166,   22,   56,  286,  282,   56,  228,  323,
+      385,  367,  200,  736,  229,  245,  246,  246,  246,  246,
+      246,  246,  386,  230,  322,  368,  201,  161,  161,  161,
+      161,  161,  161,  161,  380,   56,  486,  387,  118,  119,
+      381,  487,   72,  120,   72,  369,  370,   72,  121,  371,
+       72,   72,  336,   72,  388,   72,  382,   72,  389,  735,
+       72,  372,  324,  122,   56,   22,  115,  127,  128,  128,
+      128,  128,  127,  129,  127,  127,  127,  127,  129,  127,
+
+      127,  127,  127,  130,  127,  127,  131,  131,  131,  131,
+      131,  131,  131,  127,  127,  127,  127,  127,  127,  132,
+      133,  134,  135,  136,  137,  138,  139,  127,  127,  127,
+      140,  127,  141,  127,  127,  127,  142,  143,  127,  144,
+      145,  127,  127,  127,  127,  127,  146,  127,  147,  127,
+      127,  148,  149,  127,  127,  127,  150,  127,  127,  127,
+      127,  127,  127,  151,  152,  127,  153,  127,  154,  127,
+      155,  127,  156,  127,  157,  127,  127,  127,  247,  170,
+      171,  172,  210,  278,  210,  173,  174,  247,  248,  734,
+      249,  249,  249,  249,  249,  249,  249,  248,  247,  249,
+
+      249,  249,  249,  249,  249,  249,  210,  278,  257,  210,
+      258,  258,  258,  258,  258,  258,  258,  183,  294,  295,
+      296,  297,  210,  184,  185,  210,  733,  210,  186,  187,
+      210,  210,  210,  188,  192,  192,  192,  192,  192,  192,
+      161,  161,  161,  161,  161,  161,  161,  732,  250,  192,
+      192,  192,  192,  192,  192,  210,  251,  259,  333,  260,
+      194,  194,  194,  194,  314,  315,  316,  314,  210,  328,
+      261,  317,  317,  317,  317,  317,  317,  317,  318,  318,
+      318,  318,  318,  318,  262,  334,  263,  264,  403,  265,
+      210,  335,  266,  338,  267,  268,  269,  270,  271,  272,
+
+      327,  337,  273,  274,  275,  203,  276,  204,  204,  204,
+      204,  204,  204,  204,  213,  210,  390,  325,  252,  210,
+      278,  277,  210,  278,  210,  278,  210,  326,  391,  210,
+      330,  731,  214,  247,  348,  348,  348,  348,  348,  348,
+      348,  331,  332,  257,  247,  246,  246,  246,  246,  246,
+      246,  246,  210,  247,  257,  405,  246,  246,  246,  246,
+      246,  246,  246,  248,  210,  249,  249,  249,  249,  249,
+      249,  249,  349,  349,  349,  349,  349,  349,  358,  358,
+      358,  358,  358,  358,  358,  408,  730,  377,  378,  210,
+      401,  210,  247,  396,  210,  395,  210,  210,  210,  331,
+
+      210,  210,  257,  346,  258,  258,  258,  258,  258,  258,
+      258,  347,  362,  379,  314,  315,  316,  314,  314,  315,
+      316,  314,  363,  210,  210,  402,  364,  398,  398,  398,
+      398,  365,  314,  315,  316,  314,  341,  342,  410,  341,
+      342,  366,  317,  317,  317,  317,  317,  317,  317,  318,
+      318,  318,  318,  318,  318,  404,  407,  406,  413,  399,
+      210,  411,  409,  414,  412,  429,  417,  417,  417,  418,
+      427,  427,  427,  427,  427,  427,  456,  348,  348,  348,
+      348,  348,  348,  348,  415,  441,  210,  278,  461,  210,
+      442,  399,  462,  210,  430,  457,  416,  419,  210,  278,
+
+      421,  443,  210,  210,  431,  422,  210,  210,  210,  423,
+      398,  398,  398,  398,  210,  424,  349,  349,  349,  349,
+      349,  349,  429,  210,  210,  510,  430,  511,  210,  417,
+      417,  417,  417,  475,  358,  358,  358,  358,  358,  358,
+      358,  742,  742,  742,  742,  210,  278,  471,  472,  210,
+      472,  438,  210,  473,  473,  473,  473,  473,  473,  473,
+      419,  210,  729,  421,  476,  481,  210,  210,  422,  477,
+      728,  478,  423,  488,  210,  479,  727,  210,  424,  482,
+      726,  483,  725,  438,  480,  485,  742,  742,  742,  742,
+      538,  484,  742,  742,  742,  742,  742,  742,  742,  742,
+
+      742,  742,  742,  742,  742,  742,  742,  742,  431,  473,
+      473,  473,  473,  473,  473,  473,  531,  532,  210,  210,
+      427,  427,  427,  427,  427,  427,  540,  489,  495,  533,
+      495,  491,  724,  496,  496,  496,  496,  496,  496,  496,
+      490,  534,  723,  537,  535,  210,  500,  722,  500,  536,
+      492,  501,  501,  501,  501,  501,  501,  501,  473,  473,
+      473,  473,  473,  473,  473,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  721,  580,  539,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  496,  496,  496,  496,
+
+      496,  496,  496,  541,  210,  210,  571,  210,  542,  501,
+      501,  501,  501,  501,  501,  501,  544,  429,  210,  578,
+      591,  592,  543,  210,  429,  546,  545,  547,  572,  496,
+      496,  496,  496,  496,  496,  496,  501,  501,  501,  501,
+      501,  501,  501,  573,  573,  573,  573,  573,  573,  573,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  581,  210,  742,  742,  742,  742,  742,  742,
+      742,  742,  210,  579,  591,  592,  582,  742,  742,  742,
+      742,  614,  616,  583,  742,  742,  742,  742,  573,  573,
+      573,  573,  573,  573,  573,  591,  592,  719,  584,  742,
+
+      742,  742,  742,  742,  742,  742,  742,  587,  585,  586,
+      742,  742,  742,  742,  210,  718,  588,  589,  742,  742,
+      742,  742,  694,  695,  615,  742,  742,  742,  742,  742,
+      742,  742,  742,  716,  638,  617,  672,  715,  619,  742,
+      742,  742,  742,  639,  640,  742,  742,  742,  742,  742,
+      742,  742,  648,  742,  742,  742,  742,  672,  620,  713,
+      618,  701,  623,  394,  394,  706,  621,  420,  712,  622,
+      742,  742,  742,  742,  420,  646,  709,  708,  624,  742,
+      742,  742,  742,  420,  649,  742,  742,  742,  742,  705,
+      420,  647,  742,  742,  742,  742,  742,  742,  742,  742,
+
+      742,  742,  742,  742,  704,  650,  742,  742,  742,  742,
+      742,  742,  742,  742,  651,  742,  742,  742,  742,  742,
+      742,  742,  742,  653,  420,  742,  742,  742,  742,  672,
+      685,  420,  700,  673,  742,  742,  742,  742,  742,  742,
+      742,  742,  699,  698,  670,  692,  652,  742,  742,  742,
+      742,  742,  742,  742,  742,  674,  684,  742,  742,  742,
+      742,  676,  742,  742,  742,  742,  675,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  703,
+      710,  702,  707,  711,  686,  420,  691,  714,  687,  420,
+      689,  688,  420,  420,  693,  420,  420,  420,  420,  720,
+
+      420,  717,  420,  690,  420,  420,  420,  696,  193,  672,
+      193,  420,  319,  420,  319,  350,  193,  350,  420,  683,
+      319,  682,  681,  350,  697,  680,  420,  738,  679,  678,
+      677,  697,  672,  420,  737,  737,  737,  737,  737,  737,
+      737,  210,  737,  737,  737,  737,  737,  737,  737,   22,
+       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   22,   22,   22,   24,   24,   24,   24,
+       22,   24,   24,   24,   24,   24,   24,   24,   24,   24,
        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-       24,   24,   24,   24,   24,   24,   27,   27,   27,   27,
+       24,   24,   24,   27,   27,   27,   27,   27,   27,   27,
 
        27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   27,   27,   27,   27,   27,   94,   94,   94,   94,
+       27,   27,   27,   27,   27,   94,   94,   94,   94,   94,
        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   94,   94,   94,   94,   94,  136,  136,  136,  136,
-      136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
-      136,  136,  136,  136,  136,  136,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  799,  170,  170,
-      170,  170,  170,  170,  203,  203,  203,  203,  203,  203,
-      207,  207,  207,  798,  797,  767,  207,  796,  795,  794,
-      207,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      208,  208,  793,  208,  208,  208,  208,  208,  208,  210,
-      210,  210,  210,  210,  210,  210,  210,  210,  210,  210,
-      791,  210,  210,  210,  210,  210,  210,  222,  788,  222,
-      787,  222,  222,  786,  785,  222,  784,  222,  222,  223,
-      223,  783,  782,  223,  781,  223,  223,  246,  246,  246,
-      246,  246,  246,  246,  767,  246,  246,  246,  246,  246,
-      246,  246,  246,  246,  246,  779,  246,  247,  247,  247,
-      247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
-      247,  247,  247,  247,  247,  778,  247,  250,  250,  250,
-      250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-
-      250,  250,  250,  250,  250,  250,  253,  253,  253,  253,
-      253,  253,  253,  253,  253,  253,  253,  777,  253,  253,
-      253,  253,  253,  253,  255,  255,  255,  255,  255,  255,
-      255,  255,  255,  255,  255,  776,  255,  255,  255,  255,
-      255,  255,  264,  775,  264,  774,  264,  773,  264,  264,
-      263,  772,  264,  771,  264,  264,  266,  266,  770,  769,
-      768,  266,  266,  266,  286,  286,  286,  286,  767,  286,
-      286,  286,  286,  286,  286,  765,  286,  286,  286,  286,
-      286,  286,  309,  309,  309,  764,  309,  763,  309,  309,
-      762,  761,  309,  760,  309,  309,  317,  317,  317,  317,
-
-      317,  317,  317,  317,  317,  317,  317,  759,  317,  317,
-      317,  317,  317,  317,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  758,  341,  341,  341,  341,
-      341,  341,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  343,  222,  757,  222,  756,  222,  222,  755,  754,
-      222,  753,  222,  222,  349,  752,  349,  751,  349,  349,
-      263,  263,  349,  263,  349,  349,  369,  369,  369,  369,
-      369,  369,  369,  369,  369,  369,  369,  369,  369,  369,
-      369,  369,  369,  369,  369,  369,  246,  246,  246,  246,
-
-      246,  246,  246,  749,  246,  246,  246,  246,  246,  246,
-      246,  246,  246,  246,  748,  246,  247,  247,  247,  247,
-      247,  247,  247,  747,  247,  247,  247,  247,  247,  247,
-      247,  247,  247,  247,  250,  250,  250,  250,  250,  250,
-      250,  746,  250,  250,  250,  250,  250,  250,  250,  250,
-      250,  250,  253,  253,  253,  253,  253,  253,  253,  253,
-      253,  253,  253,  745,  253,  253,  253,  253,  253,  253,
-      383,  744,  383,  743,  383,  742,  383,  383,  741,  740,
-      383,  739,  383,  383,  384,  384,  384,  384,  384,  384,
-      738,  384,  384,  384,  384,  384,  384,  384,  384,  384,
-
-      384,  384,  384,  384,  309,  309,  309,  737,  309,  736,
-      309,  309,  735,  731,  309,  730,  309,  309,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  729,
-      317,  317,  317,  317,  317,  317,  534,  728,  534,  727,
-      534,  534,  726,  725,  534,  724,  534,  534,  675,  675,
-      675,  675,  675,  675,  675,  675,  675,  675,  675,  675,
-      675,  675,  675,  675,  675,  675,  675,  675,  766,  723,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  722,  721,
-      263,  716,  715,  714,  713,  712,  711,  710,  709,  708,
-
-      707,  706,  705,  704,  703,  702,  701,  700,  699,  698,
-      697,  696,  695,  694,  693,  692,  691,  690,  689,  688,
-      687,  686,  685,  263,  263,  263,  263,  263,  679,  678,
-      674,  673,  672,  671,  670,  669,  668,  667,  666,  665,
-      664,  663,  662,  661,  660,  659,  655,  654,  653,  652,
-      651,  650,  649,  648,  647,  646,  645,  644,  643,  642,
-      641,  640,  639,  638,  637,  636,  263,  263,  625,  624,
-      623,  622,  621,  620,  619,  618,  617,  616,  615,  614,
-      613,  612,  609,  608,  607,  606,  605,  604,  603,  602,
-      601,  600,  599,  598,  597,  596,  595,  594,  593,  592,
-
-      591,  590,  589,  588,  587,  584,  583,  582,  581,  580,
-      579,  578,  577,  263,  263,  263,  263,  263,  563,  562,
-      561,  558,  480,  557,  556,  555,  554,  553,  552,  549,
-      548,  547,  546,  545,  544,  543,  542,  541,  540,  539,
-      538,  533,  532,  531,  530,  529,  528,  527,  524,  519,
-      518,  517,  516,  515,  514,  513,  512,  511,  510,  509,
-      508,  504,  503,  474,  501,  263,  484,  382,  483,  482,
-      481,  480,  474,  473,  465,  464,  463,  462,  461,  460,
-      459,  458,  457,  456,  455,  454,  453,  452,  451,  450,
-      449,  837,  319,  318,  443,  439,  438,  430,  429,  422,
-
-      421,  420,  419,  407,  406,  405,  403,  402,  263,  263,
-      263,  382,  263,  374,  373,  254,  252,  248,  372,  368,
-      367,  366,  365,  364,  363,  362,  358,  357,  356,  353,
-      352,  351,  350,  224,  342,  209,  340,  339,  338,  337,
-      336,  335,  332,  331,  330,  329,  328,  323,  322,  321,
-      172,  171,  314,  202,  201,  194,  191,  190,  189,  174,
-      212,  320,  319,  318,  314,  837,  224,  213,  315,  314,
-      267,  263,  211,  254,  243,  242,  238,  237,  236,  235,
-      231,  230,  221,  220,  219,  214,  211,  209,  202,  201,
-      194,  191,  190,  189,  174,  172,  171,  837,   93,   93,
-
-       21,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837
+       94,   94,   94,   94,   94,   94,   94,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  158,
+      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+      158,  669,  158,  158,  158,  158,  158,  158,  191,  191,
+      191,  191,  191,  191,  195,  668,  195,  195,  667,  666,
+      665,  195,  664,  663,  662,  195,  196,  196,  196,  196,
+
+      196,  196,  196,  196,  196,  196,  196,  196,  661,  196,
+      196,  196,  196,  196,  196,  198,  198,  198,  198,  198,
+      198,  198,  198,  198,  198,  198,  198,  660,  198,  198,
+      198,  198,  198,  198,  211,  428,  211,  428,  211,  659,
+      211,  211,  658,  428,  211,  657,  211,  211,  212,  212,
+      656,  655,  212,  654,  212,  212,  235,  235,  235,  235,
+      235,  235,  235,  235,  235,  210,  235,  235,  235,  235,
+      235,  235,  235,  235,  235,  235,  210,  235,  236,  236,
+      236,  236,  236,  236,  236,  236,  236,  236,  236,  236,
+      236,  236,  236,  236,  236,  236,  236,  236,  210,  236,
+
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  242,  242,  242,  242,  242,  242,  242,  242,  242,
+      242,  242,  242,  645,  242,  242,  242,  242,  242,  242,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  644,  244,  244,  244,  244,  244,  244,  253,
+      253,  643,  642,  641,  253,  253,  253,  256,  256,  256,
+      256,  256,  637,  256,  256,  256,  256,  256,  256,  636,
+      256,  256,  256,  256,  256,  256,  279,  279,  279,  635,
+      279,  634,  279,  279,  633,  632,  279,  631,  279,  279,
+
+      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
+      287,  287,  630,  287,  287,  287,  287,  287,  287,  311,
+      311,  311,  311,  311,  311,  311,  311,  311,  311,  311,
+      311,  629,  311,  311,  311,  311,  311,  311,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      320,  628,  320,  627,  320,  320,  626,  625,  320,  210,
+      320,  320,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  340,  235,  235,  235,  235,  235,  235,
+
+      235,  235,  235,  613,  235,  235,  235,  235,  235,  235,
+      235,  235,  235,  235,  612,  235,  236,  236,  236,  236,
+      236,  236,  236,  236,  236,  611,  236,  236,  236,  236,
+      236,  236,  236,  236,  236,  236,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  610,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  242,  242,  242,  242,
+      242,  242,  242,  242,  242,  242,  242,  242,  609,  242,
+      242,  242,  242,  242,  242,  354,  608,  354,  607,  354,
+      606,  354,  354,  605,  604,  354,  603,  354,  354,  355,
+      355,  355,  355,  355,  355,  355,  355,  602,  355,  355,
+
+      355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  279,  279,  279,  601,  279,  600,  279,  279,  599,
+      598,  279,  597,  279,  279,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  287,  287,  596,  287,  287,
+      287,  287,  287,  287,  420,  420,  420,  595,  594,  593,
+      210,  210,  210,  210,  210,  420,  420,  577,  576,  420,
+      470,  575,  470,  574,  470,  470,  570,  569,  470,  568,
+      470,  470,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  671,  671,  567,  671,  671,  671,
+
+      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
+      671,  671,  671,  671,  671,  671,  566,  565,  564,  563,
+      562,  561,  560,  559,  558,  557,  556,  555,  554,  553,
+      552,  551,  550,  549,  548,  210,  210,  530,  529,  528,
+      527,  526,  525,  524,  523,  522,  521,  520,  519,  518,
+      517,  516,  515,  514,  513,  512,  509,  508,  507,  506,
+      505,  504,  503,  502,  499,  498,  497,  494,  432,  493,
+      210,  210,  210,  210,  210,  474,  469,  468,  467,  466,
+      465,  464,  463,  460,  455,  454,  453,  452,  451,  450,
+      449,  448,  447,  446,  445,  444,  440,  439,  426,  437,
+
+      436,  353,  435,  434,  433,  432,  426,  425,  210,  400,
+      742,  289,  288,  397,  393,  392,  384,  383,  376,  375,
+      374,  373,  361,  360,  359,  357,  356,  353,  345,  344,
+      243,  241,  237,  343,  339,  210,  210,  210,  321,  213,
+      210,  312,  197,  310,  309,  308,  307,  306,  305,  302,
+      301,  300,  299,  298,  293,  292,  291,  160,  159,  284,
+      190,  189,  182,  179,  178,  177,  162,  200,  290,  289,
+      288,  284,  742,  213,  201,  285,  284,  254,  199,  243,
+      232,  210,  209,  208,  207,  202,  199,  197,  190,  189,
+      182,  179,  178,  177,  162,  160,  159,  742,   93,   21,
+
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742
 
     } ;
 
-static const short int yy_chk[2293] =
+static yyconst short int yy_chk[2392] =
     {   0,
-        3,    3,    3,    3,    4,    4,    4,    4,    0,  108,
-        0,    3,  121,  121,    0,    4,    9,   10,   96,   50,
-       50,   50,   50,   50,   50,   17,   17,   17,   17,   95,
-        0,   17,   29,   29,   29,   29,   29,   29,   29,   18,
-       18,   18,   18,   31,   32,   18,   33,   35,   33,  115,
-       39,   55,   55,   55,   55,   33,   93,   31,    0,    3,
-       35,   32,   63,    4,    5,   34,   34,   34,   76,    5,
-       39,   34,   34,  105,  108,   78,   63,    5,    5,    5,
-        5,    5,    5,    5,   17,   78,   76,    9,   10,   96,
-        5,    5,    5,    5,    5,    5,    5,    5,   18,   82,
-
-       79,    5,   95,    5,   79,   82,   82,    5,    5,   41,
-        5,    5,  107,  115,  111,   41,   41,    5,   87,    5,
-       41,   41,    5,    5,   87,   41,   93,    5,  103,  132,
-      105,  110,  103,   87,    5,    5,  109,    5,  112,    5,
-      105,    5,  133,    5,    6,  113,  103,  268,   65,    6,
-       65,   65,   65,   65,   65,   65,   65,    6,    6,    6,
-        6,    6,    6,    6,  118,  122,  122,  118,  145,  153,
-        6,    6,    6,    6,    6,    6,    6,    6,  265,  107,
-      265,    6,  145,    6,  111,  835,  132,    6,    6,  153,
-        6,    6,  110,  140,  140,  140,  140,    6,  109,    6,
-
-      112,  146,    6,    6,  109,  109,  113,    6,   65,  212,
-      212,  133,  244,  244,    6,    6,   65,    6,  146,    6,
-      268,    6,  122,    6,    7,    7,    7,    7,    7,    7,
+        3,    3,    3,    3,    4,    4,    4,    4,    0,   11,
+        0,    3,    0,   83,   11,    4,    9,   10,   96,   11,
+        0,   63,   11,   11,   11,   11,   11,   11,   11,   12,
+       12,    0,   32,  106,   12,   63,  106,   39,    0,   12,
+       31,   81,   12,   12,   12,   12,   12,   12,   12,   32,
+       17,   17,   17,   17,   31,   35,   17,   39,   33,    3,
+       33,   78,  222,    4,    5,   11,   11,   33,   35,    5,
+       18,   18,   18,   18,   83,   79,   18,    5,    5,    5,
+        5,    5,    5,    5,   76,   12,   12,    9,   10,   96,
+        5,    5,    5,    5,    5,    5,    5,    5,   34,   34,
+
+       34,    5,   76,    5,   34,   34,   81,    5,    5,   17,
+        5,    5,   80,   95,   41,  740,   82,    5,   78,    5,
+       41,   41,    5,    5,   84,   41,   41,    5,   78,   18,
+       41,   85,   79,  222,    5,    5,   79,    5,   93,    5,
+       86,    5,   88,    5,    6,   55,   55,   55,   55,    6,
+       29,   29,   29,   29,   29,   29,   29,    6,    6,    6,
+        6,    6,    6,    6,   50,   50,   50,   50,   50,   50,
+        6,    6,    6,    6,    6,    6,    6,    6,   82,   80,
+      135,    6,  135,    6,   82,   82,   95,    6,    6,  135,
+        6,    6,  102,   85,   84,  133,  102,    6,  137,    6,
+
+      141,   86,    6,    6,  109,  109,   88,    6,   93,  133,
+      102,  137,  233,  233,    6,    6,  252,    6,  252,    6,
+      141,    6,  739,    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,
@@ -908,36 +900,25 @@ static const short int yy_chk[2293] =
         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,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-
-       11,   11,   11,   11,   11,   11,   13,  149,  116,  116,
-      116,  116,  834,   13,  116,  833,   13,  270,   13,   13,
-      149,   13,   13,   13,   13,   13,   13,   13,  123,  123,
-       13,  275,   66,   13,   66,   66,   66,   66,   66,   66,
-       66,   99,  229,  186,   99,   99,   99,   99,   99,   99,
-       99,  147,  229,  147,  830,   99,  124,  124,  281,  106,
-      147,  273,  125,  125,   13,  186,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+        7,    7,    7,    7,    7,   13,  381,   13,  104,  104,
+      104,  104,   13,  174,  104,   13,  738,   13,   13,  381,
+       13,   13,   13,   13,   13,   13,   13,  113,  113,   13,
+      111,  111,   13,  110,  110,  174,   65,  120,   65,   65,
+       65,   65,   65,   65,   65,   66,  121,   66,   66,   66,
+       66,   66,   66,   66,   87,  112,  112,  128,  128,  128,
+      128,  215,  216,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-      272,  270,   13,   15,   15,  269,  277,  123,   15,  316,
-
-      278,   15,  275,   15,   15,  571,   15,   15,   15,   15,
-       15,   15,   15,  101,   15,   15,  106,  124,   15,  281,
-      106,  273,  119,  101,  125,  101,  101,  101,  101,  101,
-      101,  101,  119,  234,  119,  119,  119,  119,  119,  119,
-      119,  148,  148,  148,  234,  234,   15,  148,  148,   15,
-       15,  293,  269,   15,   15,   15,  309,  309,   15,   15,
-      278,   15,   15,  272,   15,  293,   15,  571,   15,  304,
-      277,   15,  316,  304,   15,   15,   15,   15,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,  113,
+
+      110,   13,   15,   15,  120,  134,   65,   15,  217,  111,
+       15,  228,   15,   15,   65,   15,   15,   15,   15,   15,
+       15,   15,  134,   15,   15,  121,  112,   15,   87,  216,
+      273,  263,   99,  735,   87,   99,   99,   99,   99,   99,
+       99,   99,  273,   87,  215,  263,   99,  131,  131,  131,
+      131,  131,  131,  131,  270,   15,  418,  273,   15,   15,
+      270,  418,   15,   15,   15,  264,  264,   15,   15,  264,
+       15,   15,  228,   15,  274,   15,  270,   15,  274,  734,
+       15,  264,  217,   15,   15,   15,   15,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
 
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
@@ -946,186 +927,208 @@ static const short int yy_chk[2293] =
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,  100,
-      114,  143,  143,  143,  143,  143,  143,  143,  829,  100,
-      283,  100,  100,  100,  100,  100,  100,  100,  155,  179,
-      179,  179,  179,  828,  155,  155,  311,  311,  276,  155,
-
-      155,  827,  312,  312,  155,  164,  164,  164,  164,  164,
-      164,  173,  173,  173,  173,  173,  173,  173,  204,  204,
-      204,  204,  204,  204,  206,  206,  206,  206,  217,  217,
-      217,  217,  217,  217,  114,  280,  271,  310,  310,  100,
-      114,  261,  261,  261,  261,  261,  261,  100,  284,  114,
-      120,  283,  120,  215,  215,  215,  215,  215,  215,  215,
-      276,  305,  216,  120,  216,  216,  216,  216,  216,  216,
-      216,  276,  276,  305,  299,  299,  312,  120,  826,  120,
-      120,  489,  120,  313,  313,  120,  386,  120,  120,  120,
-      120,  120,  120,  343,  343,  120,  120,  120,  271,  120,
-
-      299,  369,  369,  256,  280,  825,  300,  120,  271,  284,
-      310,  120,  300,  256,  120,  256,  256,  256,  256,  256,
-      256,  256,  257,  371,  371,  120,  430,  512,  300,  512,
-      430,  385,  257,  824,  257,  257,  257,  257,  257,  257,
-      257,  259,  259,  259,  259,  259,  259,  259,  260,  287,
-      287,  287,  287,  287,  287,  287,  390,  489,  260,  386,
-      260,  260,  260,  260,  260,  260,  260,  392,  387,  389,
-      288,  391,  394,  256,  294,  294,  388,  393,  294,  292,
-      288,  256,  288,  288,  288,  288,  288,  288,  288,  292,
-      294,  303,  385,  292,  344,  344,  344,  344,  292,  345,
-
-      345,  345,  345,  303,  368,  368,  368,  368,  292,  346,
-      346,  346,  346,  346,  346,  346,  397,  390,  303,  347,
-      347,  347,  347,  347,  347,  387,  346,  375,  375,  375,
-      375,  375,  375,  388,  389,  368,  391,  392,  368,  395,
-      398,  399,  393,  368,  400,  401,  394,  368,  377,  823,
-      441,  441,  822,  368,  488,  378,  426,  486,  346,  494,
-      377,  377,  377,  377,  377,  377,  377,  378,  378,  378,
-      378,  378,  378,  409,  427,  426,  492,  377,  409,  442,
-      442,  444,  444,  444,  444,  491,  495,  427,  493,  409,
-      496,  397,  445,  445,  445,  445,  565,  398,  567,  500,
-
-      395,  446,  446,  446,  446,  400,  404,  566,  497,  377,
-      399,  441,  447,  447,  447,  447,  494,  401,  404,  404,
-      404,  404,  404,  404,  404,  466,  466,  466,  466,  488,
-      486,  448,  570,  448,  627,  404,  448,  448,  448,  448,
-      448,  448,  448,  572,  467,  467,  467,  467,  492,  535,
-      535,  573,  623,  623,  491,  600,  466,  496,  495,  466,
-      500,  567,  784,  565,  466,  544,  493,  404,  466,  784,
-      544,  821,  566,  568,  466,  467,  497,  600,  467,  569,
-      626,  467,  475,  467,  635,  820,  467,  467,  819,  632,
-      675,  675,  633,  467,  475,  475,  475,  475,  475,  475,
-
-      478,  570,  478,  627,  572,  478,  478,  478,  478,  478,
-      478,  478,  502,  818,  502,  817,  573,  502,  502,  502,
-      502,  502,  502,  502,  536,  536,  536,  536,  536,  536,
-      536,  537,  537,  537,  537,  537,  537,  537,  559,  559,
-      559,  559,  559,  559,  559,  560,  569,  568,  632,  633,
-      681,  569,  683,  635,  626,  677,  677,  560,  560,  560,
-      560,  560,  560,  560,  575,  575,  575,  575,  575,  575,
-      575,  576,  601,  601,  601,  601,  601,  601,  601,  682,
-      684,  719,  767,  576,  576,  576,  576,  576,  576,  576,
-      658,  658,  658,  658,  658,  658,  658,  696,  780,  780,
-
-      814,  845,  863,  845,  863,  813,  696,  696,  832,  845,
-      863,  683,  780,  681,  831,  831,  831,  831,  831,  831,
-      831,  874,  874,  832,  832,  832,  832,  832,  832,  832,
-      871,  877,  871,  877,  812,  811,  810,  809,  871,  877,
-      682,  808,  719,  684,  807,  806,  805,  804,  802,  801,
-      800,  799,  797,  796,  794,  767,  838,  838,  838,  838,
-      838,  838,  838,  838,  838,  838,  838,  838,  838,  838,
-      838,  838,  838,  838,  838,  838,  839,  839,  839,  839,
-      839,  839,  839,  839,  839,  839,  839,  839,  839,  839,
-      839,  839,  839,  839,  839,  839,  840,  840,  840,  840,
-
-      840,  840,  840,  840,  840,  840,  840,  840,  840,  840,
-      840,  840,  840,  840,  840,  840,  841,  841,  841,  841,
-      841,  841,  841,  841,  841,  841,  841,  841,  841,  841,
-      841,  841,  841,  841,  841,  841,  842,  842,  842,  842,
-      842,  842,  842,  842,  842,  842,  842,  842,  842,  842,
-      842,  842,  842,  842,  842,  842,  843,  843,  843,  843,
-      843,  843,  843,  843,  843,  843,  843,  793,  843,  843,
-      843,  843,  843,  843,  844,  844,  844,  844,  844,  844,
-      846,  846,  846,  792,  791,  790,  846,  788,  787,  786,
-      846,  847,  847,  847,  847,  847,  847,  847,  847,  847,
-
-      847,  847,  785,  847,  847,  847,  847,  847,  847,  848,
-      848,  848,  848,  848,  848,  848,  848,  848,  848,  848,
-      783,  848,  848,  848,  848,  848,  848,  849,  779,  849,
-      778,  849,  849,  777,  774,  849,  771,  849,  849,  850,
-      850,  770,  769,  850,  768,  850,  850,  851,  851,  851,
-      851,  851,  851,  851,  766,  851,  851,  851,  851,  851,
-      851,  851,  851,  851,  851,  765,  851,  852,  852,  852,
-      852,  852,  852,  852,  852,  852,  852,  852,  852,  852,
-      852,  852,  852,  852,  852,  763,  852,  853,  853,  853,
-      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
-
-      853,  853,  853,  853,  853,  853,  854,  854,  854,  854,
-      854,  854,  854,  854,  854,  854,  854,  762,  854,  854,
-      854,  854,  854,  854,  855,  855,  855,  855,  855,  855,
-      855,  855,  855,  855,  855,  761,  855,  855,  855,  855,
-      855,  855,  856,  754,  856,  752,  856,  751,  856,  856,
-      750,  749,  856,  747,  856,  856,  857,  857,  746,  744,
-      743,  857,  857,  857,  858,  858,  858,  858,  742,  858,
-      858,  858,  858,  858,  858,  741,  858,  858,  858,  858,
-      858,  858,  859,  859,  859,  738,  859,  737,  859,  859,
-      736,  735,  859,  734,  859,  859,  860,  860,  860,  860,
-
-      860,  860,  860,  860,  860,  860,  860,  733,  860,  860,
-      860,  860,  860,  860,  861,  861,  861,  861,  861,  861,
-      861,  861,  861,  861,  861,  732,  861,  861,  861,  861,
-      861,  861,  862,  862,  862,  862,  862,  862,  862,  862,
-      862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
-      862,  862,  864,  730,  864,  729,  864,  864,  728,  727,
-      864,  724,  864,  864,  865,  722,  865,  721,  865,  865,
-      720,  718,  865,  717,  865,  865,  866,  866,  866,  866,
-      866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
-      866,  866,  866,  866,  866,  866,  867,  867,  867,  867,
-
-      867,  867,  867,  716,  867,  867,  867,  867,  867,  867,
-      867,  867,  867,  867,  715,  867,  868,  868,  868,  868,
-      868,  868,  868,  714,  868,  868,  868,  868,  868,  868,
-      868,  868,  868,  868,  869,  869,  869,  869,  869,  869,
-      869,  713,  869,  869,  869,  869,  869,  869,  869,  869,
-      869,  869,  870,  870,  870,  870,  870,  870,  870,  870,
-      870,  870,  870,  712,  870,  870,  870,  870,  870,  870,
-      872,  711,  872,  710,  872,  709,  872,  872,  708,  706,
-      872,  703,  872,  872,  873,  873,  873,  873,  873,  873,
-      702,  873,  873,  873,  873,  873,  873,  873,  873,  873,
-
-      873,  873,  873,  873,  875,  875,  875,  700,  875,  698,
-      875,  875,  697,  695,  875,  694,  875,  875,  876,  876,
-      876,  876,  876,  876,  876,  876,  876,  876,  876,  693,
-      876,  876,  876,  876,  876,  876,  878,  692,  878,  691,
-      878,  878,  690,  689,  878,  688,  878,  878,  879,  879,
-      879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
-      879,  879,  879,  879,  879,  879,  879,  879,  880,  687,
-      880,  880,  880,  880,  880,  880,  880,  880,  880,  880,
-      880,  880,  880,  880,  880,  880,  880,  880,  686,  685,
-      680,  679,  678,  674,  673,  672,  671,  670,  669,  668,
-
-      667,  666,  665,  664,  662,  660,  659,  656,  655,  653,
-      651,  650,  648,  647,  646,  645,  643,  641,  640,  639,
-      638,  637,  636,  634,  631,  630,  629,  628,  625,  624,
-      622,  621,  620,  619,  618,  617,  616,  615,  613,  612,
-      607,  606,  605,  604,  603,  602,  599,  598,  597,  596,
-      595,  594,  592,  591,  590,  589,  588,  587,  586,  585,
-      584,  583,  582,  580,  579,  577,  574,  564,  562,  561,
-      557,  556,  555,  554,  553,  552,  551,  550,  548,  547,
-      546,  545,  543,  542,  541,  540,  533,  532,  531,  530,
-      529,  528,  527,  526,  525,  524,  523,  522,  520,  518,
-
-      517,  516,  515,  514,  513,  511,  510,  509,  508,  507,
-      506,  505,  504,  499,  498,  490,  487,  485,  484,  482,
-      481,  477,  476,  473,  472,  471,  470,  469,  468,  465,
-      462,  461,  460,  459,  458,  457,  456,  454,  453,  451,
-      449,  439,  438,  436,  435,  434,  432,  431,  429,  424,
-      423,  422,  420,  418,  417,  416,  415,  414,  413,  411,
-      410,  408,  407,  403,  402,  396,  384,  383,  382,  381,
-      380,  379,  374,  372,  367,  366,  365,  364,  363,  361,
-      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
-      350,  341,  318,  317,  315,  307,  306,  302,  301,  298,
-
-      297,  296,  295,  291,  290,  289,  286,  285,  282,  279,
-      274,  266,  264,  255,  254,  253,  252,  248,  245,  243,
-      242,  241,  239,  238,  236,  235,  233,  231,  230,  228,
-      227,  226,  225,  224,  210,  208,  200,  199,  198,  196,
-      193,  192,  185,  184,  183,  181,  180,  177,  175,  174,
-      171,  170,  169,  157,  156,  154,  152,  151,  150,  144,
-      142,  138,  137,  136,  134,  131,  130,  129,  128,  126,
-      104,  102,   98,   97,   89,   88,   86,   85,   84,   83,
-       81,   80,   70,   69,   67,   64,   58,   57,   43,   42,
-       40,   38,   37,   36,   30,   25,   24,   21,   12,    8,
-
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-      837,  837
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,  100,  136,
+      136,  136,  279,  279,  224,  136,  136,  101,  100,  733,
+      100,  100,  100,  100,  100,  100,  100,  101,  107,  101,
+
+      101,  101,  101,  101,  101,  101,  281,  281,  107,  220,
+      107,  107,  107,  107,  107,  107,  107,  143,  167,  167,
+      167,  167,  227,  143,  143,  225,  732,  219,  143,  143,
+      230,  324,  231,  143,  152,  152,  152,  152,  152,  152,
+      161,  161,  161,  161,  161,  161,  161,  731,  100,  192,
+      192,  192,  192,  192,  192,  218,  100,  108,  224,  108,
+      194,  194,  194,  194,  200,  200,  200,  200,  223,  220,
+      108,  203,  203,  203,  203,  203,  203,  203,  205,  205,
+      205,  205,  205,  205,  108,  225,  108,  108,  324,  108,
+      326,  227,  108,  231,  108,  108,  108,  108,  108,  108,
+
+      219,  230,  108,  108,  108,  204,  108,  204,  204,  204,
+      204,  204,  204,  204,  108,  329,  275,  218,  108,  282,
+      282,  108,  280,  280,  283,  283,  286,  218,  275,  322,
+      223,  730,  108,  245,  248,  248,  248,  248,  248,  248,
+      248,  223,  223,  245,  246,  245,  245,  245,  245,  245,
+      245,  245,  323,  249,  246,  326,  246,  246,  246,  246,
+      246,  246,  246,  249,  331,  249,  249,  249,  249,  249,
+      249,  249,  250,  250,  250,  250,  250,  250,  257,  257,
+      257,  257,  257,  257,  257,  329,  729,  269,  269,  334,
+      322,  328,  258,  282,  336,  280,  327,  330,  325,  286,
+
+      332,  335,  258,  245,  258,  258,  258,  258,  258,  258,
+      258,  245,  262,  269,  313,  313,  313,  313,  314,  314,
+      314,  314,  262,  337,  338,  323,  262,  315,  315,  315,
+      315,  262,  316,  316,  316,  316,  340,  340,  331,  342,
+      342,  262,  317,  317,  317,  317,  317,  317,  317,  318,
+      318,  318,  318,  318,  318,  325,  328,  327,  335,  317,
+      402,  332,  330,  336,  334,  348,  339,  339,  339,  339,
+      346,  346,  346,  346,  346,  346,  380,  348,  348,  348,
+      348,  348,  348,  348,  337,  363,  395,  395,  384,  404,
+      363,  317,  384,  405,  348,  380,  338,  339,  396,  396,
+
+      339,  363,  407,  408,  349,  339,  409,  411,  410,  339,
+      398,  398,  398,  398,  412,  339,  349,  349,  349,  349,
+      349,  349,  358,  413,  416,  448,  348,  448,  482,  417,
+      417,  417,  417,  402,  358,  358,  358,  358,  358,  358,
+      358,  419,  419,  419,  419,  471,  471,  395,  399,  476,
+      399,  358,  477,  399,  399,  399,  399,  399,  399,  399,
+      417,  484,  728,  417,  404,  410,  478,  479,  417,  405,
+      727,  407,  417,  419,  481,  408,  726,  480,  417,  411,
+      725,  412,  724,  358,  409,  416,  420,  420,  420,  420,
+      482,  413,  421,  421,  421,  421,  422,  422,  422,  422,
+
+      423,  423,  423,  423,  424,  424,  424,  424,  427,  472,
+      472,  472,  472,  472,  472,  472,  476,  477,  483,  537,
+      427,  427,  427,  427,  427,  427,  484,  421,  430,  478,
+      430,  423,  723,  430,  430,  430,  430,  430,  430,  430,
+      422,  479,  722,  481,  480,  531,  438,  719,  438,  480,
+      424,  438,  438,  438,  438,  438,  438,  438,  473,  473,
+      473,  473,  473,  473,  473,  486,  486,  486,  486,  487,
+      487,  487,  487,  488,  488,  488,  488,  718,  537,  483,
+      489,  489,  489,  489,  490,  490,  490,  490,  491,  491,
+      491,  491,  492,  492,  492,  492,  495,  495,  495,  495,
+
+      495,  495,  495,  486,  532,  538,  525,  540,  487,  500,
+      500,  500,  500,  500,  500,  500,  489,  496,  579,  531,
+      548,  548,  488,  581,  501,  491,  490,  492,  525,  496,
+      496,  496,  496,  496,  496,  496,  501,  501,  501,  501,
+      501,  501,  501,  526,  526,  526,  526,  526,  526,  526,
+      541,  541,  541,  541,  542,  542,  542,  542,  543,  543,
+      543,  543,  538,  580,  544,  544,  544,  544,  545,  545,
+      545,  545,  582,  532,  590,  590,  540,  546,  546,  546,
+      546,  579,  581,  541,  547,  547,  547,  547,  573,  573,
+      573,  573,  573,  573,  573,  592,  592,  716,  542,  583,
+
+      583,  583,  583,  584,  584,  584,  584,  545,  543,  544,
+      585,  585,  585,  585,  616,  715,  546,  547,  586,  586,
+      586,  586,  685,  685,  580,  587,  587,  587,  587,  588,
+      588,  588,  588,  713,  606,  582,  685,  712,  584,  589,
+      589,  589,  589,  606,  606,  618,  618,  618,  618,  619,
+      619,  619,  619,  620,  620,  620,  620,  672,  585,  710,
+      583,  693,  588,  777,  777,  701,  586,  693,  709,  587,
+      621,  621,  621,  621,  693,  616,  705,  704,  589,  622,
+      622,  622,  622,  701,  620,  623,  623,  623,  623,  699,
+      701,  618,  624,  624,  624,  624,  647,  647,  647,  647,
+
+      649,  649,  649,  649,  698,  621,  650,  650,  650,  650,
+      651,  651,  651,  651,  622,  652,  652,  652,  652,  653,
+      653,  653,  653,  624,  703,  670,  670,  670,  670,  695,
+      672,  703,  692,  649,  673,  673,  673,  673,  674,  674,
+      674,  674,  691,  690,  647,  683,  623,  675,  675,  675,
+      675,  676,  676,  676,  676,  650,  670,  684,  684,  684,
+      684,  653,  686,  686,  686,  686,  652,  687,  687,  687,
+      687,  688,  688,  688,  688,  689,  689,  689,  689,  697,
+      706,  696,  702,  707,  673,  696,  682,  711,  674,  702,
+      676,  675,  696,  697,  684,  720,  702,  711,  707,  717,
+
+      697,  714,  720,  679,  711,  707,  714,  688,  750,  671,
+      750,  717,  767,  714,  767,  774,  750,  774,  717,  668,
+      767,  667,  666,  774,  689,  659,  706,  737,  657,  656,
+      655,  689,  648,  706,  736,  736,  736,  736,  736,  736,
+      736,  646,  737,  737,  737,  737,  737,  737,  737,  743,
+      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
+      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
+      743,  744,  744,  744,  744,  744,  744,  744,  744,  744,
+      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
+      744,  744,  744,  745,  745,  745,  745,  745,  745,  745,
+
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  746,  746,  746,  746,  746,
+      746,  746,  746,  746,  746,  746,  746,  746,  746,  746,
+      746,  746,  746,  746,  746,  746,  746,  747,  747,  747,
+      747,  747,  747,  747,  747,  747,  747,  747,  747,  747,
+      747,  747,  747,  747,  747,  747,  747,  747,  747,  748,
+      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
+      748,  644,  748,  748,  748,  748,  748,  748,  749,  749,
+      749,  749,  749,  749,  751,  643,  751,  751,  642,  641,
+      640,  751,  639,  638,  636,  751,  752,  752,  752,  752,
+
+      752,  752,  752,  752,  752,  752,  752,  752,  635,  752,
+      752,  752,  752,  752,  752,  753,  753,  753,  753,  753,
+      753,  753,  753,  753,  753,  753,  753,  634,  753,  753,
+      753,  753,  753,  753,  754,  781,  754,  781,  754,  633,
+      754,  754,  630,  781,  754,  628,  754,  754,  755,  755,
+      627,  626,  755,  625,  755,  755,  756,  756,  756,  756,
+      756,  756,  756,  756,  756,  617,  756,  756,  756,  756,
+      756,  756,  756,  756,  756,  756,  615,  756,  757,  757,
+      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
+      757,  757,  757,  757,  757,  757,  757,  757,  614,  757,
+
+      758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
+      758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
+      758,  759,  759,  759,  759,  759,  759,  759,  759,  759,
+      759,  759,  759,  613,  759,  759,  759,  759,  759,  759,
+      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
+      760,  760,  612,  760,  760,  760,  760,  760,  760,  761,
+      761,  610,  608,  607,  761,  761,  761,  762,  762,  762,
+      762,  762,  605,  762,  762,  762,  762,  762,  762,  604,
+      762,  762,  762,  762,  762,  762,  763,  763,  763,  603,
+      763,  602,  763,  763,  601,  600,  763,  599,  763,  763,
+
+      764,  764,  764,  764,  764,  764,  764,  764,  764,  764,
+      764,  764,  598,  764,  764,  764,  764,  764,  764,  765,
+      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
+      765,  597,  765,  765,  765,  765,  765,  765,  766,  766,
+      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
+      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
+      768,  596,  768,  595,  768,  768,  594,  593,  768,  578,
+      768,  768,  769,  769,  769,  769,  769,  769,  769,  769,
+      769,  769,  769,  769,  769,  769,  769,  769,  769,  769,
+      769,  769,  769,  769,  770,  770,  770,  770,  770,  770,
+
+      770,  770,  770,  577,  770,  770,  770,  770,  770,  770,
+      770,  770,  770,  770,  575,  770,  771,  771,  771,  771,
+      771,  771,  771,  771,  771,  574,  771,  771,  771,  771,
+      771,  771,  771,  771,  771,  771,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  571,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  773,  773,  773,  773,
+      773,  773,  773,  773,  773,  773,  773,  773,  570,  773,
+      773,  773,  773,  773,  773,  775,  568,  775,  566,  775,
+      565,  775,  775,  563,  562,  775,  561,  775,  775,  776,
+      776,  776,  776,  776,  776,  776,  776,  560,  776,  776,
+
+      776,  776,  776,  776,  776,  776,  776,  776,  776,  776,
+      776,  778,  778,  778,  558,  778,  556,  778,  778,  555,
+      554,  778,  553,  778,  778,  779,  779,  779,  779,  779,
+      779,  779,  779,  779,  779,  779,  779,  552,  779,  779,
+      779,  779,  779,  779,  780,  780,  780,  551,  550,  549,
+      539,  536,  535,  534,  533,  780,  780,  530,  529,  780,
+      782,  528,  782,  527,  782,  782,  524,  523,  782,  522,
+      782,  782,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  784,  784,  521,  784,  784,  784,
+
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  520,  519,  517,  516,
+      515,  514,  513,  512,  511,  510,  509,  508,  507,  505,
+      504,  502,  498,  497,  493,  485,  475,  469,  468,  467,
+      466,  465,  464,  463,  462,  461,  460,  459,  458,  456,
+      454,  453,  452,  451,  450,  449,  447,  446,  445,  444,
+      443,  442,  441,  440,  436,  434,  433,  429,  428,  425,
+      415,  414,  406,  403,  401,  400,  393,  392,  390,  389,
+      388,  386,  385,  383,  378,  377,  376,  374,  372,  371,
+      370,  369,  368,  367,  365,  364,  362,  361,  357,  356,
+
+      355,  354,  353,  352,  351,  350,  345,  343,  333,  321,
+      311,  288,  287,  285,  277,  276,  272,  271,  268,  267,
+      266,  265,  261,  260,  259,  256,  255,  253,  244,  243,
+      242,  241,  237,  234,  232,  229,  226,  221,  214,  213,
+      211,  198,  196,  188,  187,  186,  184,  181,  180,  173,
+      172,  171,  169,  168,  165,  163,  162,  159,  158,  157,
+      145,  144,  142,  140,  139,  138,  132,  130,  126,  125,
+      124,  122,  119,  118,  117,  116,  114,  103,   98,   97,
+       89,   72,   70,   69,   67,   64,   58,   57,   43,   42,
+       40,   38,   37,   36,   30,   25,   24,   21,    8,  742,
+
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
+      742
 
     } ;
 
@@ -1139,8 +1142,9 @@ static char *yy_last_accepting_cpos;
 #define yymore() yymore_used_but_not_detected
 #define YY_MORE_ADJ 0
 char *yytext;
-# line 1 "yaccParser/hslexer.flex"
-# line 2 "yaccParser/hslexer.flex"
+#line 1 "yaccParser/hslexer.flex"
+#define INITIAL 0
+#line 2 "yaccParser/hslexer.flex"
 /**********************************************************************
 *                                                                     *
 *                                                                     *
@@ -1206,7 +1210,7 @@ char *yytext;
 #define _isconstr(s)   (CharTable[*s]&(_C))
 BOOLEAN isconstr PROTO((char *)); /* fwd decl */
 
-unsigned char CharTable[NCHARS] = {
+static unsigned char CharTable[NCHARS] = {
 /* nul */      0,      0,      0,      0,      0,      0,      0,      0,
 /* bs  */      0,      _S,     _S,     _S,     _S,     0,      0,      0,
 /* dle */      0,      0,      0,      0,      0,      0,      0,      0,
@@ -1257,12 +1261,12 @@ char *input_filename = NULL;    /* Always points to a dynamically allocated string
  * have been renamed as hsXXXXX rather than yyXXXXX.  --JSM
  */
 
-int hslineno = 0;              /* Line number at end of token */
+static int hslineno = 0;       /* Line number at end of token */
 int hsplineno = 0;             /* Line number at end of previous token */
 
-int hscolno = 0;               /* Column number at end of token */
+static int hscolno = 0;                /* Column number at end of token */
 int hspcolno = 0;              /* Column number at end of previous token */
-int hsmlcolno = 0;             /* Column number for multiple-rule lexemes */
+static int hsmlcolno = 0;      /* Column number for multiple-rule lexemes */
 
 int startlineno = 0;           /* The line number where something starts */
 int endlineno = 0;             /* The line number where something ends */
@@ -1284,12 +1288,15 @@ static int nested_comments;     /* For counting comment nesting depth */
 
 /* Essential forward declarations */
 
-static VOID hsnewid     PROTO((char *, int));
-static VOID layout_input PROTO((char *, int));
-static VOID cleartext   (NO_ARGS);
-static VOID addtext     PROTO((char *, unsigned));
-static VOID addchar     PROTO((char));
+static void hsnewid     PROTO((char *, int));
+static void layout_input PROTO((char *, int));
+static void cleartext   (NO_ARGS);
+static void addtext     PROTO((char *, unsigned));
+static void addchar     PROTO((char));
 static char *fetchtext  PROTO((unsigned *));
+static void new_filename PROTO((char *));
+static int  Return      PROTO((int));
+static void hsentercontext PROTO((int));
 
 /* Special file handling for IMPORTS */
 /*  Note: imports only ever go *one deep* (hence no need for a stack) WDP 94/09 */
@@ -1392,11 +1399,65 @@ static int StateDepth = -1;
    are _exclusive_.  All rules should be prefixed with an appropriate
    list of start states.
  */
+#define Char 1
+#define CharEsc 2
+#define Code 3
+#define Comment 4
+#define GlaExt 5
+#define GhcPragma 6
+#define UserPragma 7
+#define String 8
+#define StringEsc 9
+
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
  */
 
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
 #ifdef YY_MALLOC_DECL
 YY_MALLOC_DECL
 #else
@@ -1433,9 +1494,15 @@ YY_MALLOC_DECL
 #define YY_INPUT(buf,result,max_size) \
        if ( yy_current_buffer->yy_is_interactive ) \
                { \
-               int c = getc( yyin ); \
-               result = c == EOF ? 0 : 1; \
-               buf[0] = (char) c; \
+               int c = '*', n; \
+               for ( n = 0; n < max_size && \
+                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+                       buf[n] = (char) c; \
+               if ( c == '\n' ) \
+                       buf[n++] = (char) c; \
+               if ( c == EOF && ferror( yyin ) ) \
+                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
+               result = n; \
                } \
        else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
                  && ferror( yyin ) ) \
@@ -1479,13 +1546,19 @@ YY_MALLOC_DECL
 #define YY_BREAK break;
 #endif
 
+#define YY_RULE_SETUP \
+       if ( yyleng > 0 ) \
+               yy_current_buffer->yy_at_bol = \
+                               (yytext[yyleng - 1] == '\n'); \
+       YY_USER_ACTION
+
 YY_DECL
        {
        register yy_state_type yy_current_state;
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-# line 274 "yaccParser/hslexer.flex"
+#line 277 "yaccParser/hslexer.flex"
 
 
 
@@ -1498,6 +1571,8 @@ YY_DECL
 
        if ( yy_init )
                {
+               yy_init = 0;
+
 #ifdef YY_USER_INIT
                YY_USER_INIT;
 #endif
@@ -1511,15 +1586,11 @@ YY_DECL
                if ( ! yyout )
                        yyout = stdout;
 
-               if ( yy_current_buffer )
-                       yy_init_buffer( yy_current_buffer, yyin );
-               else
+               if ( ! yy_current_buffer )
                        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 */
@@ -1535,8 +1606,7 @@ YY_DECL
                yy_bp = yy_cp;
 
                yy_current_state = yy_start;
-               if ( yy_bp[-1] == '\n' )
-                       ++yy_current_state;
+               yy_current_state += YY_AT_BOL();
 yy_match:
                do
                        {
@@ -1549,16 +1619,22 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 838 )
+                               if ( yy_current_state >= 743 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 2201 );
+               while ( yy_base[yy_current_state] != 2300 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
+               if ( yy_act == 0 )
+                       { /* have to back up */
+                       yy_cp = yy_last_accepting_cpos;
+                       yy_current_state = yy_last_accepting_state;
+                       yy_act = yy_accept[yy_current_state];
+                       }
 
                YY_DO_BEFORE_ACTION;
 
@@ -1576,8 +1652,8 @@ do_action:        /* This label is used only to access EOF actions. */
                        goto yy_find_action;
 
 case 1:
-YY_USER_ACTION
-# line 283 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 286 "yaccParser/hslexer.flex"
 {
                          char tempf[FILENAME_SIZE];
                          sscanf(yytext+1, "%d \"%[^\"]", &hslineno, tempf); 
@@ -1586,8 +1662,8 @@ YY_USER_ACTION
                        }
        YY_BREAK
 case 2:
-YY_USER_ACTION
-# line 290 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 293 "yaccParser/hslexer.flex"
 {
                          char tempf[FILENAME_SIZE];
                          sscanf(yytext+5, "%d \"%[^\"]", &hslineno, tempf); 
@@ -1596,8 +1672,8 @@ YY_USER_ACTION
                        }
        YY_BREAK
 case 3:
-YY_USER_ACTION
-# line 297 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 300 "yaccParser/hslexer.flex"
 { 
                          /* partain: pragma-style line directive */
                          char tempf[FILENAME_SIZE];
@@ -1607,15 +1683,15 @@ YY_USER_ACTION
                        }
        YY_BREAK
 case 4:
-YY_USER_ACTION
-# line 304 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 307 "yaccParser/hslexer.flex"
 {
                          sscanf(yytext+33,"%d ",&thisIfacePragmaVersion);
                        }
        YY_BREAK
 case 5:
-YY_USER_ACTION
-# line 307 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 310 "yaccParser/hslexer.flex"
 { 
                          if ( ignorePragmas ||
                               thisIfacePragmaVersion < minAcceptablePragmaVersion || 
@@ -1629,253 +1705,265 @@ YY_USER_ACTION
                        }
        YY_BREAK
 case 6:
-YY_USER_ACTION
-# line 318 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 321 "yaccParser/hslexer.flex"
 { RETURN(NO_PRAGMA); }
        YY_BREAK
 case 7:
-YY_USER_ACTION
-# line 319 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 322 "yaccParser/hslexer.flex"
 { RETURN(NOINFO_PRAGMA); }
        YY_BREAK
 case 8:
-YY_USER_ACTION
-# line 320 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 323 "yaccParser/hslexer.flex"
 { RETURN(ABSTRACT_PRAGMA); }
        YY_BREAK
 case 9:
-YY_USER_ACTION
-# line 321 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 324 "yaccParser/hslexer.flex"
 { RETURN(DEFOREST_PRAGMA); }
        YY_BREAK
 case 10:
-YY_USER_ACTION
-# line 322 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 325 "yaccParser/hslexer.flex"
 { RETURN(SPECIALISE_PRAGMA); }
        YY_BREAK
 case 11:
-YY_USER_ACTION
-# line 323 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 326 "yaccParser/hslexer.flex"
 { RETURN(MODNAME_PRAGMA); }
        YY_BREAK
 case 12:
-YY_USER_ACTION
-# line 324 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 327 "yaccParser/hslexer.flex"
 { RETURN(ARITY_PRAGMA); }
        YY_BREAK
 case 13:
-YY_USER_ACTION
-# line 325 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 328 "yaccParser/hslexer.flex"
 { RETURN(UPDATE_PRAGMA); }
        YY_BREAK
 case 14:
-YY_USER_ACTION
-# line 326 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 329 "yaccParser/hslexer.flex"
 { RETURN(STRICTNESS_PRAGMA); }
        YY_BREAK
 case 15:
-YY_USER_ACTION
-# line 327 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 330 "yaccParser/hslexer.flex"
 { RETURN(KIND_PRAGMA); }
        YY_BREAK
 case 16:
-YY_USER_ACTION
-# line 328 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 331 "yaccParser/hslexer.flex"
 { RETURN(MAGIC_UNFOLDING_PRAGMA); }
        YY_BREAK
 case 17:
-YY_USER_ACTION
-# line 329 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 332 "yaccParser/hslexer.flex"
 { RETURN(UNFOLDING_PRAGMA); }
        YY_BREAK
 case 18:
-YY_USER_ACTION
-# line 331 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 334 "yaccParser/hslexer.flex"
 { RETURN(COCON); }
        YY_BREAK
 case 19:
-YY_USER_ACTION
-# line 332 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 335 "yaccParser/hslexer.flex"
 { RETURN(COPRIM); }
        YY_BREAK
 case 20:
-YY_USER_ACTION
-# line 333 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 336 "yaccParser/hslexer.flex"
 { RETURN(COAPP); }
        YY_BREAK
 case 21:
-YY_USER_ACTION
-# line 334 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 337 "yaccParser/hslexer.flex"
 { RETURN(COTYAPP); }
        YY_BREAK
 case 22:
-YY_USER_ACTION
-# line 335 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 338 "yaccParser/hslexer.flex"
 { RETURN(CO_ALG_ALTS); }
        YY_BREAK
 case 23:
-YY_USER_ACTION
-# line 336 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 339 "yaccParser/hslexer.flex"
 { RETURN(CO_PRIM_ALTS); }
        YY_BREAK
 case 24:
-YY_USER_ACTION
-# line 337 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 340 "yaccParser/hslexer.flex"
 { RETURN(CO_NO_DEFAULT); }
        YY_BREAK
 case 25:
-YY_USER_ACTION
-# line 338 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 341 "yaccParser/hslexer.flex"
 { RETURN(CO_LETREC); }
        YY_BREAK
 case 26:
-YY_USER_ACTION
-# line 340 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 343 "yaccParser/hslexer.flex"
 { RETURN(CO_PRELUDE_DICTS_CC); }
        YY_BREAK
 case 27:
-YY_USER_ACTION
-# line 341 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 344 "yaccParser/hslexer.flex"
 { RETURN(CO_ALL_DICTS_CC); }
        YY_BREAK
 case 28:
-YY_USER_ACTION
-# line 342 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 345 "yaccParser/hslexer.flex"
 { RETURN(CO_USER_CC); }
        YY_BREAK
 case 29:
-YY_USER_ACTION
-# line 343 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 346 "yaccParser/hslexer.flex"
 { RETURN(CO_AUTO_CC); }
        YY_BREAK
 case 30:
-YY_USER_ACTION
-# line 344 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 347 "yaccParser/hslexer.flex"
 { RETURN(CO_DICT_CC); }
        YY_BREAK
 case 31:
-YY_USER_ACTION
-# line 346 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 349 "yaccParser/hslexer.flex"
 { RETURN(CO_DUPD_CC); }
        YY_BREAK
 case 32:
-YY_USER_ACTION
-# line 347 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 350 "yaccParser/hslexer.flex"
 { RETURN(CO_CAF_CC); }
        YY_BREAK
 case 33:
-YY_USER_ACTION
-# line 349 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 352 "yaccParser/hslexer.flex"
 { RETURN(CO_SDSEL_ID); }
        YY_BREAK
 case 34:
-YY_USER_ACTION
-# line 350 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 353 "yaccParser/hslexer.flex"
 { RETURN(CO_METH_ID); }
        YY_BREAK
 case 35:
-YY_USER_ACTION
-# line 351 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 354 "yaccParser/hslexer.flex"
 { RETURN(CO_DEFM_ID); }
        YY_BREAK
 case 36:
-YY_USER_ACTION
-# line 352 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 355 "yaccParser/hslexer.flex"
 { RETURN(CO_DFUN_ID); }
        YY_BREAK
 case 37:
-YY_USER_ACTION
-# line 353 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 356 "yaccParser/hslexer.flex"
 { RETURN(CO_CONSTM_ID); }
        YY_BREAK
 case 38:
-YY_USER_ACTION
-# line 354 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 357 "yaccParser/hslexer.flex"
 { RETURN(CO_SPEC_ID); }
        YY_BREAK
 case 39:
-YY_USER_ACTION
-# line 355 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 358 "yaccParser/hslexer.flex"
 { RETURN(CO_WRKR_ID); }
        YY_BREAK
 case 40:
-YY_USER_ACTION
-# line 356 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 359 "yaccParser/hslexer.flex"
 { RETURN(CO_ORIG_NM); /* fully-qualified original name*/ }
        YY_BREAK
 case 41:
-YY_USER_ACTION
-# line 358 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 361 "yaccParser/hslexer.flex"
 { RETURN(UNFOLD_ALWAYS); }
        YY_BREAK
 case 42:
-YY_USER_ACTION
-# line 359 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 362 "yaccParser/hslexer.flex"
 { RETURN(UNFOLD_IF_ARGS); }
        YY_BREAK
 case 43:
-YY_USER_ACTION
-# line 361 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 364 "yaccParser/hslexer.flex"
 { RETURN(NOREP_INTEGER); }
        YY_BREAK
 case 44:
-YY_USER_ACTION
-# line 362 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 365 "yaccParser/hslexer.flex"
 { RETURN(NOREP_RATIONAL); }
        YY_BREAK
 case 45:
-YY_USER_ACTION
-# line 363 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 366 "yaccParser/hslexer.flex"
 { RETURN(NOREP_STRING); }
        YY_BREAK
 case 46:
-YY_USER_ACTION
-# line 365 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 368 "yaccParser/hslexer.flex"
 { POP_STATE; RETURN(END_PRAGMA); }
        YY_BREAK
 case 47:
-YY_USER_ACTION
-# line 367 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 370 "yaccParser/hslexer.flex"
 {
                              PUSH_STATE(UserPragma);
                              RETURN(SPECIALISE_UPRAGMA);
                            }
        YY_BREAK
 case 48:
-YY_USER_ACTION
-# line 371 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 374 "yaccParser/hslexer.flex"
 {
                              PUSH_STATE(UserPragma);
                              RETURN(INLINE_UPRAGMA);
                            }
        YY_BREAK
 case 49:
-YY_USER_ACTION
-# line 375 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 378 "yaccParser/hslexer.flex"
 {
                              PUSH_STATE(UserPragma);
                              RETURN(MAGIC_UNFOLDING_UPRAGMA);
                            }
        YY_BREAK
 case 50:
-YY_USER_ACTION
-# line 379 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 382 "yaccParser/hslexer.flex"
 {
                               PUSH_STATE(UserPragma);
                               RETURN(DEFOREST_UPRAGMA);
                            }
        YY_BREAK
 case 51:
-YY_USER_ACTION
-# line 383 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 386 "yaccParser/hslexer.flex"
 {
                              PUSH_STATE(UserPragma);
                              RETURN(ABSTRACT_UPRAGMA);
                            }
        YY_BREAK
 case 52:
-YY_USER_ACTION
-# line 387 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 390 "yaccParser/hslexer.flex"
+{
+                             fprintf(stderr, "Warning: \"%s\", line %d: Unrecognised pragma '",
+                               input_filename, hsplineno);
+                             format_string(stderr, (unsigned char *) yytext, yyleng);
+                             fputs("'\n", stderr);
+                             nested_comments = 1;
+                             PUSH_STATE(Comment);
+                           }
+       YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 398 "yaccParser/hslexer.flex"
 { POP_STATE; RETURN(END_UPRAGMA); }
        YY_BREAK
 
@@ -1884,149 +1972,149 @@ YY_USER_ACTION
      * intentionally accepted as a keyword even for normal <Code>.
      */
 
-case 53:
-YY_USER_ACTION
-# line 396 "yaccParser/hslexer.flex"
+case 54:
+YY_RULE_SETUP
+#line 407 "yaccParser/hslexer.flex"
 { RETURN(CASE); }
        YY_BREAK
-case 54:
-YY_USER_ACTION
-# line 397 "yaccParser/hslexer.flex"
+case 55:
+YY_RULE_SETUP
+#line 408 "yaccParser/hslexer.flex"
 { RETURN(CLASS); }
        YY_BREAK
-case 55:
-YY_USER_ACTION
-# line 398 "yaccParser/hslexer.flex"
+case 56:
+YY_RULE_SETUP
+#line 409 "yaccParser/hslexer.flex"
 { RETURN(DATA); }
        YY_BREAK
-case 56:
-YY_USER_ACTION
-# line 399 "yaccParser/hslexer.flex"
+case 57:
+YY_RULE_SETUP
+#line 410 "yaccParser/hslexer.flex"
 { RETURN(DEFAULT); }
        YY_BREAK
-case 57:
-YY_USER_ACTION
-# line 400 "yaccParser/hslexer.flex"
+case 58:
+YY_RULE_SETUP
+#line 411 "yaccParser/hslexer.flex"
 { RETURN(DERIVING); }
        YY_BREAK
-case 58:
-YY_USER_ACTION
-# line 401 "yaccParser/hslexer.flex"
+case 59:
+YY_RULE_SETUP
+#line 412 "yaccParser/hslexer.flex"
 { RETURN(ELSE); }
        YY_BREAK
-case 59:
-YY_USER_ACTION
-# line 402 "yaccParser/hslexer.flex"
+case 60:
+YY_RULE_SETUP
+#line 413 "yaccParser/hslexer.flex"
 { RETURN(HIDING); }
        YY_BREAK
-case 60:
-YY_USER_ACTION
-# line 403 "yaccParser/hslexer.flex"
+case 61:
+YY_RULE_SETUP
+#line 414 "yaccParser/hslexer.flex"
 { RETURN(IF); }
        YY_BREAK
-case 61:
-YY_USER_ACTION
-# line 404 "yaccParser/hslexer.flex"
+case 62:
+YY_RULE_SETUP
+#line 415 "yaccParser/hslexer.flex"
 { RETURN(IMPORT); }
        YY_BREAK
-case 62:
-YY_USER_ACTION
-# line 405 "yaccParser/hslexer.flex"
+case 63:
+YY_RULE_SETUP
+#line 416 "yaccParser/hslexer.flex"
 { RETURN(INFIX); }
        YY_BREAK
-case 63:
-YY_USER_ACTION
-# line 406 "yaccParser/hslexer.flex"
+case 64:
+YY_RULE_SETUP
+#line 417 "yaccParser/hslexer.flex"
 { RETURN(INFIXL); }
        YY_BREAK
-case 64:
-YY_USER_ACTION
-# line 407 "yaccParser/hslexer.flex"
+case 65:
+YY_RULE_SETUP
+#line 418 "yaccParser/hslexer.flex"
 { RETURN(INFIXR); }
        YY_BREAK
-case 65:
-YY_USER_ACTION
-# line 408 "yaccParser/hslexer.flex"
+case 66:
+YY_RULE_SETUP
+#line 419 "yaccParser/hslexer.flex"
 { RETURN(INSTANCE); }
        YY_BREAK
-case 66:
-YY_USER_ACTION
-# line 409 "yaccParser/hslexer.flex"
+case 67:
+YY_RULE_SETUP
+#line 420 "yaccParser/hslexer.flex"
 { RETURN(INTERFACE); }
        YY_BREAK
-case 67:
-YY_USER_ACTION
-# line 410 "yaccParser/hslexer.flex"
+case 68:
+YY_RULE_SETUP
+#line 421 "yaccParser/hslexer.flex"
 { RETURN(MODULE); }
        YY_BREAK
-case 68:
-YY_USER_ACTION
-# line 411 "yaccParser/hslexer.flex"
+case 69:
+YY_RULE_SETUP
+#line 422 "yaccParser/hslexer.flex"
 { RETURN(OF); }
        YY_BREAK
-case 69:
-YY_USER_ACTION
-# line 412 "yaccParser/hslexer.flex"
+case 70:
+YY_RULE_SETUP
+#line 423 "yaccParser/hslexer.flex"
 { RETURN(RENAMING); }
        YY_BREAK
-case 70:
-YY_USER_ACTION
-# line 413 "yaccParser/hslexer.flex"
+case 71:
+YY_RULE_SETUP
+#line 424 "yaccParser/hslexer.flex"
 { RETURN(THEN); }
        YY_BREAK
-case 71:
-YY_USER_ACTION
-# line 414 "yaccParser/hslexer.flex"
+case 72:
+YY_RULE_SETUP
+#line 425 "yaccParser/hslexer.flex"
 { RETURN(TO); }
        YY_BREAK
-case 72:
-YY_USER_ACTION
-# line 415 "yaccParser/hslexer.flex"
+case 73:
+YY_RULE_SETUP
+#line 426 "yaccParser/hslexer.flex"
 { RETURN(TYPE); }
        YY_BREAK
-case 73:
-YY_USER_ACTION
-# line 416 "yaccParser/hslexer.flex"
+case 74:
+YY_RULE_SETUP
+#line 427 "yaccParser/hslexer.flex"
 { RETURN(WHERE); }
        YY_BREAK
-case 74:
-YY_USER_ACTION
-# line 417 "yaccParser/hslexer.flex"
+case 75:
+YY_RULE_SETUP
+#line 428 "yaccParser/hslexer.flex"
 { RETURN(IN); }
        YY_BREAK
-case 75:
-YY_USER_ACTION
-# line 418 "yaccParser/hslexer.flex"
+case 76:
+YY_RULE_SETUP
+#line 429 "yaccParser/hslexer.flex"
 { RETURN(LET); }
        YY_BREAK
-case 76:
-YY_USER_ACTION
-# line 419 "yaccParser/hslexer.flex"
+case 77:
+YY_RULE_SETUP
+#line 430 "yaccParser/hslexer.flex"
 { RETURN(CCALL); }
        YY_BREAK
-case 77:
-YY_USER_ACTION
-# line 420 "yaccParser/hslexer.flex"
+case 78:
+YY_RULE_SETUP
+#line 431 "yaccParser/hslexer.flex"
 { RETURN(CCALL_GC); }
        YY_BREAK
-case 78:
-YY_USER_ACTION
-# line 421 "yaccParser/hslexer.flex"
+case 79:
+YY_RULE_SETUP
+#line 432 "yaccParser/hslexer.flex"
 { RETURN(CASM); }
        YY_BREAK
-case 79:
-YY_USER_ACTION
-# line 422 "yaccParser/hslexer.flex"
+case 80:
+YY_RULE_SETUP
+#line 433 "yaccParser/hslexer.flex"
 { RETURN(CASM_GC); }
        YY_BREAK
-case 80:
-YY_USER_ACTION
-# line 423 "yaccParser/hslexer.flex"
+case 81:
+YY_RULE_SETUP
+#line 434 "yaccParser/hslexer.flex"
 { RETURN(SCC); }
        YY_BREAK
-case 81:
-YY_USER_ACTION
-# line 424 "yaccParser/hslexer.flex"
+case 82:
+YY_RULE_SETUP
+#line 435 "yaccParser/hslexer.flex"
 { RETURN(FORALL); }
        YY_BREAK
 
@@ -2034,119 +2122,119 @@ YY_USER_ACTION
      * Haskell operators.  Nothing special about these.
      */
 
-case 82:
-YY_USER_ACTION
-# line 432 "yaccParser/hslexer.flex"
+case 83:
+YY_RULE_SETUP
+#line 443 "yaccParser/hslexer.flex"
 { RETURN(DOTDOT); }
        YY_BREAK
-case 83:
-YY_USER_ACTION
-# line 433 "yaccParser/hslexer.flex"
+case 84:
+YY_RULE_SETUP
+#line 444 "yaccParser/hslexer.flex"
 { RETURN(SEMI); }
        YY_BREAK
-case 84:
-YY_USER_ACTION
-# line 434 "yaccParser/hslexer.flex"
+case 85:
+YY_RULE_SETUP
+#line 445 "yaccParser/hslexer.flex"
 { RETURN(COMMA); }
        YY_BREAK
-case 85:
-YY_USER_ACTION
-# line 435 "yaccParser/hslexer.flex"
+case 86:
+YY_RULE_SETUP
+#line 446 "yaccParser/hslexer.flex"
 { RETURN(VBAR); }
        YY_BREAK
-case 86:
-YY_USER_ACTION
-# line 436 "yaccParser/hslexer.flex"
+case 87:
+YY_RULE_SETUP
+#line 447 "yaccParser/hslexer.flex"
 { RETURN(EQUAL); }
        YY_BREAK
-case 87:
-YY_USER_ACTION
-# line 437 "yaccParser/hslexer.flex"
+case 88:
+YY_RULE_SETUP
+#line 448 "yaccParser/hslexer.flex"
 { RETURN(LARROW); }
        YY_BREAK
-case 88:
-YY_USER_ACTION
-# line 438 "yaccParser/hslexer.flex"
+case 89:
+YY_RULE_SETUP
+#line 449 "yaccParser/hslexer.flex"
 { RETURN(RARROW); }
        YY_BREAK
-case 89:
-YY_USER_ACTION
-# line 439 "yaccParser/hslexer.flex"
+case 90:
+YY_RULE_SETUP
+#line 450 "yaccParser/hslexer.flex"
 { RETURN(DARROW); }
        YY_BREAK
-case 90:
-YY_USER_ACTION
-# line 440 "yaccParser/hslexer.flex"
+case 91:
+YY_RULE_SETUP
+#line 451 "yaccParser/hslexer.flex"
 { RETURN(DCOLON); }
        YY_BREAK
-case 91:
-YY_USER_ACTION
-# line 441 "yaccParser/hslexer.flex"
+case 92:
+YY_RULE_SETUP
+#line 452 "yaccParser/hslexer.flex"
 { RETURN(OPAREN); }
        YY_BREAK
-case 92:
-YY_USER_ACTION
-# line 442 "yaccParser/hslexer.flex"
+case 93:
+YY_RULE_SETUP
+#line 453 "yaccParser/hslexer.flex"
 { RETURN(CPAREN); }
        YY_BREAK
-case 93:
-YY_USER_ACTION
-# line 443 "yaccParser/hslexer.flex"
+case 94:
+YY_RULE_SETUP
+#line 454 "yaccParser/hslexer.flex"
 { RETURN(OBRACK); }
        YY_BREAK
-case 94:
-YY_USER_ACTION
-# line 444 "yaccParser/hslexer.flex"
+case 95:
+YY_RULE_SETUP
+#line 455 "yaccParser/hslexer.flex"
 { RETURN(CBRACK); }
        YY_BREAK
-case 95:
-YY_USER_ACTION
-# line 445 "yaccParser/hslexer.flex"
+case 96:
+YY_RULE_SETUP
+#line 456 "yaccParser/hslexer.flex"
 { RETURN(OCURLY); }
        YY_BREAK
-case 96:
-YY_USER_ACTION
-# line 446 "yaccParser/hslexer.flex"
+case 97:
+YY_RULE_SETUP
+#line 457 "yaccParser/hslexer.flex"
 { RETURN(CCURLY); }
        YY_BREAK
-case 97:
-YY_USER_ACTION
-# line 447 "yaccParser/hslexer.flex"
+case 98:
+YY_RULE_SETUP
+#line 458 "yaccParser/hslexer.flex"
 { RETURN(PLUS); }
        YY_BREAK
-case 98:
-YY_USER_ACTION
-# line 448 "yaccParser/hslexer.flex"
+case 99:
+YY_RULE_SETUP
+#line 459 "yaccParser/hslexer.flex"
 { RETURN(AT); }
        YY_BREAK
-case 99:
-YY_USER_ACTION
-# line 449 "yaccParser/hslexer.flex"
+case 100:
+YY_RULE_SETUP
+#line 460 "yaccParser/hslexer.flex"
 { RETURN(LAMBDA); }
        YY_BREAK
-case 100:
-YY_USER_ACTION
-# line 450 "yaccParser/hslexer.flex"
+case 101:
+YY_RULE_SETUP
+#line 461 "yaccParser/hslexer.flex"
 { RETURN(TYLAMBDA); }
        YY_BREAK
-case 101:
-YY_USER_ACTION
-# line 451 "yaccParser/hslexer.flex"
+case 102:
+YY_RULE_SETUP
+#line 462 "yaccParser/hslexer.flex"
 { RETURN(WILDCARD); }
        YY_BREAK
-case 102:
-YY_USER_ACTION
-# line 452 "yaccParser/hslexer.flex"
+case 103:
+YY_RULE_SETUP
+#line 463 "yaccParser/hslexer.flex"
 { RETURN(BQUOTE); }
        YY_BREAK
-case 103:
-YY_USER_ACTION
-# line 453 "yaccParser/hslexer.flex"
+case 104:
+YY_RULE_SETUP
+#line 464 "yaccParser/hslexer.flex"
 { RETURN(LAZY); }
        YY_BREAK
-case 104:
-YY_USER_ACTION
-# line 454 "yaccParser/hslexer.flex"
+case 105:
+YY_RULE_SETUP
+#line 465 "yaccParser/hslexer.flex"
 { RETURN(MINUS); }
        YY_BREAK
 
@@ -2156,49 +2244,49 @@ YY_USER_ACTION
      * arbitrary precision numbers.
      */
 
-case 105:
-YY_USER_ACTION
-# line 464 "yaccParser/hslexer.flex"
+case 106:
+YY_RULE_SETUP
+#line 475 "yaccParser/hslexer.flex"
 { /* octal */
                         yylval.uid = xstrndup(yytext, yyleng - 1);
                         RETURN(INTPRIM);
                        }
        YY_BREAK
-case 106:
-YY_USER_ACTION
-# line 468 "yaccParser/hslexer.flex"
+case 107:
+YY_RULE_SETUP
+#line 479 "yaccParser/hslexer.flex"
 { /* octal */
                         yylval.uid = xstrndup(yytext, yyleng);
                         RETURN(INTEGER);
                        }
        YY_BREAK
-case 107:
-YY_USER_ACTION
-# line 472 "yaccParser/hslexer.flex"
+case 108:
+YY_RULE_SETUP
+#line 483 "yaccParser/hslexer.flex"
 { /* hexadecimal */
                         yylval.uid = xstrndup(yytext, yyleng - 1);
                         RETURN(INTPRIM);
                        }
        YY_BREAK
-case 108:
-YY_USER_ACTION
-# line 476 "yaccParser/hslexer.flex"
+case 109:
+YY_RULE_SETUP
+#line 487 "yaccParser/hslexer.flex"
 { /* hexadecimal */
                         yylval.uid = xstrndup(yytext, yyleng);
                         RETURN(INTEGER);
                        }
        YY_BREAK
-case 109:
-YY_USER_ACTION
-# line 480 "yaccParser/hslexer.flex"
+case 110:
+YY_RULE_SETUP
+#line 491 "yaccParser/hslexer.flex"
 {
                         yylval.uid = xstrndup(yytext, yyleng - 1);
                         RETURN(INTPRIM);
                        }
        YY_BREAK
-case 110:
-YY_USER_ACTION
-# line 484 "yaccParser/hslexer.flex"
+case 111:
+YY_RULE_SETUP
+#line 495 "yaccParser/hslexer.flex"
 {
                         yylval.uid = xstrndup(yytext, yyleng);
                         RETURN(INTEGER);
@@ -2209,25 +2297,25 @@ YY_USER_ACTION
      * Floats and (for Glasgow extensions) primitive floats/doubles.
      */
 
-case 111:
-YY_USER_ACTION
-# line 495 "yaccParser/hslexer.flex"
+case 112:
+YY_RULE_SETUP
+#line 506 "yaccParser/hslexer.flex"
 {
                         yylval.uid = xstrndup(yytext, yyleng - 2);
                         RETURN(DOUBLEPRIM);
                        }
        YY_BREAK
-case 112:
-YY_USER_ACTION
-# line 499 "yaccParser/hslexer.flex"
+case 113:
+YY_RULE_SETUP
+#line 510 "yaccParser/hslexer.flex"
 {
                         yylval.uid = xstrndup(yytext, yyleng - 1);
                         RETURN(FLOATPRIM);
                        }
        YY_BREAK
-case 113:
-YY_USER_ACTION
-# line 503 "yaccParser/hslexer.flex"
+case 114:
+YY_RULE_SETUP
+#line 514 "yaccParser/hslexer.flex"
 {
                         yylval.uid = xstrndup(yytext, yyleng);
                         RETURN(FLOAT);
@@ -2238,9 +2326,9 @@ YY_USER_ACTION
      * Funky ``foo'' style C literals for Glasgow extensions
      */
 
-case 114:
-YY_USER_ACTION
-# line 514 "yaccParser/hslexer.flex"
+case 115:
+YY_RULE_SETUP
+#line 525 "yaccParser/hslexer.flex"
 {
                         hsnewid(yytext + 2, yyleng - 4);
                         RETURN(CLITLIT);
@@ -2252,35 +2340,40 @@ YY_USER_ACTION
      * for Glasgow extensions.
      */
 
-case 115:
-YY_USER_ACTION
-# line 526 "yaccParser/hslexer.flex"
-{ hsnewid(yytext, yyleng); RETURN(CONID); }
-       YY_BREAK
 case 116:
-YY_USER_ACTION
-# line 527 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 537 "yaccParser/hslexer.flex"
 { hsnewid(yytext, yyleng); RETURN(CONID); }
        YY_BREAK
 case 117:
-YY_USER_ACTION
-# line 528 "yaccParser/hslexer.flex"
-{ hsnewid(yytext, yyleng); RETURN(TYVAR_TEMPLATE_ID); }
+YY_RULE_SETUP
+#line 538 "yaccParser/hslexer.flex"
+{ hsnewid(yytext, yyleng); RETURN(CONID); }
        YY_BREAK
 case 118:
-YY_USER_ACTION
-# line 530 "yaccParser/hslexer.flex"
+YY_RULE_SETUP
+#line 539 "yaccParser/hslexer.flex"
+{ hsnewid(yytext, yyleng); RETURN(TYVAR_TEMPLATE_ID); }
+       YY_BREAK
+
+/* These SHOULDNAE work in "Code" (sigh) */
+
+case 119:
+YY_RULE_SETUP
+#line 544 "yaccParser/hslexer.flex"
 { 
+                        if (! (nonstandardFlag || in_interface)) {
+                           char errbuf[ERR_BUF_SIZE];
+                           sprintf(errbuf, "Non-standard identifier (trailing `#'): %s\n", yytext);
+                           hsperror(errbuf);
+                        }
                         hsnewid(yytext, yyleng);
                         RETURN(_isconstr(yytext) ? CONID : VARID);
                        }
        YY_BREAK
-
-/* This SHOULDNAE work in "Code" (sigh) */
-
-case 119:
-YY_USER_ACTION
-# line 537 "yaccParser/hslexer.flex"
+case 120:
+YY_RULE_SETUP
+#line 553 "yaccParser/hslexer.flex"
 { 
                         if (! (nonstandardFlag || in_interface)) {
                            char errbuf[ERR_BUF_SIZE];
@@ -2292,17 +2385,17 @@ YY_USER_ACTION
                         /* NB: ^^^^^^^^ : not the macro! */
                        }
        YY_BREAK
-case 120:
-YY_USER_ACTION
-# line 547 "yaccParser/hslexer.flex"
+case 121:
+YY_RULE_SETUP
+#line 563 "yaccParser/hslexer.flex"
 {
                         hsnewid(yytext, yyleng);
                         RETURN(_isconstr(yytext) ? CONID : VARID);
                        }
        YY_BREAK
-case 121:
-YY_USER_ACTION
-# line 551 "yaccParser/hslexer.flex"
+case 122:
+YY_RULE_SETUP
+#line 567 "yaccParser/hslexer.flex"
 {
                         hsnewid(yytext, yyleng);
                         RETURN(_isconstr(yytext) ? CONSYM : VARSYM);
@@ -2317,9 +2410,9 @@ YY_USER_ACTION
        la-la land constructs as `{-a 900-line comment-} foo`.  (WDP 94/12)
     */
 
-case 122:
-YY_USER_ACTION
-# line 566 "yaccParser/hslexer.flex"
+case 123:
+YY_RULE_SETUP
+#line 582 "yaccParser/hslexer.flex"
 {      
                         hsnewid(yytext + 1, yyleng - 2);
                         RETURN(_isconstr(yytext+1) ? CONSYM : VARSYM);
@@ -2338,33 +2431,33 @@ YY_USER_ACTION
      * are ignored with a warning.
      */
 
-case 123:
-YY_USER_ACTION
-# line 585 "yaccParser/hslexer.flex"
+case 124:
+YY_RULE_SETUP
+#line 601 "yaccParser/hslexer.flex"
 {
                         yylval.uhstring = installHstring(1, yytext+1);
                         RETURN(CHARPRIM);
                        }
        YY_BREAK
-case 124:
-YY_USER_ACTION
-# line 589 "yaccParser/hslexer.flex"
+case 125:
+YY_RULE_SETUP
+#line 605 "yaccParser/hslexer.flex"
 {
                         yylval.uhstring = installHstring(1, yytext+1);
                         RETURN(CHAR);
                        }
        YY_BREAK
-case 125:
-YY_USER_ACTION
-# line 593 "yaccParser/hslexer.flex"
+case 126:
+YY_RULE_SETUP
+#line 609 "yaccParser/hslexer.flex"
 {char errbuf[ERR_BUF_SIZE];
                         sprintf(errbuf, "'' is not a valid character (or string) literal\n");
                         hsperror(errbuf);
                        }
        YY_BREAK
-case 126:
-YY_USER_ACTION
-# line 597 "yaccParser/hslexer.flex"
+case 127:
+YY_RULE_SETUP
+#line 613 "yaccParser/hslexer.flex"
 {
                         hsmlcolno = hspcolno;
                         cleartext();
@@ -2372,9 +2465,9 @@ YY_USER_ACTION
                         PUSH_STATE(Char);
                        }
        YY_BREAK
-case 127:
-YY_USER_ACTION
-# line 603 "yaccParser/hslexer.flex"
+case 128:
+YY_RULE_SETUP
+#line 619 "yaccParser/hslexer.flex"
 {
                         unsigned length;
                         char *text;
@@ -2401,9 +2494,9 @@ YY_USER_ACTION
                         RETURN(CHARPRIM); 
                        }
        YY_BREAK
-case 128:
-YY_USER_ACTION
-# line 628 "yaccParser/hslexer.flex"
+case 129:
+YY_RULE_SETUP
+#line 644 "yaccParser/hslexer.flex"
 {
                         unsigned length;
                         char *text;
@@ -2424,9 +2517,9 @@ YY_USER_ACTION
                         RETURN(CHAR); 
                        }
        YY_BREAK
-case 129:
-YY_USER_ACTION
-# line 647 "yaccParser/hslexer.flex"
+case 130:
+YY_RULE_SETUP
+#line 663 "yaccParser/hslexer.flex"
 { addtext(yytext, yyleng); }
        YY_BREAK
 
@@ -2443,26 +2536,26 @@ YY_USER_ACTION
      * of normal characters and the close ".
      */
 
-case 130:
-YY_USER_ACTION
-# line 665 "yaccParser/hslexer.flex"
+case 131:
+YY_RULE_SETUP
+#line 681 "yaccParser/hslexer.flex"
 {
                         yylval.uhstring = installHstring(yyleng-3, yytext+1);
                            /* the -3 accounts for the " on front, "# on the end */
                         RETURN(STRINGPRIM); 
                        }
        YY_BREAK
-case 131:
-YY_USER_ACTION
-# line 670 "yaccParser/hslexer.flex"
+case 132:
+YY_RULE_SETUP
+#line 686 "yaccParser/hslexer.flex"
 {
                         yylval.uhstring = installHstring(yyleng-2, yytext+1);
                         RETURN(STRING); 
                        }
        YY_BREAK
-case 132:
-YY_USER_ACTION
-# line 674 "yaccParser/hslexer.flex"
+case 133:
+YY_RULE_SETUP
+#line 690 "yaccParser/hslexer.flex"
 {
                         hsmlcolno = hspcolno;
                         cleartext();
@@ -2470,9 +2563,9 @@ YY_USER_ACTION
                         PUSH_STATE(String);
                        }
        YY_BREAK
-case 133:
-YY_USER_ACTION
-# line 680 "yaccParser/hslexer.flex"
+case 134:
+YY_RULE_SETUP
+#line 696 "yaccParser/hslexer.flex"
 {
                         unsigned length;
                         char *text;
@@ -2492,9 +2585,9 @@ YY_USER_ACTION
                         RETURN(STRINGPRIM);
                        }
        YY_BREAK
-case 134:
-YY_USER_ACTION
-# line 698 "yaccParser/hslexer.flex"
+case 135:
+YY_RULE_SETUP
+#line 714 "yaccParser/hslexer.flex"
 {
                         unsigned length;
                         char *text;
@@ -2508,9 +2601,9 @@ YY_USER_ACTION
                         RETURN(STRING); 
                        }
        YY_BREAK
-case 135:
-YY_USER_ACTION
-# line 710 "yaccParser/hslexer.flex"
+case 136:
+YY_RULE_SETUP
+#line 726 "yaccParser/hslexer.flex"
 { addtext(yytext, yyleng); }
        YY_BREAK
 
@@ -2528,228 +2621,228 @@ YY_USER_ACTION
      * also needs to be able to escape the escape character ('\\').  Sigh.
      */
 
-case 136:
-YY_USER_ACTION
-# line 728 "yaccParser/hslexer.flex"
+case 137:
+YY_RULE_SETUP
+#line 744 "yaccParser/hslexer.flex"
 { PUSH_STATE(CharEsc); }
        YY_BREAK
-case 137:
-YY_USER_ACTION
-# line 729 "yaccParser/hslexer.flex"
+case 138:
+YY_RULE_SETUP
+#line 745 "yaccParser/hslexer.flex"
 /* Ignore */ ;
        YY_BREAK
-case 138:
-YY_USER_ACTION
-# line 730 "yaccParser/hslexer.flex"
+case 139:
+YY_RULE_SETUP
+#line 746 "yaccParser/hslexer.flex"
 { PUSH_STATE(StringEsc); noGap = TRUE; }
        YY_BREAK
-case 139:
-YY_USER_ACTION
-# line 732 "yaccParser/hslexer.flex"
+case 140:
+YY_RULE_SETUP
+#line 748 "yaccParser/hslexer.flex"
 { addchar(*yytext); POP_STATE; }
        YY_BREAK
-case 140:
-YY_USER_ACTION
-# line 733 "yaccParser/hslexer.flex"
+case 141:
+YY_RULE_SETUP
+#line 749 "yaccParser/hslexer.flex"
 { if (noGap) { addchar(*yytext); } POP_STATE; }
        YY_BREAK
-case 141:
-YY_USER_ACTION
-# line 735 "yaccParser/hslexer.flex"
+case 142:
+YY_RULE_SETUP
+#line 751 "yaccParser/hslexer.flex"
 { addchar(*yytext); POP_STATE; }
        YY_BREAK
-case 142:
-YY_USER_ACTION
-# line 736 "yaccParser/hslexer.flex"
+case 143:
+YY_RULE_SETUP
+#line 752 "yaccParser/hslexer.flex"
 { addchar('\000'); POP_STATE; }
        YY_BREAK
-case 143:
-YY_USER_ACTION
-# line 737 "yaccParser/hslexer.flex"
+case 144:
+YY_RULE_SETUP
+#line 753 "yaccParser/hslexer.flex"
 { addchar('\001'); POP_STATE; }
        YY_BREAK
-case 144:
-YY_USER_ACTION
-# line 738 "yaccParser/hslexer.flex"
+case 145:
+YY_RULE_SETUP
+#line 754 "yaccParser/hslexer.flex"
 { addchar('\002'); POP_STATE; }
        YY_BREAK
-case 145:
-YY_USER_ACTION
-# line 739 "yaccParser/hslexer.flex"
+case 146:
+YY_RULE_SETUP
+#line 755 "yaccParser/hslexer.flex"
 { addchar('\003'); POP_STATE; }
        YY_BREAK
-case 146:
-YY_USER_ACTION
-# line 740 "yaccParser/hslexer.flex"
+case 147:
+YY_RULE_SETUP
+#line 756 "yaccParser/hslexer.flex"
 { addchar('\004'); POP_STATE; }
        YY_BREAK
-case 147:
-YY_USER_ACTION
-# line 741 "yaccParser/hslexer.flex"
+case 148:
+YY_RULE_SETUP
+#line 757 "yaccParser/hslexer.flex"
 { addchar('\005'); POP_STATE; }
        YY_BREAK
-case 148:
-YY_USER_ACTION
-# line 742 "yaccParser/hslexer.flex"
+case 149:
+YY_RULE_SETUP
+#line 758 "yaccParser/hslexer.flex"
 { addchar('\006'); POP_STATE; }
        YY_BREAK
-case 149:
-# line 744 "yaccParser/hslexer.flex"
 case 150:
-YY_USER_ACTION
-# line 744 "yaccParser/hslexer.flex"
+#line 760 "yaccParser/hslexer.flex"
+case 151:
+YY_RULE_SETUP
+#line 760 "yaccParser/hslexer.flex"
 { addchar('\007'); POP_STATE; }
        YY_BREAK
-case 151:
-# line 746 "yaccParser/hslexer.flex"
 case 152:
-YY_USER_ACTION
-# line 746 "yaccParser/hslexer.flex"
+#line 762 "yaccParser/hslexer.flex"
+case 153:
+YY_RULE_SETUP
+#line 762 "yaccParser/hslexer.flex"
 { addchar('\010'); POP_STATE; }
        YY_BREAK
-case 153:
-# line 748 "yaccParser/hslexer.flex"
 case 154:
-YY_USER_ACTION
-# line 748 "yaccParser/hslexer.flex"
+#line 764 "yaccParser/hslexer.flex"
+case 155:
+YY_RULE_SETUP
+#line 764 "yaccParser/hslexer.flex"
 { addchar('\011'); POP_STATE; }
        YY_BREAK
-case 155:
-# line 750 "yaccParser/hslexer.flex"
 case 156:
-YY_USER_ACTION
-# line 750 "yaccParser/hslexer.flex"
+#line 766 "yaccParser/hslexer.flex"
+case 157:
+YY_RULE_SETUP
+#line 766 "yaccParser/hslexer.flex"
 { addchar('\012'); POP_STATE; }
        YY_BREAK
-case 157:
-# line 752 "yaccParser/hslexer.flex"
 case 158:
-YY_USER_ACTION
-# line 752 "yaccParser/hslexer.flex"
+#line 768 "yaccParser/hslexer.flex"
+case 159:
+YY_RULE_SETUP
+#line 768 "yaccParser/hslexer.flex"
 { addchar('\013'); POP_STATE; }
        YY_BREAK
-case 159:
-# line 754 "yaccParser/hslexer.flex"
 case 160:
-YY_USER_ACTION
-# line 754 "yaccParser/hslexer.flex"
+#line 770 "yaccParser/hslexer.flex"
+case 161:
+YY_RULE_SETUP
+#line 770 "yaccParser/hslexer.flex"
 { addchar('\014'); POP_STATE; }
        YY_BREAK
-case 161:
-# line 756 "yaccParser/hslexer.flex"
 case 162:
-YY_USER_ACTION
-# line 756 "yaccParser/hslexer.flex"
+#line 772 "yaccParser/hslexer.flex"
+case 163:
+YY_RULE_SETUP
+#line 772 "yaccParser/hslexer.flex"
 { addchar('\015'); POP_STATE; }
        YY_BREAK
-case 163:
-YY_USER_ACTION
-# line 757 "yaccParser/hslexer.flex"
+case 164:
+YY_RULE_SETUP
+#line 773 "yaccParser/hslexer.flex"
 { addchar('\016'); POP_STATE; }
        YY_BREAK
-case 164:
-YY_USER_ACTION
-# line 758 "yaccParser/hslexer.flex"
+case 165:
+YY_RULE_SETUP
+#line 774 "yaccParser/hslexer.flex"
 { addchar('\017'); POP_STATE; }
        YY_BREAK
-case 165:
-YY_USER_ACTION
-# line 759 "yaccParser/hslexer.flex"
+case 166:
+YY_RULE_SETUP
+#line 775 "yaccParser/hslexer.flex"
 { addchar('\020'); POP_STATE; }
        YY_BREAK
-case 166:
-YY_USER_ACTION
-# line 760 "yaccParser/hslexer.flex"
+case 167:
+YY_RULE_SETUP
+#line 776 "yaccParser/hslexer.flex"
 { addchar('\021'); POP_STATE; }
        YY_BREAK
-case 167:
-YY_USER_ACTION
-# line 761 "yaccParser/hslexer.flex"
+case 168:
+YY_RULE_SETUP
+#line 777 "yaccParser/hslexer.flex"
 { addchar('\022'); POP_STATE; }
        YY_BREAK
-case 168:
-YY_USER_ACTION
-# line 762 "yaccParser/hslexer.flex"
+case 169:
+YY_RULE_SETUP
+#line 778 "yaccParser/hslexer.flex"
 { addchar('\023'); POP_STATE; }
        YY_BREAK
-case 169:
-YY_USER_ACTION
-# line 763 "yaccParser/hslexer.flex"
+case 170:
+YY_RULE_SETUP
+#line 779 "yaccParser/hslexer.flex"
 { addchar('\024'); POP_STATE; }
        YY_BREAK
-case 170:
-YY_USER_ACTION
-# line 764 "yaccParser/hslexer.flex"
+case 171:
+YY_RULE_SETUP
+#line 780 "yaccParser/hslexer.flex"
 { addchar('\025'); POP_STATE; }
        YY_BREAK
-case 171:
-YY_USER_ACTION
-# line 765 "yaccParser/hslexer.flex"
+case 172:
+YY_RULE_SETUP
+#line 781 "yaccParser/hslexer.flex"
 { addchar('\026'); POP_STATE; }
        YY_BREAK
-case 172:
-YY_USER_ACTION
-# line 766 "yaccParser/hslexer.flex"
+case 173:
+YY_RULE_SETUP
+#line 782 "yaccParser/hslexer.flex"
 { addchar('\027'); POP_STATE; }
        YY_BREAK
-case 173:
-YY_USER_ACTION
-# line 767 "yaccParser/hslexer.flex"
+case 174:
+YY_RULE_SETUP
+#line 783 "yaccParser/hslexer.flex"
 { addchar('\030'); POP_STATE; }
        YY_BREAK
-case 174:
-YY_USER_ACTION
-# line 768 "yaccParser/hslexer.flex"
+case 175:
+YY_RULE_SETUP
+#line 784 "yaccParser/hslexer.flex"
 { addchar('\031'); POP_STATE; }
        YY_BREAK
-case 175:
-YY_USER_ACTION
-# line 769 "yaccParser/hslexer.flex"
+case 176:
+YY_RULE_SETUP
+#line 785 "yaccParser/hslexer.flex"
 { addchar('\032'); POP_STATE; }
        YY_BREAK
-case 176:
-YY_USER_ACTION
-# line 770 "yaccParser/hslexer.flex"
+case 177:
+YY_RULE_SETUP
+#line 786 "yaccParser/hslexer.flex"
 { addchar('\033'); POP_STATE; }
        YY_BREAK
-case 177:
-YY_USER_ACTION
-# line 771 "yaccParser/hslexer.flex"
+case 178:
+YY_RULE_SETUP
+#line 787 "yaccParser/hslexer.flex"
 { addchar('\034'); POP_STATE; }
        YY_BREAK
-case 178:
-YY_USER_ACTION
-# line 772 "yaccParser/hslexer.flex"
+case 179:
+YY_RULE_SETUP
+#line 788 "yaccParser/hslexer.flex"
 { addchar('\035'); POP_STATE; }
        YY_BREAK
-case 179:
-YY_USER_ACTION
-# line 773 "yaccParser/hslexer.flex"
+case 180:
+YY_RULE_SETUP
+#line 789 "yaccParser/hslexer.flex"
 { addchar('\036'); POP_STATE; }
        YY_BREAK
-case 180:
-YY_USER_ACTION
-# line 774 "yaccParser/hslexer.flex"
+case 181:
+YY_RULE_SETUP
+#line 790 "yaccParser/hslexer.flex"
 { addchar('\037'); POP_STATE; }
        YY_BREAK
-case 181:
-YY_USER_ACTION
-# line 775 "yaccParser/hslexer.flex"
+case 182:
+YY_RULE_SETUP
+#line 791 "yaccParser/hslexer.flex"
 { addchar('\040'); POP_STATE; }
        YY_BREAK
-case 182:
-YY_USER_ACTION
-# line 776 "yaccParser/hslexer.flex"
+case 183:
+YY_RULE_SETUP
+#line 792 "yaccParser/hslexer.flex"
 { addchar('\177'); POP_STATE; }
        YY_BREAK
-case 183:
-YY_USER_ACTION
-# line 777 "yaccParser/hslexer.flex"
+case 184:
+YY_RULE_SETUP
+#line 793 "yaccParser/hslexer.flex"
 { char c = yytext[1] - '@'; addchar(c); POP_STATE; }
        YY_BREAK
-case 184:
-YY_USER_ACTION
-# line 778 "yaccParser/hslexer.flex"
+case 185:
+YY_RULE_SETUP
+#line 794 "yaccParser/hslexer.flex"
 {
                          int i = strtol(yytext, NULL, 10);
                          if (i < NCHARS) {
@@ -2763,9 +2856,9 @@ YY_USER_ACTION
                          POP_STATE;
                        }
        YY_BREAK
-case 185:
-YY_USER_ACTION
-# line 790 "yaccParser/hslexer.flex"
+case 186:
+YY_RULE_SETUP
+#line 806 "yaccParser/hslexer.flex"
 {
                          int i = strtol(yytext + 1, NULL, 8);
                          if (i < NCHARS) {
@@ -2779,9 +2872,9 @@ YY_USER_ACTION
                          POP_STATE;
                        }
        YY_BREAK
-case 186:
-YY_USER_ACTION
-# line 802 "yaccParser/hslexer.flex"
+case 187:
+YY_RULE_SETUP
+#line 818 "yaccParser/hslexer.flex"
 {
                          int i = strtol(yytext + 1, NULL, 16);
                          if (i < NCHARS) {
@@ -2800,13 +2893,17 @@ YY_USER_ACTION
      * Simple comments and whitespace.  Normally, we would just ignore these, but
      * in case we're processing a string escape, we need to note that we've seen
      * a gap.
+     *
+     * Note that we cater for a comment line that *doesn't* end in a newline.
+     * This is incorrect, strictly speaking, but seems like the right thing
+     * to do.  Reported by Rajiv Mirani.  (WDP 95/08)
      */
 
-case 187:
-# line 824 "yaccParser/hslexer.flex"
 case 188:
-YY_USER_ACTION
-# line 824 "yaccParser/hslexer.flex"
+#line 844 "yaccParser/hslexer.flex"
+case 189:
+YY_RULE_SETUP
+#line 844 "yaccParser/hslexer.flex"
 { noGap = FALSE; }
        YY_BREAK
 
@@ -2816,35 +2913,35 @@ YY_USER_ACTION
      * That's why the rules look so bizarre.
      */
 
-case 189:
-YY_USER_ACTION
-# line 834 "yaccParser/hslexer.flex"
+case 190:
+YY_RULE_SETUP
+#line 854 "yaccParser/hslexer.flex"
 { 
                          noGap = FALSE; nested_comments = 1; PUSH_STATE(Comment); 
                        }
        YY_BREAK
-case 190:
-# line 839 "yaccParser/hslexer.flex"
 case 191:
-# line 840 "yaccParser/hslexer.flex"
+#line 859 "yaccParser/hslexer.flex"
 case 192:
-YY_USER_ACTION
-# line 840 "yaccParser/hslexer.flex"
+#line 860 "yaccParser/hslexer.flex"
+case 193:
+YY_RULE_SETUP
+#line 860 "yaccParser/hslexer.flex"
 ;
        YY_BREAK
-case 193:
-YY_USER_ACTION
-# line 841 "yaccParser/hslexer.flex"
+case 194:
+YY_RULE_SETUP
+#line 861 "yaccParser/hslexer.flex"
 { nested_comments++; }
        YY_BREAK
-case 194:
-YY_USER_ACTION
-# line 842 "yaccParser/hslexer.flex"
+case 195:
+YY_RULE_SETUP
+#line 862 "yaccParser/hslexer.flex"
 { if (--nested_comments == 0) POP_STATE; }
        YY_BREAK
-case 195:
-YY_USER_ACTION
-# line 843 "yaccParser/hslexer.flex"
+case 196:
+YY_RULE_SETUP
+#line 863 "yaccParser/hslexer.flex"
 ;
        YY_BREAK
 
@@ -2854,9 +2951,9 @@ YY_USER_ACTION
      * the error message.
      */
 
-case 196:
-YY_USER_ACTION
-# line 853 "yaccParser/hslexer.flex"
+case 197:
+YY_RULE_SETUP
+#line 873 "yaccParser/hslexer.flex"
 { 
                         fprintf(stderr, "\"%s\", line %d, column %d: Illegal character: `", 
                            input_filename, hsplineno, hspcolno + 1); 
@@ -2865,9 +2962,9 @@ YY_USER_ACTION
                         hsperror("");
                        }
        YY_BREAK
-case 197:
-YY_USER_ACTION
-# line 860 "yaccParser/hslexer.flex"
+case 198:
+YY_RULE_SETUP
+#line 880 "yaccParser/hslexer.flex"
 { 
                         fprintf(stderr, "\"%s\", line %d, column %d: Illegal character: `",
                            input_filename, hsplineno, hspcolno + 1); 
@@ -2876,9 +2973,9 @@ YY_USER_ACTION
                         hsperror("");
                        }
        YY_BREAK
-case 198:
-YY_USER_ACTION
-# line 867 "yaccParser/hslexer.flex"
+case 199:
+YY_RULE_SETUP
+#line 887 "yaccParser/hslexer.flex"
 {
                         fprintf(stderr, "\"%s\", line %d, column %d: Illegal character escape: `\\",
                            input_filename, hsplineno, hspcolno + 1); 
@@ -2887,9 +2984,9 @@ YY_USER_ACTION
                         hsperror("");
                        }
        YY_BREAK
-case 199:
-YY_USER_ACTION
-# line 874 "yaccParser/hslexer.flex"
+case 200:
+YY_RULE_SETUP
+#line 894 "yaccParser/hslexer.flex"
 { if (nonstandardFlag) {
                              addtext(yytext, yyleng);
                           } else { 
@@ -2901,9 +2998,9 @@ YY_USER_ACTION
                          }
                        }
        YY_BREAK
-case 200:
-YY_USER_ACTION
-# line 884 "yaccParser/hslexer.flex"
+case 201:
+YY_RULE_SETUP
+#line 904 "yaccParser/hslexer.flex"
 {
                         if (noGap) {
                             fprintf(stderr, "\"%s\", line %d, column %d: Illegal string escape: `\\", 
@@ -2934,14 +3031,14 @@ YY_USER_ACTION
 
 case YY_STATE_EOF(Char):
 case YY_STATE_EOF(CharEsc):
-# line 913 "yaccParser/hslexer.flex"
+#line 933 "yaccParser/hslexer.flex"
 { 
                          hsplineno = hslineno; hspcolno = hscolno;
                          hsperror("unterminated character literal");
                        }
        YY_BREAK
 case YY_STATE_EOF(Comment):
-# line 917 "yaccParser/hslexer.flex"
+#line 937 "yaccParser/hslexer.flex"
 { 
                          hsplineno = hslineno; hspcolno = hscolno;
                          hsperror("unterminated comment"); 
@@ -2949,21 +3046,21 @@ case YY_STATE_EOF(Comment):
        YY_BREAK
 case YY_STATE_EOF(String):
 case YY_STATE_EOF(StringEsc):
-# line 921 "yaccParser/hslexer.flex"
+#line 941 "yaccParser/hslexer.flex"
 { 
                          hsplineno = hslineno; hspcolno = hscolno;
                          hsperror("unterminated string literal"); 
                        }
        YY_BREAK
 case YY_STATE_EOF(GhcPragma):
-# line 925 "yaccParser/hslexer.flex"
+#line 945 "yaccParser/hslexer.flex"
 {
                          hsplineno = hslineno; hspcolno = hscolno;
                          hsperror("unterminated interface pragma"); 
                        }
        YY_BREAK
 case YY_STATE_EOF(UserPragma):
-# line 929 "yaccParser/hslexer.flex"
+#line 949 "yaccParser/hslexer.flex"
 {
                          hsplineno = hslineno; hspcolno = hscolno;
                          hsperror("unterminated user-specified pragma"); 
@@ -2971,12 +3068,12 @@ case YY_STATE_EOF(UserPragma):
        YY_BREAK
 case YY_STATE_EOF(Code):
 case YY_STATE_EOF(GlaExt):
-# line 933 "yaccParser/hslexer.flex"
+#line 953 "yaccParser/hslexer.flex"
 { hsplineno = hslineno; hspcolno = hscolno; return(EOF); }
        YY_BREAK
-case 201:
-YY_USER_ACTION
-# line 935 "yaccParser/hslexer.flex"
+case 202:
+YY_RULE_SETUP
+#line 955 "yaccParser/hslexer.flex"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
@@ -2985,7 +3082,7 @@ case YY_STATE_EOF(INITIAL):
        case YY_END_OF_BUFFER:
                {
                /* Amount of text matched not including the EOB char. */
-               int yy_amount_of_matched_text = yy_cp - yytext_ptr - 1;
+               int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
 
                /* Undo the effects of YY_DO_BEFORE_ACTION. */
                *yy_cp = yy_hold_char;
@@ -3044,7 +3141,7 @@ case YY_STATE_EOF(INITIAL):
 
                        else
                                {
-                                                       yy_cp = yy_c_buf_p;
+                               yy_cp = yy_c_buf_p;
                                goto yy_find_action;
                                }
                        }
@@ -3122,7 +3219,7 @@ case YY_STATE_EOF(INITIAL):
 static int yy_get_next_buffer()
        {
        register char *dest = yy_current_buffer->yy_ch_buf;
-       register char *source = yytext_ptr - 1; /* copy prev. char, too */
+       register char *source = yytext_ptr;
        register int number_to_move, i;
        int ret_val;
 
@@ -3152,7 +3249,7 @@ static int yy_get_next_buffer()
        /* Try to read more data. */
 
        /* First move last chars to start of buffer. */
-       number_to_move = yy_c_buf_p - yytext_ptr;
+       number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
 
        for ( i = 0; i < number_to_move; ++i )
                *(dest++) = *(source++);
@@ -3178,12 +3275,26 @@ static int yy_get_next_buffer()
                        /* just a shorter name for the current buffer */
                        YY_BUFFER_STATE b = yy_current_buffer;
 
-                       int yy_c_buf_p_offset = yy_c_buf_p - b->yy_ch_buf;
+                       int yy_c_buf_p_offset =
+                               (int) (yy_c_buf_p - b->yy_ch_buf);
+
+                       if ( b->yy_is_our_buffer )
+                               {
+                               int new_size = b->yy_buf_size * 2;
+
+                               if ( new_size <= 0 )
+                                       b->yy_buf_size += b->yy_buf_size / 8;
+                               else
+                                       b->yy_buf_size *= 2;
 
-                       b->yy_buf_size *= 2;
-                       b->yy_ch_buf = (char *)
-                               yy_flex_realloc( (void *) b->yy_ch_buf,
-                                                b->yy_buf_size );
+                               b->yy_ch_buf = (char *)
+                                       /* Include room in for 2 EOB chars. */
+                                       yy_flex_realloc( (void *) b->yy_ch_buf,
+                                                        b->yy_buf_size + 2 );
+                               }
+                       else
+                               /* Can't grow it, we don't own it. */
+                               b->yy_ch_buf = 0;
 
                        if ( ! b->yy_ch_buf )
                                YY_FATAL_ERROR(
@@ -3206,7 +3317,7 @@ static int yy_get_next_buffer()
 
        if ( yy_n_chars == 0 )
                {
-               if ( number_to_move - YY_MORE_ADJ == 1 )
+               if ( number_to_move == YY_MORE_ADJ )
                        {
                        ret_val = EOB_ACT_END_OF_FILE;
                        yyrestart( yyin );
@@ -3227,13 +3338,7 @@ static int yy_get_next_buffer()
        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_ptr = &yy_current_buffer->yy_ch_buf[1];
+       yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
 
        return ret_val;
        }
@@ -3246,11 +3351,8 @@ static yy_state_type yy_get_previous_state()
        register yy_state_type yy_current_state;
        register char *yy_cp;
 
-       register char *yy_bp = yytext_ptr;
-
        yy_current_state = yy_start;
-       if ( yy_bp[-1] == '\n' )
-               ++yy_current_state;
+       yy_current_state += YY_AT_BOL();
 
        for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
                {
@@ -3263,7 +3365,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 838 )
+                       if ( yy_current_state >= 743 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3298,16 +3400,17 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 838 )
+               if ( yy_current_state >= 743 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 837);
+       yy_is_jam = (yy_current_state == 742);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
 
 
+#ifndef YY_NO_UNPUT
 #ifdef YY_USE_PROTOS
 static void yyunput( int c, register char *yy_bp )
 #else
@@ -3333,25 +3436,22 @@ register char *yy_bp;
                while ( source > yy_current_buffer->yy_ch_buf )
                        *--dest = *--source;
 
-               yy_cp += dest - source;
-               yy_bp += dest - source;
+               yy_cp += (int) (dest - source);
+               yy_bp += (int) (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 = (char) 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 */
+       yytext_ptr = yy_bp;
+       yy_hold_char = *yy_cp;
+       yy_c_buf_p = yy_cp;
        }
+#endif /* ifndef YY_NO_UNPUT */
 
 
 #ifdef __cplusplus
@@ -3390,7 +3490,8 @@ static int input()
                                                return EOF;
                                                }
 
-                                       YY_NEW_FILE;
+                                       if ( ! yy_did_buffer_switch_on_eof )
+                                               YY_NEW_FILE;
 #ifdef __cplusplus
                                        return yyinput();
 #else
@@ -3418,6 +3519,8 @@ static int input()
        *yy_c_buf_p = '\0';     /* preserve yytext */
        yy_hold_char = *++yy_c_buf_p;
 
+       yy_current_buffer->yy_at_bol = (c == '\n');
+
        return c;
        }
 
@@ -3491,7 +3594,6 @@ int size;
        YY_BUFFER_STATE b;
 
        b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-
        if ( ! b )
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
@@ -3501,10 +3603,11 @@ int size;
         * we need to put in 2 end-of-buffer characters.
         */
        b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
-
        if ( ! b->yy_ch_buf )
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
+       b->yy_is_our_buffer = 1;
+
        yy_init_buffer( b, file );
 
        return b;
@@ -3518,14 +3621,25 @@ void yy_delete_buffer( b )
 YY_BUFFER_STATE b;
 #endif
        {
+       if ( ! b )
+               return;
+
        if ( b == yy_current_buffer )
                yy_current_buffer = (YY_BUFFER_STATE) 0;
 
-       yy_flex_free( (void *) b->yy_ch_buf );
+       if ( b->yy_is_our_buffer )
+               yy_flex_free( (void *) b->yy_ch_buf );
+
        yy_flex_free( (void *) b );
        }
 
 
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+
 #ifdef YY_USE_PROTOS
 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
 #else
@@ -3533,33 +3647,148 @@ void yy_init_buffer( b, file )
 YY_BUFFER_STATE b;
 FILE *file;
 #endif
+
+
        {
+       yy_flush_buffer( b );
+
        b->yy_input_file = file;
+       b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+       b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+       b->yy_is_interactive = 0;
+#else
+       b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+       }
 
-       /* 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;
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+       {
+       b->yy_n_chars = 0;
 
        /* 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[0] = YY_END_OF_BUFFER_CHAR;
        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_buf_pos = &b->yy_ch_buf[0];
 
-       b->yy_is_interactive = file ? isatty( fileno(file) ) : 0;
+       b->yy_at_bol = 1;
+       b->yy_buffer_status = YY_BUFFER_NEW;
 
-       b->yy_fill_buffer = 1;
+       if ( b == yy_current_buffer )
+               yy_load_buffer_state();
+       }
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+       {
+       YY_BUFFER_STATE b;
 
+       if ( size < 2 ||
+            base[size-2] != YY_END_OF_BUFFER_CHAR ||
+            base[size-1] != YY_END_OF_BUFFER_CHAR )
+               /* They forgot to leave room for the EOB's. */
+               return 0;
+
+       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+       if ( ! b )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
+       b->yy_buf_pos = b->yy_ch_buf = base;
+       b->yy_is_our_buffer = 0;
+       b->yy_input_file = 0;
+       b->yy_n_chars = b->yy_buf_size;
+       b->yy_is_interactive = 0;
+       b->yy_at_bol = 1;
+       b->yy_fill_buffer = 0;
        b->yy_buffer_status = YY_BUFFER_NEW;
+
+       yy_switch_to_buffer( b );
+
+       return b;
+       }
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *str )
+#else
+YY_BUFFER_STATE yy_scan_string( str )
+yyconst char *str;
+#endif
+       {
+       int len;
+       for ( len = 0; str[len]; ++len )
+               ;
+
+       return yy_scan_bytes( str, len );
+       }
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+       {
+       YY_BUFFER_STATE b;
+       char *buf;
+       yy_size_t n;
+       int i;
+
+       /* Get memory for full buffer, including space for trailing EOB's. */
+       n = len + 2;
+       buf = (char *) yy_flex_alloc( n );
+       if ( ! buf )
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+       for ( i = 0; i < len; ++i )
+               buf[i] = bytes[i];
+
+       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+       b = yy_scan_buffer( buf, n );
+       if ( ! b )
+               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+       /* It's okay to grow etc. this buffer, and we should throw it
+        * away when we're done.
+        */
+       b->yy_is_our_buffer = 1;
+
+       return b;
        }
+#endif
 
 
+#ifndef YY_NO_PUSH_STATE
 #ifdef YY_USE_PROTOS
 static void yy_push_state( int new_state )
 #else
@@ -3569,7 +3798,7 @@ int new_state;
        {
        if ( yy_start_stack_ptr >= yy_start_stack_depth )
                {
-               int new_size;
+               yy_size_t new_size;
 
                yy_start_stack_depth += YY_START_STACK_INCR;
                new_size = yy_start_stack_depth * sizeof( int );
@@ -3590,8 +3819,10 @@ int new_state;
 
        BEGIN(new_state);
        }
+#endif
 
 
+#ifndef YY_NO_POP_STATE
 static void yy_pop_state()
        {
        if ( --yy_start_stack_ptr < 0 )
@@ -3599,23 +3830,29 @@ static void yy_pop_state()
 
        BEGIN(yy_start_stack[yy_start_stack_ptr]);
        }
+#endif
 
 
+#ifndef YY_NO_TOP_STATE
 static int yy_top_state()
        {
        return yy_start_stack[yy_start_stack_ptr - 1];
        }
+#endif
 
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
 
 #ifdef YY_USE_PROTOS
-static void yy_fatal_error( const char msg[] )
+static void yy_fatal_error( yyconst char msg[] )
 #else
 static void yy_fatal_error( msg )
 char msg[];
 #endif
        {
        (void) fprintf( stderr, "%s\n", msg );
-       exit( 1 );
+       exit( YY_EXIT_FAILURE );
        }
 
 
@@ -3640,11 +3877,11 @@ char msg[];
 
 #ifndef yytext_ptr
 #ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, const char *s2, int n )
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
 #else
 static void yy_flex_strncpy( s1, s2, n )
 char *s1;
-const char *s2;
+yyconst char *s2;
 int n;
 #endif
        {
@@ -3656,24 +3893,31 @@ int n;
 
 
 #ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( unsigned int size )
+static void *yy_flex_alloc( yy_size_t size )
 #else
 static void *yy_flex_alloc( size )
-unsigned int size;
+yy_size_t size;
 #endif
        {
        return (void *) malloc( size );
        }
 
 #ifdef YY_USE_PROTOS
-static void *yy_flex_realloc( void *ptr, unsigned int size )
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
 #else
 static void *yy_flex_realloc( ptr, size )
 void *ptr;
-unsigned int size;
+yy_size_t size;
 #endif
        {
-       return (void *) realloc( ptr, size );
+       /* The cast to (char *) in the following accommodates both
+        * implementations that use char* generic pointers, and those
+        * that use void* generic pointers.  It works with the latter
+        * because both ANSI C and C++ allow castless assignment from
+        * any pointer type to void*, and deal with argument conversions
+        * as though doing an assignment.
+        */
+       return (void *) realloc( (char *) ptr, size );
        }
 
 #ifdef YY_USE_PROTOS
@@ -3685,7 +3929,15 @@ void *ptr;
        {
        free( ptr );
        }
-# line 935 "yaccParser/hslexer.flex"
+
+#if YY_MAIN
+int main()
+       {
+       yylex();
+       return 0;
+       }
+#endif
+#line 955 "yaccParser/hslexer.flex"
 
 
 /**********************************************************************
@@ -3701,11 +3953,11 @@ void *ptr;
    This allows unnamed sources to be piped into the parser.
 */
 
+extern BOOLEAN acceptPrim;
+
 void
-yyinit()
+yyinit(void)
 {
-    extern BOOLEAN acceptPrim;
-
     input_filename = xstrdup("<stdin>");
 
     /* We must initialize the input buffer _now_, because we call
@@ -3718,9 +3970,8 @@ yyinit()
        PUSH_STATE(Code);
 }
 
-void
-new_filename(f) /* This looks pretty dodgy to me (WDP) */
-  char *f;
+static void
+new_filename(char *f) /* This looks pretty dodgy to me (WDP) */
 {
     if (input_filename != NULL)
        free(input_filename);
@@ -3740,8 +3991,8 @@ new_filename(f) /* This looks pretty dodgy to me (WDP) */
        forcing insertion of ; or } as appropriate
 */
 
-BOOLEAN
-hsshouldindent()
+static BOOLEAN
+hsshouldindent(void)
 {
     return (!forgetindent && INDENTON);
 }
@@ -3749,7 +4000,7 @@ hsshouldindent()
 
 /* Enter new context and set new indentation level */
 void
-hssetindent()
+hssetindent(void)
 {
 #ifdef HSP_DEBUG
     fprintf(stderr, "hssetindent:hscolno=%d,hspcolno=%d,INDENTPT[%d]=%d\n", hscolno, hspcolno, icontexts, INDENTPT);
@@ -3778,7 +4029,7 @@ hssetindent()
 
 /* Enter a new context without changing the indentation level */
 void
-hsincindent()
+hsincindent(void)
 {
 #ifdef HSP_DEBUG
     fprintf(stderr, "hsincindent:hscolno=%d,hspcolno=%d,INDENTPT[%d]=%d\n", hscolno, hspcolno, icontexts, INDENTPT);
@@ -3789,16 +4040,15 @@ hsincindent()
 
 /* Turn off indentation processing, usually because an explicit "{" has been seen */
 void
-hsindentoff()
+hsindentoff(void)
 {
     forgetindent = TRUE;
 }
 
 
 /* Enter a new layout context. */
-void
-hsentercontext(indent)
-  int indent;
+static void
+hsentercontext(int indent)
 {
     /* Enter new context and set indentation as specified */
     if (++icontexts >= MAX_CONTEXTS) {
@@ -3817,7 +4067,7 @@ hsentercontext(indent)
 
 /* Exit a layout context */
 void
-hsendindent()
+hsendindent(void)
 {
     --icontexts;
 #ifdef HSP_DEBUG
@@ -3829,9 +4079,8 @@ hsendindent()
  *     Return checks the indentation level and returns ;, } or the specified token.
  */
 
-int
-Return(tok)
-  int tok;
+static int
+Return(int tok)
 {
 #ifdef HSP_DEBUG
     extern int yyleng;
@@ -3928,12 +4177,11 @@ yylex()
 **********************************************************************/
 
 /* setyyin(file)       open file as new lex input buffer */
+extern FILE *yyin;
+
 void
-setyyin(file)
-  char *file;
+setyyin(char *file)
 {
-    extern FILE *yyin;
-
     hsbuf_save = YY_CURRENT_BUFFER;
     if ((yyin = fopen(file, "r")) == NULL) {
        char errbuf[ERR_BUF_SIZE];
@@ -3964,10 +4212,8 @@ setyyin(file)
 #endif
 }
 
-static VOID
-layout_input(text, len)
-char *text;
-int len;
+static void
+layout_input(char *text, int len)
 {
 #ifdef HSP_DEBUG
     fprintf(stderr, "Scanning \"%s\"\n", text);
@@ -3997,7 +4243,7 @@ int len;
 }
 
 void
-setstartlineno()
+setstartlineno(void)
 {
     startlineno = hsplineno;
 #if 1/*etags*/
@@ -4023,8 +4269,8 @@ static struct {
     char *text;
 } textcache = { 0, 0, NULL };
 
-static VOID
-cleartext()
+static void
+cleartext(void)
 {
 /*  fprintf(stderr, "cleartext\n"); */
     textcache.next = 0;
@@ -4034,10 +4280,8 @@ cleartext()
     }
 }
 
-static VOID
-addtext(text, length)
-char *text;
-unsigned length;
+static void
+addtext(char *text, unsigned length)
 {
 /*  fprintf(stderr, "addtext: %d %s\n", length, text); */
 
@@ -4052,13 +4296,8 @@ unsigned length;
     textcache.next += length;
 }
 
-static VOID
-#ifdef __STDC__
+static void
 addchar(char c)
-#else
-addchar(c)
-  char c;
-#endif
 {
 /*  fprintf(stderr, "addchar: %c\n", c); */
 
@@ -4070,8 +4309,7 @@ addchar(c)
 }
 
 static char *
-fetchtext(length)
-unsigned *length;
+fetchtext(unsigned *length)
 {
 /*  fprintf(stderr, "fetchtext: %d\n", textcache.next); */
 
@@ -4092,10 +4330,8 @@ unsigned *length;
        hsnewid         Enters an id of length n into the symbol table.
 */
 
-static VOID
-hsnewid(name, length)
-char *name;
-int length;
+static void
+hsnewid(char *name, int length)
 {
     char save = name[length];
 
@@ -4105,8 +4341,7 @@ int length;
 }
 
 BOOLEAN 
-isconstr(s) /* walks past leading underscores before using the macro */
-  char *s;
+isconstr(char *s) /* walks past leading underscores before using the macro */
 {
     char *temp = s;