/[ascend]/trunk/tcltk/generic/interface/typelex_no_lex.c
ViewVC logotype

Diff of /trunk/tcltk/generic/interface/typelex_no_lex.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1521 by jpye, Sat Jun 30 01:23:36 2007 UTC revision 1522 by jpye, Sat Jun 30 14:08:56 2007 UTC
# Line 1  Line 1 
1  #define yy_create_buffer typ__create_buffer  
2  #define yy_delete_buffer typ__delete_buffer  #line 3 "<stdout>"
3  #define yy_scan_buffer typ__scan_buffer  
4  #define yy_scan_string typ__scan_string  #define  YY_INT_ALIGNED short int
5  #define yy_scan_bytes typ__scan_bytes  
6  #define yy_flex_debug typ__flex_debug  /* A lexical scanner generated by flex */
7  #define yy_init_buffer typ__init_buffer  
8  #define yy_flush_buffer typ__flush_buffer  #define FLEX_SCANNER
9  #define yy_load_buffer_state typ__load_buffer_state  #define YY_FLEX_MAJOR_VERSION 2
10  #define yy_switch_to_buffer typ__switch_to_buffer  #define YY_FLEX_MINOR_VERSION 5
11  #define yyin typ_in  #define YY_FLEX_SUBMINOR_VERSION 33
12  #define yyleng typ_leng  #if YY_FLEX_SUBMINOR_VERSION > 0
13  #define yylex typ_lex  #define FLEX_BETA
14  #define yyout typ_out  #endif
15  #define yyrestart typ_restart  
16  #define yytext typ_text  /* First, we deal with  platform-specific or compiler-specific issues. */
17  #define yylineno typ_lineno  
18  #define yywrap typ_wrap  /* begin standard C headers. */
19    #include <stdio.h>
20  /* A lexical scanner generated by flex */  #include <string.h>
21    #include <errno.h>
22  /* Scanner skeleton version:  #include <stdlib.h>
23   * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $  
24   */  /* end standard C headers. */
25    
26  #define FLEX_SCANNER  /* flex integer type definitions */
27  #define YY_FLEX_MAJOR_VERSION 2  
28  #define YY_FLEX_MINOR_VERSION 5  #ifndef FLEXINT_H
29    #define FLEXINT_H
30  #include <stdio.h>  
31    /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32    
33  /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */  #if __STDC_VERSION__ >= 199901L
34  #ifdef c_plusplus  
35  #ifndef __cplusplus  /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36  #define __cplusplus   * if you want the limit (max/min) macros for int types.
37  #endif   */
38  #endif  #ifndef __STDC_LIMIT_MACROS
39    #define __STDC_LIMIT_MACROS 1
40    #endif
41  #ifdef __cplusplus  
42    #include <inttypes.h>
43  #include <stdlib.h>  typedef int8_t flex_int8_t;
44  #include <unistd.h>  typedef uint8_t flex_uint8_t;
45    typedef int16_t flex_int16_t;
46  /* Use prototypes in function declarations. */  typedef uint16_t flex_uint16_t;
47  #define YY_USE_PROTOS  typedef int32_t flex_int32_t;
48    typedef uint32_t flex_uint32_t;
49  /* The "const" storage-class-modifier is valid. */  #else
50  #define YY_USE_CONST  typedef signed char flex_int8_t;
51    typedef short int flex_int16_t;
52  #else   /* ! __cplusplus */  typedef int flex_int32_t;
53    typedef unsigned char flex_uint8_t;
54  #if __STDC__  typedef unsigned short int flex_uint16_t;
55    typedef unsigned int flex_uint32_t;
56  #define YY_USE_PROTOS  #endif /* ! C99 */
57  #define YY_USE_CONST  
58    /* Limits of integral types. */
59  #endif  /* __STDC__ */  #ifndef INT8_MIN
60  #endif  /* ! __cplusplus */  #define INT8_MIN               (-128)
61    #endif
62  #ifdef __TURBOC__  #ifndef INT16_MIN
63   #pragma warn -rch  #define INT16_MIN              (-32767-1)
64   #pragma warn -use  #endif
65  #include <io.h>  #ifndef INT32_MIN
66  #include <stdlib.h>  #define INT32_MIN              (-2147483647-1)
67  #define YY_USE_CONST  #endif
68  #define YY_USE_PROTOS  #ifndef INT8_MAX
69  #endif  #define INT8_MAX               (127)
70    #endif
71  #ifdef YY_USE_CONST  #ifndef INT16_MAX
72  #define yyconst const  #define INT16_MAX              (32767)
73  #else  #endif
74  #define yyconst  #ifndef INT32_MAX
75  #endif  #define INT32_MAX              (2147483647)
76    #endif
77    #ifndef UINT8_MAX
78  #ifdef YY_USE_PROTOS  #define UINT8_MAX              (255U)
79  #define YY_PROTO(proto) proto  #endif
80  #else  #ifndef UINT16_MAX
81  #define YY_PROTO(proto) ()  #define UINT16_MAX             (65535U)
82  #endif  #endif
83    #ifndef UINT32_MAX
84  /* Returned upon end-of-file. */  #define UINT32_MAX             (4294967295U)
85  #define YY_NULL 0  #endif
86    
87  /* Promotes a possibly negative, possibly signed char to an unsigned  #endif /* ! FLEXINT_H */
88   * integer for use as an array index.  If the signed char is negative,  
89   * we want to instead treat it as an 8-bit unsigned char, hence the  #ifdef __cplusplus
90   * double cast.  
91   */  /* The "const" storage-class-modifier is valid. */
92  #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)  #define YY_USE_CONST
93    
94  /* Enter a start condition.  This macro really ought to take a parameter,  #else   /* ! __cplusplus */
95   * but we do it the disgusting crufty way forced on us by the ()-less  
96   * definition of BEGIN.  #if __STDC__
97   */  
98  #define BEGIN yy_start = 1 + 2 *  #define YY_USE_CONST
99    
100  /* Translate the current start state into a value that can be later handed  #endif  /* __STDC__ */
101   * to BEGIN to return to the state.  The YYSTATE alias is for lex  #endif  /* ! __cplusplus */
102   * compatibility.  
103   */  #ifdef YY_USE_CONST
104  #define YY_START ((yy_start - 1) / 2)  #define yyconst const
105  #define YYSTATE YY_START  #else
106    #define yyconst
107  /* Action number for EOF rule of a given start state. */  #endif
108  #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)  
109    /* Returned upon end-of-file. */
110  /* Special action meaning "start processing a new file". */  #define YY_NULL 0
111  #define YY_NEW_FILE yyrestart( yyin )  
112    /* Promotes a possibly negative, possibly signed char to an unsigned
113  #define YY_END_OF_BUFFER_CHAR 0   * integer for use as an array index.  If the signed char is negative,
114     * we want to instead treat it as an 8-bit unsigned char, hence the
115  /* Size of default input buffer. */   * double cast.
116  #define YY_BUF_SIZE 16384   */
117    #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
118  typedef struct yy_buffer_state *YY_BUFFER_STATE;  
119    /* Enter a start condition.  This macro really ought to take a parameter,
120  extern int yyleng;   * but we do it the disgusting crufty way forced on us by the ()-less
121  extern FILE *yyin, *yyout;   * definition of BEGIN.
122     */
123  #define EOB_ACT_CONTINUE_SCAN 0  #define BEGIN (yy_start) = 1 + 2 *
124  #define EOB_ACT_END_OF_FILE 1  
125  #define EOB_ACT_LAST_MATCH 2  /* Translate the current start state into a value that can be later handed
126     * to BEGIN to return to the state.  The YYSTATE alias is for lex
127  /* The funky do-while in the following #define is used to turn the definition   * compatibility.
128   * int a single C statement (which needs a semi-colon terminator).  This   */
129   * avoids problems with code like:  #define YY_START (((yy_start) - 1) / 2)
130   *  #define YYSTATE YY_START
131   *  if ( condition_holds )  
132   *      yyless( 5 );  /* Action number for EOF rule of a given start state. */
133   *  else  #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
134   *      do_something_else();  
135   *  /* Special action meaning "start processing a new file". */
136   * Prior to using the do-while the compiler would get upset at the  #define YY_NEW_FILE typ_restart(typ_in  )
137   * "else" because it interpreted the "if" statement as being all  
138   * done when it reached the ';' after the yyless() call.  #define YY_END_OF_BUFFER_CHAR 0
139   */  
140    /* Size of default input buffer. */
141  /* Return all but the first 'n' matched characters back to the input stream. */  #ifndef YY_BUF_SIZE
142    #define YY_BUF_SIZE 16384
143  #define yyless(n) \  #endif
144      do \  
145          { \  /* The state buf must be large enough to hold one state per character in the main buffer.
146          /* Undo effects of setting up yytext. */ \   */
147          *yy_cp = yy_hold_char; \  #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
148          YY_RESTORE_YY_MORE_OFFSET \  
149          yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \  #ifndef YY_TYPEDEF_YY_BUFFER_STATE
150          YY_DO_BEFORE_ACTION; /* set up yytext again */ \  #define YY_TYPEDEF_YY_BUFFER_STATE
151          } \  typedef struct yy_buffer_state *YY_BUFFER_STATE;
152      while ( 0 )  #endif
153    
154  #define unput(c) yyunput( c, yytext_ptr )  extern int typ_leng;
155    
156  /* The following is because we cannot portably get our hands on size_t  extern FILE *typ_in, *typ_out;
157   * (without autoconf's help, which isn't available because we want  
158   * flex-generated scanners to compile on their own).  #define EOB_ACT_CONTINUE_SCAN 0
159   */  #define EOB_ACT_END_OF_FILE 1
160  typedef unsigned int yy_size_t;  #define EOB_ACT_LAST_MATCH 2
161    
162        /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
163  struct yy_buffer_state       *       access to the local variable yy_act. Since yyless() is a macro, it would break
164      {       *       existing scanners that call yyless() from OUTSIDE typ_lex.
165      FILE *yy_input_file;       *       One obvious solution it to make yy_act a global. I tried that, and saw
166         *       a 5% performance hit in a non-typ_lineno scanner, because yy_act is
167      char *yy_ch_buf;        /* input buffer */       *       normally declared as a register variable-- so it is not worth it.
168      char *yy_buf_pos;       /* current position in input buffer */       */
169        #define  YY_LESS_LINENO(n) \
170      /* Size of input buffer in bytes, not including room for EOB              do { \
171       * characters.                  int yyl;\
172       */                  for ( yyl = n; yyl < typ_leng; ++yyl )\
173      yy_size_t yy_buf_size;                      if ( typ_text[yyl] == '\n' )\
174                            --typ_lineno;\
175      /* Number of characters read into yy_ch_buf, not including EOB              }while(0)
176       * characters.      
177       */  /* Return all but the first "n" matched characters back to the input stream. */
178      int yy_n_chars;  #define yyless(n) \
179        do \
180      /* Whether we "own" the buffer - i.e., we know we created it,          { \
181       * and can realloc() it to grow it, and should free() it to          /* Undo effects of setting up typ_text. */ \
182       * delete it.          int yyless_macro_arg = (n); \
183       */          YY_LESS_LINENO(yyless_macro_arg);\
184      int yy_is_our_buffer;          *yy_cp = (yy_hold_char); \
185            YY_RESTORE_YY_MORE_OFFSET \
186      /* Whether this is an "interactive" input source; if so, and          (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
187       * if we're using stdio for input, then we want to use getc()          YY_DO_BEFORE_ACTION; /* set up typ_text again */ \
188       * instead of fread(), to make sure we stop fetching input after          } \
189       * each newline.      while ( 0 )
190       */  
191      int yy_is_interactive;  #define unput(c) yyunput( c, (yytext_ptr)  )
192    
193      /* Whether we're considered to be at the beginning of a line.  /* The following is because we cannot portably get our hands on size_t
194       * If so, '^' rules will be active on the next match, otherwise   * (without autoconf's help, which isn't available because we want
195       * not.   * flex-generated scanners to compile on their own).
196       */   */
197      int yy_at_bol;  
198    #ifndef YY_TYPEDEF_YY_SIZE_T
199      /* Whether to try to fill the input buffer when we reach the  #define YY_TYPEDEF_YY_SIZE_T
200       * end of it.  typedef unsigned int yy_size_t;
201       */  #endif
202      int yy_fill_buffer;  
203    #ifndef YY_STRUCT_YY_BUFFER_STATE
204      int yy_buffer_status;  #define YY_STRUCT_YY_BUFFER_STATE
205  #define YY_BUFFER_NEW 0  struct yy_buffer_state
206  #define YY_BUFFER_NORMAL 1      {
207      /* When an EOF's been seen but there's still some text to process      FILE *yy_input_file;
208       * then we mark the buffer as YY_EOF_PENDING, to indicate that we  
209       * shouldn't try reading from the input source any more.  We might      char *yy_ch_buf;        /* input buffer */
210       * still have a bunch of tokens to match, though, because of      char *yy_buf_pos;       /* current position in input buffer */
211       * possible backing-up.  
212       *      /* Size of input buffer in bytes, not including room for EOB
213       * When we actually see the EOF, we change the status to "new"       * characters.
214       * (via yyrestart()), so that the user can continue scanning by       */
215       * just pointing yyin at a new input file.      yy_size_t yy_buf_size;
216       */  
217  #define YY_BUFFER_EOF_PENDING 2      /* Number of characters read into yy_ch_buf, not including EOB
218      };       * characters.
219         */
220  static YY_BUFFER_STATE yy_current_buffer = 0;      int yy_n_chars;
221    
222  /* We provide macros for accessing buffer states in case in the      /* Whether we "own" the buffer - i.e., we know we created it,
223   * future we want to put the buffer states in a more general       * and can realloc() it to grow it, and should free() it to
224   * "scanner state".       * delete it.
225   */       */
226  #define YY_CURRENT_BUFFER yy_current_buffer      int yy_is_our_buffer;
227    
228        /* Whether this is an "interactive" input source; if so, and
229  /* yy_hold_char holds the character lost when yytext is formed. */       * if we're using stdio for input, then we want to use getc()
230  static char yy_hold_char;       * instead of fread(), to make sure we stop fetching input after
231         * each newline.
232  static int yy_n_chars;      /* number of characters read into yy_ch_buf */       */
233        int yy_is_interactive;
234    
235  int yyleng;      /* Whether we're considered to be at the beginning of a line.
236         * If so, '^' rules will be active on the next match, otherwise
237  /* Points to current character in buffer. */       * not.
238  static char *yy_c_buf_p = (char *) 0;       */
239  static int yy_init = 1;     /* whether we need to initialize */      int yy_at_bol;
240  static int yy_start = 0;    /* start state number */  
241        int yy_bs_lineno; /**< The line count. */
242  /* Flag which is used to allow yywrap()'s to do buffer switches      int yy_bs_column; /**< The column count. */
243   * instead of setting up a fresh yyin.  A bit of a hack ...      
244   */      /* Whether to try to fill the input buffer when we reach the
245  static int yy_did_buffer_switch_on_eof;       * end of it.
246         */
247  void yyrestart YY_PROTO(( FILE *input_file ));      int yy_fill_buffer;
248    
249  void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));      int yy_buffer_status;
250  void yy_load_buffer_state YY_PROTO(( void ));  
251  YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));  #define YY_BUFFER_NEW 0
252  void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));  #define YY_BUFFER_NORMAL 1
253  void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));      /* When an EOF's been seen but there's still some text to process
254  void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));       * then we mark the buffer as YY_EOF_PENDING, to indicate that we
255  #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )       * shouldn't try reading from the input source any more.  We might
256         * still have a bunch of tokens to match, though, because of
257  YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));       * possible backing-up.
258  YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));       *
259  YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));       * When we actually see the EOF, we change the status to "new"
260         * (via typ_restart()), so that the user can continue scanning by
261  static void *yy_flex_alloc YY_PROTO(( yy_size_t ));       * just pointing typ_in at a new input file.
262  static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));       */
263  static void yy_flex_free YY_PROTO(( void * ));  #define YY_BUFFER_EOF_PENDING 2
264    
265  #define yy_new_buffer yy_create_buffer      };
266    #endif /* !YY_STRUCT_YY_BUFFER_STATE */
267  #define yy_set_interactive(is_interactive) \  
268      { \  /* Stack of input buffers. */
269      if ( ! yy_current_buffer ) \  static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
270          yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \  static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
271      yy_current_buffer->yy_is_interactive = is_interactive; \  static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
272      }  
273    /* We provide macros for accessing buffer states in case in the
274  #define yy_set_bol(at_bol) \   * future we want to put the buffer states in a more general
275      { \   * "scanner state".
276      if ( ! yy_current_buffer ) \   *
277          yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \   * Returns the top of the stack, or NULL.
278      yy_current_buffer->yy_at_bol = at_bol; \   */
279      }  #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
280                              ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
281  #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)                            : NULL)
282    
283    /* Same as previous macro, but useful when we know that the buffer stack is not
284  #define YY_USES_REJECT   * NULL or when we need an lvalue. For internal use only.
285  typedef unsigned char YY_CHAR;   */
286  FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;  #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
287  typedef int yy_state_type;  
288  #define YY_FLEX_LEX_COMPAT  /* yy_hold_char holds the character lost when typ_text is formed. */
289  extern int yylineno;  static char yy_hold_char;
290  int yylineno = 1;  static int yy_n_chars;      /* number of characters read into yy_ch_buf */
291  extern char yytext[];  int typ_leng;
292    
293    /* Points to current character in buffer. */
294  static yy_state_type yy_get_previous_state YY_PROTO(( void ));  static char *yy_c_buf_p = (char *) 0;
295  static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));  static int yy_init = 0;     /* whether we need to initialize */
296  static int yy_get_next_buffer YY_PROTO(( void ));  static int yy_start = 0;    /* start state number */
297  static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));  
298    /* Flag which is used to allow typ_wrap()'s to do buffer switches
299  /* Done after the current pattern has been matched and before the   * instead of setting up a fresh typ_in.  A bit of a hack ...
300   * corresponding action - sets up yytext.   */
301   */  static int yy_did_buffer_switch_on_eof;
302  #define YY_DO_BEFORE_ACTION \  
303      yytext_ptr = yy_bp; \  void typ_restart (FILE *input_file  );
304      yyleng = (int) (yy_cp - yy_bp); \  void typ__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
305      yy_hold_char = *yy_cp; \  YY_BUFFER_STATE typ__create_buffer (FILE *file,int size  );
306      *yy_cp = '\0'; \  void typ__delete_buffer (YY_BUFFER_STATE b  );
307      if ( yyleng + yy_more_offset >= YYLMAX ) \  void typ__flush_buffer (YY_BUFFER_STATE b  );
308          YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \  void typ_push_buffer_state (YY_BUFFER_STATE new_buffer  );
309      yy_flex_strncpy( &yytext[yy_more_offset], yytext_ptr, yyleng + 1 ); \  void typ_pop_buffer_state (void );
310      yyleng += yy_more_offset; \  
311      yy_prev_more_offset = yy_more_offset; \  static void typ_ensure_buffer_stack (void );
312      yy_more_offset = 0; \  static void typ__load_buffer_state (void );
313      yy_c_buf_p = yy_cp;  static void typ__init_buffer (YY_BUFFER_STATE b,FILE *file  );
314    
315  #define YY_NUM_RULES 34  #define YY_FLUSH_BUFFER typ__flush_buffer(YY_CURRENT_BUFFER )
316  #define YY_END_OF_BUFFER 35  
317  static yyconst short int yy_acclist[156] =  YY_BUFFER_STATE typ__scan_buffer (char *base,yy_size_t size  );
318      {   0,  YY_BUFFER_STATE typ__scan_string (yyconst char *yy_str  );
319          6,    6,   16,   16,   35,   31,   34,   32,   34,   33,  YY_BUFFER_STATE typ__scan_bytes (yyconst char *bytes,int len  );
320         34,   33,   34,   33,   34,   33,   34,   33,   34,   33,  
321         34,   31,   33,   34,    9,   34,    6,   34,    7,   34,  void *typ_alloc (yy_size_t  );
322          8,   34,   16,   34,   34,   14,   34,   15,   34,   20,  void *typ_realloc (void *,yy_size_t  );
323         34,   21,   34,   22,   34,   22,   34,   20,   22,   34,  void typ_free (void *  );
324         10,   34,   24,   34,   25,   34,   23,   34,   11,   34,  
325         18,   34,   34,   17,   18,   34,   31,   32,   32,    1,  #define yy_new_buffer typ__create_buffer
326         33,   33,   33,   33,   33,   33,   33,   33,   31,   33,  
327         31,   33,   31,   33,    6,    7,    7,    4,    8,    5,  #define yy_set_interactive(is_interactive) \
328          8,   16,   15,   12,   13,   14,   20,   21,   21,    2,      { \
329        if ( ! YY_CURRENT_BUFFER ){ \
330         22,   22,   22,   22,   20,   22,   20,   22,   20,   22,          typ_ensure_buffer_stack (); \
331         24,   25,   25,    3,   17,   33,   33,   33,   33,   33,          YY_CURRENT_BUFFER_LVALUE =    \
332          4,   22,   33,   33,   33,   33,   33,   19,   22,   28,              typ__create_buffer(typ_in,YY_BUF_SIZE ); \
333         33,   33,   33,   33,   33,   33,   33,   27,   33,   33,      } \
334         33,   33,   33,   33,   33,   33,   30,   33,   33,   33,      YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
335         33,   26,   33,   29,   33      }
336      } ;  
337    #define yy_set_bol(at_bol) \
338  static yyconst short int yy_accept[125] =      { \
339      {   0,      if ( ! YY_CURRENT_BUFFER ){\
340          1,    1,    1,    2,    3,    4,    5,    5,    5,    5,          typ_ensure_buffer_stack (); \
341          5,    5,    5,    6,    8,   10,   12,   14,   16,   18,          YY_CURRENT_BUFFER_LVALUE =    \
342         20,   22,   25,   27,   29,   31,   33,   35,   36,   38,              typ__create_buffer(typ_in,YY_BUF_SIZE ); \
343         40,   42,   44,   46,   48,   51,   53,   55,   57,   59,      } \
344         61,   63,   64,   67,   68,   69,   70,   71,   72,   73,      YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
345         74,   75,   76,   77,   78,   79,   81,   83,   85,   86,      }
346         86,   87,   88,   89,   90,   91,   92,   93,   93,   94,  
347         95,   96,   97,   98,   99,  100,  101,  102,  103,  104,  #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
348        105,  107,  109,  111,  112,  113,  114,  115,  116,  117,  
349        118,  119,  120,  121,  122,  123,  124,  125,  126,  127,  /* Begin user sect3 */
350    
351        128,  130,  132,  133,  134,  135,  136,  137,  138,  140,  typedef unsigned char YY_CHAR;
352        141,  142,  143,  144,  145,  146,  147,  149,  150,  151,  
353        152,  154,  156,  156  FILE *typ_in = (FILE *) 0, *typ_out = (FILE *) 0;
354      } ;  
355    typedef int yy_state_type;
356  static yyconst int yy_ec[256] =  
357      {   0,  #define YY_FLEX_LEX_COMPAT
358          1,    1,    1,    1,    1,    1,    1,    1,    2,    3,  extern int typ_lineno;
359          2,    2,    2,    1,    1,    1,    1,    1,    1,    1,  
360          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  int typ_lineno = 1;
361          1,    2,    1,    1,    1,    1,    1,    1,    1,    4,  
362          5,    6,    1,    1,    1,    1,    1,    7,    7,    7,  extern char typ_text[];
363          7,    7,    7,    7,    7,    7,    7,    1,    8,    1,  
364          1,    1,    1,    1,    9,   10,   11,   12,   13,   14,  static yy_state_type yy_get_previous_state (void );
365         10,   10,   15,   10,   10,   16,   17,   18,   19,   10,  static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
366         10,   20,   21,   22,   23,   24,   10,   10,   10,   10,  static int yy_get_next_buffer (void );
367          1,   25,    1,    1,   26,    1,   27,   27,   27,   27,  static void yy_fatal_error (yyconst char msg[]  );
368    
369         27,   27,   27,   27,   27,   27,   27,   27,   27,   27,  /* Done after the current pattern has been matched and before the
370         27,   27,   27,   27,   27,   27,   27,   27,   27,   27,   * corresponding action - sets up typ_text.
371         27,   27,   28,    1,   29,    1,    1,    1,    1,    1,   */
372          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  #define YY_DO_BEFORE_ACTION \
373          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,      (yytext_ptr) = yy_bp; \
374          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,      typ_leng = (size_t) (yy_cp - yy_bp); \
375          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,      (yy_hold_char) = *yy_cp; \
376          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,      *yy_cp = '\0'; \
377          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,      if ( typ_leng + (yy_more_offset) >= YYLMAX ) \
378          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \
379        yy_flex_strncpy( &typ_text[(yy_more_offset)], (yytext_ptr), typ_leng + 1 ); \
380          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,      typ_leng += (yy_more_offset); \
381          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,      (yy_prev_more_offset) = (yy_more_offset); \
382          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,      (yy_more_offset) = 0; \
383          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,      (yy_c_buf_p) = yy_cp;
384          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,  
385          1,    1,    1,    1,    1  #define YY_NUM_RULES 34
386      } ;  #define YY_END_OF_BUFFER 35
387    /* This struct is not used in this scanner,
388  static yyconst int yy_meta[30] =     but its presence is necessary. */
389      {   0,  struct yy_trans_info
390          1,    2,    1,    3,    1,    4,    5,    6,    7,    7,      {
391          7,    7,    7,    7,    7,    7,    7,    7,    7,    7,      flex_int32_t yy_verify;
392          7,    7,    7,    7,    8,    9,    5,   10,    8      flex_int32_t yy_nxt;
393      } ;      };
394    static yyconst flex_int16_t yy_acclist[156] =
395  static yyconst short int yy_base[143] =      {   0,
396      {   0,          6,    6,   16,   16,   35,   31,   34,   32,   34,   33,
397          0,    0,   26,   27,    9,   11,   40,    0,   66,   67,         34,   33,   34,   33,   34,   33,   34,   33,   34,   33,
398         95,    0,  343,    0,   72,   71,   75,  123,   78,  124,         34,   31,   33,   34,    9,   34,    6,   34,    7,   34,
399        126,  144,  467,  333,   78,   82,   56,  327,    0,  467,          8,   34,   16,   34,   34,   14,   34,   15,   34,   20,
400          0,   86,  125,  146,  173,  467,    0,  131,  467,  467,         34,   21,   34,   22,   34,   22,   34,   20,   22,   34,
401        467,  467,    0,    0,  132,  322,  467,  289,  287,  151,         10,   34,   24,   34,   25,   34,   23,   34,   11,   34,
402        153,  175,  154,  155,  180,  286,  285,    0,  280,  124,         18,   34,   34,   17,   18,   34,   31,   32,   32,    1,
403        135,  154,    0,  160,  467,  179,  161,  277,  467,  467,         33,   33,   33,   33,   33,   33,   33,   33,   31,   33,
404        467,    0,    0,  183,  264,  467,  261,  256,  189,  199,         31,   33,   31,   33,    6,    7,    7,    4,    8,    5,
405        254,  229,    0,    0,  188,  199,  467,    0,  202,  204,          8,   16,   15,   12,   13,   14,   20,   21,   21,    2,
406        206,  207,  214,    0,  215,  216,  224,  225,  226,  227,  
407           22,   22,   22,   22,   20,   22,   20,   22,   20,   22,
408        211,  194,  228,  237,  239,  242,  246,  247,  138,  249,         24,   25,   25,    3,   17,   33,   33,   33,   33,   33,
409        251,  259,  263,  258,  273,  274,   87,  275,  276,  277,          4,   22,   33,   33,   33,   33,   33,   19,   22,   28,
410         70,   33,  467,  293,  303,  313,  323,  332,  340,  349,         33,   33,   33,   33,   33,   33,   33,   27,   33,   33,
411        359,  369,  379,  388,  398,  407,  416,  424,  433,  442,         33,   33,   33,   33,   33,   33,   30,   33,   33,   33,
412        447,  456         33,   26,   33,   29,   33
413      } ;      } ;
414    
415  static yyconst short int yy_def[143] =  static yyconst flex_int16_t yy_accept[125] =
416      {   0,      {   0,
417        123,    1,  124,  124,  125,  125,  123,    7,  126,  126,          1,    1,    1,    2,    3,    4,    5,    5,    5,    5,
418        123,   11,  123,  127,  128,  129,  129,  129,  129,  129,          5,    5,    5,    6,    8,   10,   12,   14,   16,   18,
419        129,  129,  123,  130,  131,  132,  133,  134,  135,  123,         20,   22,   25,   27,   29,   31,   33,   35,   36,   38,
420        136,  137,  138,  138,  138,  123,  139,  140,  123,  123,         40,   42,   44,   46,   48,   51,   53,   55,   57,   59,
421        123,  123,  141,  127,  128,   45,  123,  123,  123,  129,         61,   63,   64,   67,   68,   69,   70,   71,   72,   73,
422        129,  129,  129,  129,  129,  127,  127,   22,  130,  123,         74,   75,   76,   77,   78,   79,   81,   83,   85,   86,
423        131,  131,  142,  132,  123,  132,  133,  134,  123,  123,         86,   87,   88,   89,   90,   91,   92,   93,   93,   94,
424        123,  135,  136,  137,   74,  123,  123,  123,  138,  138,         95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
425        136,  136,   35,  139,  140,  140,  123,  141,  129,  129,        105,  107,  109,  111,  112,  113,  114,  115,  116,  117,
426        129,  129,  129,  142,  138,  129,  129,  129,  129,  129,        118,  119,  120,  121,  122,  123,  124,  125,  126,  127,
427    
428        123,  123,  129,  129,  129,  129,  129,  129,  123,  129,        128,  130,  132,  133,  134,  135,  136,  137,  138,  140,
429        129,  129,  129,  129,  129,  129,  123,  129,  129,  129,        141,  142,  143,  144,  145,  146,  147,  149,  150,  151,
430        123,  123,    0,  123,  123,  123,  123,  123,  123,  123,        152,  154,  156,  156
431        123,  123,  123,  123,  123,  123,  123,  123,  123,  123,      } ;
432        123,  123  
433      } ;  static yyconst flex_int32_t yy_ec[256] =
434        {   0,
435  static yyconst short int yy_nxt[497] =          1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
436      {   0,          2,    2,    2,    1,    1,    1,    1,    1,    1,    1,
437         14,   14,   14,   15,   14,   14,   14,   14,   16,   17,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
438         18,   19,   17,   17,   17,   17,   20,   17,   17,   17,          1,    2,    1,    1,    1,    1,    1,    1,    1,    4,
439         17,   17,   21,   17,   14,   22,   14,   23,   14,   25,          5,    6,    1,    1,    1,    1,    1,    7,    7,    7,
440         25,   26,   26,   28,  122,   28,   29,   30,   29,   30,          7,    7,    7,    7,    7,    7,    7,    1,    8,    1,
441         31,   31,   31,   32,   31,   31,   31,   31,   33,   33,          1,    1,    1,    1,    9,   10,   11,   12,   13,   14,
442         33,   33,   34,   33,   33,   33,   33,   33,   33,   33,         10,   10,   15,   10,   10,   16,   17,   18,   19,   10,
443         33,   33,   33,   33,   31,   35,   31,   36,   31,   38,         10,   20,   21,   22,   23,   24,   10,   10,   10,   10,
444         38,  121,   48,   39,   39,   46,   48,   47,   49,   48,          1,   25,    1,    1,   26,    1,   27,   27,   27,   27,
445         68,   62,   49,   63,   69,   49,   65,   66,  117,   75,  
446         53,   76,   51,   40,   40,   41,   41,   42,   41,   41,         27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
447           27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
448         41,   41,   41,   43,   43,   43,   43,   43,   43,   43,         27,   27,   28,    1,   29,    1,    1,    1,    1,    1,
449         43,   43,   43,   43,   43,   43,   43,   43,   43,   41,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
450         41,   43,   41,   41,   48,   48,   77,   48,   65,   60,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
451         49,   49,   78,   49,   86,  123,   87,  123,  123,  109,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
452        123,   52,   54,   55,   44,   56,   44,   77,   44,   44,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
453         44,   57,   48,   78,   48,   48,   48,   62,   49,  123,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
454         49,   49,   49,   80,  123,  123,   92,   91,   44,   58,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
455         44,   89,   44,   73,   81,   73,   48,   73,   73,   73,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
456         82,   48,   49,   65,   66,   68,  123,   49,  123,   69,  
457         77,  123,   90,  123,   93,  102,   78,   73,   83,   73,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
458            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
459         77,   73,   86,   48,  123,   48,   78,   48,   48,   49,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
460         95,   49,  101,   49,   49,   48,  101,  102,   96,   99,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
461         98,   49,   78,   49,   97,   48,   48,   48,   48,   48,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
462         81,   49,   49,   49,   49,   49,  107,  100,   48,  106,          1,    1,    1,    1,    1
463        109,  105,  104,   48,   49,  103,   49,   48,   48,   49,      } ;
464         48,  108,   48,   49,   49,   81,   49,   77,   49,  117,  
465         48,  110,   77,  111,   48,   49,   49,   75,  112,  113,  static yyconst flex_int32_t yy_meta[30] =
466         49,  116,  114,  115,   48,   48,   48,  121,  122,   71,      {   0,
467         49,   49,   49,   49,   49,   60,   56,   56,   48,  119,          1,    2,    1,    3,    1,    4,    5,    6,    7,    7,
468         48,  118,  120,   24,   24,   24,   24,   24,   24,   24,          7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
469            7,    7,    7,    7,    8,    9,    5,   10,    8
470         24,   24,   24,   27,   27,   27,   27,   27,   27,   27,      } ;
471         27,   27,   27,   37,   37,   37,   37,   37,   37,   37,  
472         37,   37,   37,   44,   44,   46,   44,   44,   44,   71,  static yyconst flex_int16_t yy_base[143] =
473         44,   44,   45,   45,   45,   45,   45,   45,   60,   45,      {   0,
474         45,   50,  123,  123,  123,   50,   50,  123,   50,   59,          0,    0,   26,   27,    9,   11,   40,    0,   66,   67,
475         59,  123,   59,   59,   59,   59,   59,   59,   59,   61,         95,    0,  343,    0,   72,   71,   75,  123,   78,  124,
476         61,   61,   61,   61,   61,   61,   61,   61,   61,   64,        126,  144,  467,  333,   78,   82,   56,  327,    0,  467,
477         64,  123,   64,   64,   64,   64,   64,   64,   64,   67,          0,   86,  125,  146,  173,  467,    0,  131,  467,  467,
478         67,   67,   67,   67,   67,   67,   67,   67,   70,   70,        467,  467,    0,    0,  132,  322,  467,  289,  287,  151,
479         70,   70,   70,   70,   70,   70,   70,   70,   72,   72,        153,  175,  154,  155,  180,  286,  285,    0,  280,  124,
480          135,  154,    0,  160,  467,  179,  161,  277,  467,  467,
481         72,   72,   72,   72,   72,  123,   72,   73,   73,  123,        467,    0,    0,  183,  264,  467,  261,  256,  189,  199,
482         73,   73,   73,  123,   73,   73,   74,   74,   74,   74,        254,  229,    0,    0,  188,  199,  467,    0,  202,  204,
483         74,   74,  123,   74,   74,   79,  123,  123,  123,   79,        206,  207,  214,    0,  215,  216,  224,  225,  226,  227,
484         79,  123,   79,   84,   84,  123,   84,   84,  123,   84,  
485         84,   84,   85,   85,   85,   85,   85,  123,   85,   85,        211,  194,  228,  237,  239,  242,  246,  247,  138,  249,
486         85,   88,  123,   88,  123,   88,   94,   94,  123,  123,        251,  259,  263,  258,  273,  274,   87,  275,  276,  277,
487         94,   94,   94,   94,   94,   94,   13,  123,  123,  123,         70,   33,  467,  293,  303,  313,  323,  332,  340,  349,
488        123,  123,  123,  123,  123,  123,  123,  123,  123,  123,        359,  369,  379,  388,  398,  407,  416,  424,  433,  442,
489        123,  123,  123,  123,  123,  123,  123,  123,  123,  123,        447,  456
490        123,  123,  123,  123,  123,  123      } ;
491    
492      } ;  static yyconst flex_int16_t yy_def[143] =
493        {   0,
494  static yyconst short int yy_chk[497] =        123,    1,  124,  124,  125,  125,  123,    7,  126,  126,
495      {   0,        123,   11,  123,  127,  128,  129,  129,  129,  129,  129,
496          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        129,  129,  123,  130,  131,  132,  133,  134,  135,  123,
497          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        136,  137,  138,  138,  138,  123,  139,  140,  123,  123,
498          1,    1,    1,    1,    1,    1,    1,    1,    1,    3,        123,  123,  141,  127,  128,   45,  123,  123,  123,  129,
499          4,    3,    4,    5,  122,    6,    5,    5,    6,    6,        129,  129,  129,  129,  129,  127,  127,   22,  130,  123,
500          7,    7,    7,    7,    7,    7,    7,    7,    7,    7,        131,  131,  142,  132,  123,  132,  133,  134,  123,  123,
501          7,    7,    7,    7,    7,    7,    7,    7,    7,    7,        123,  135,  136,  137,   74,  123,  123,  123,  138,  138,
502          7,    7,    7,    7,    7,    7,    7,    7,    7,    9,        136,  136,   35,  139,  140,  140,  123,  141,  129,  129,
503         10,  121,   16,    9,   10,   15,   17,   15,   16,   19,        129,  129,  129,  142,  138,  129,  129,  129,  129,  129,
504         27,   25,   17,   25,   27,   19,   26,   26,  117,   32,  
505         19,   32,   16,    9,   10,   11,   11,   11,   11,   11,        123,  123,  129,  129,  129,  129,  129,  129,  123,  129,
506          129,  129,  129,  129,  129,  129,  123,  129,  129,  129,
507         11,   11,   11,   11,   11,   11,   11,   11,   11,   11,        123,  123,    0,  123,  123,  123,  123,  123,  123,  123,
508         11,   11,   11,   11,   11,   11,   11,   11,   11,   11,        123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
509         11,   11,   11,   11,   18,   20,   33,   21,   60,   60,        123,  123
510         18,   20,   33,   21,   38,   45,   38,   45,   61,  109,      } ;
511         61,   18,   20,   21,   22,   22,   22,   34,   22,   22,  
512         22,   22,   50,   34,   51,   53,   54,   62,   50,   62,  static yyconst flex_int16_t yy_nxt[497] =
513         51,   53,   54,   34,   64,   64,   54,   53,   22,   22,      {   0,
514         22,   51,   22,   35,   35,   35,   52,   35,   35,   35,         14,   14,   14,   15,   14,   14,   14,   14,   16,   17,
515         35,   55,   52,   66,   66,   67,   74,   55,   74,   67,         18,   19,   17,   17,   17,   17,   20,   17,   17,   17,
516         79,   85,   52,   85,   55,  102,   79,   35,   35,   35,         17,   17,   21,   17,   14,   22,   14,   23,   14,   25,
517           25,   26,   26,   28,  122,   28,   29,   30,   29,   30,
518         80,   35,   86,   89,   86,   90,   80,   91,   92,   89,         31,   31,   31,   32,   31,   31,   31,   31,   33,   33,
519         80,   90,  101,   91,   92,   93,   95,   96,   89,   92,         33,   33,   34,   33,   33,   33,   33,   33,   33,   33,
520         91,   93,   95,   96,   90,   97,   98,   99,  100,  103,         33,   33,   33,   33,   31,   35,   31,   36,   31,   38,
521         82,   97,   98,   99,  100,  103,  103,   93,  104,  100,         38,  121,   48,   39,   39,   46,   48,   47,   49,   48,
522        105,   99,   98,  106,  104,   97,  105,  107,  108,  106,         68,   62,   49,   63,   69,   49,   65,   66,  117,   75,
523        110,  104,  111,  107,  108,   81,  110,   78,  111,  114,         53,   76,   51,   40,   40,   41,   41,   42,   41,   41,
524        112,  106,   77,  107,  113,  114,  112,   75,  108,  110,  
525        113,  113,  111,  112,  115,  116,  118,  119,  120,   68,         41,   41,   41,   43,   43,   43,   43,   43,   43,   43,
526        115,  116,  118,  119,  120,   59,   57,   56,   49,  116,         43,   43,   43,   43,   43,   43,   43,   43,   43,   41,
527         48,  115,  118,  124,  124,  124,  124,  124,  124,  124,         41,   43,   41,   41,   48,   48,   77,   48,   65,   60,
528           49,   49,   78,   49,   86,  123,   87,  123,  123,  109,
529        124,  124,  124,  125,  125,  125,  125,  125,  125,  125,        123,   52,   54,   55,   44,   56,   44,   77,   44,   44,
530        125,  125,  125,  126,  126,  126,  126,  126,  126,  126,         44,   57,   48,   78,   48,   48,   48,   62,   49,  123,
531        126,  126,  126,  127,  127,   46,  127,  127,  127,   28,         49,   49,   49,   80,  123,  123,   92,   91,   44,   58,
532        127,  127,  128,  128,  128,  128,  128,  128,   24,  128,         44,   89,   44,   73,   81,   73,   48,   73,   73,   73,
533        128,  129,   13,    0,    0,  129,  129,    0,  129,  130,         82,   48,   49,   65,   66,   68,  123,   49,  123,   69,
534        130,    0,  130,  130,  130,  130,  130,  130,  130,  131,         77,  123,   90,  123,   93,  102,   78,   73,   83,   73,
535        131,  131,  131,  131,  131,  131,  131,  131,  131,  132,  
536        132,    0,  132,  132,  132,  132,  132,  132,  132,  133,         77,   73,   86,   48,  123,   48,   78,   48,   48,   49,
537        133,  133,  133,  133,  133,  133,  133,  133,  134,  134,         95,   49,  101,   49,   49,   48,  101,  102,   96,   99,
538        134,  134,  134,  134,  134,  134,  134,  134,  135,  135,         98,   49,   78,   49,   97,   48,   48,   48,   48,   48,
539           81,   49,   49,   49,   49,   49,  107,  100,   48,  106,
540        135,  135,  135,  135,  135,    0,  135,  136,  136,    0,        109,  105,  104,   48,   49,  103,   49,   48,   48,   49,
541        136,  136,  136,    0,  136,  136,  137,  137,  137,  137,         48,  108,   48,   49,   49,   81,   49,   77,   49,  117,
542        137,  137,    0,  137,  137,  138,    0,    0,    0,  138,         48,  110,   77,  111,   48,   49,   49,   75,  112,  113,
543        138,    0,  138,  139,  139,    0,  139,  139,    0,  139,         49,  116,  114,  115,   48,   48,   48,  121,  122,   71,
544        139,  139,  140,  140,  140,  140,  140,    0,  140,  140,         49,   49,   49,   49,   49,   60,   56,   56,   48,  119,
545        140,  141,    0,  141,    0,  141,  142,  142,    0,    0,         48,  118,  120,   24,   24,   24,   24,   24,   24,   24,
546        142,  142,  142,  142,  142,  142,  123,  123,  123,  123,  
547        123,  123,  123,  123,  123,  123,  123,  123,  123,  123,         24,   24,   24,   27,   27,   27,   27,   27,   27,   27,
548        123,  123,  123,  123,  123,  123,  123,  123,  123,  123,         27,   27,   27,   37,   37,   37,   37,   37,   37,   37,
549        123,  123,  123,  123,  123,  123         37,   37,   37,   44,   44,   46,   44,   44,   44,   71,
550           44,   44,   45,   45,   45,   45,   45,   45,   60,   45,
551      } ;         45,   50,  123,  123,  123,   50,   50,  123,   50,   59,
552           59,  123,   59,   59,   59,   59,   59,   59,   59,   61,
553  static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;         61,   61,   61,   61,   61,   61,   61,   61,   61,   64,
554  static char *yy_full_match;         64,  123,   64,   64,   64,   64,   64,   64,   64,   67,
555  static int yy_lp;         67,   67,   67,   67,   67,   67,   67,   67,   70,   70,
556  #define REJECT \         70,   70,   70,   70,   70,   70,   70,   70,   72,   72,
557  { \  
558  *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \         72,   72,   72,   72,   72,  123,   72,   73,   73,  123,
559  yy_cp = yy_full_match; /* restore poss. backed-over text */ \         73,   73,   73,  123,   73,   73,   74,   74,   74,   74,
560  ++yy_lp; \         74,   74,  123,   74,   74,   79,  123,  123,  123,   79,
561  goto find_rule; \         79,  123,   79,   84,   84,  123,   84,   84,  123,   84,
562  }         84,   84,   85,   85,   85,   85,   85,  123,   85,   85,
563  static int yy_more_offset = 0;         85,   88,  123,   88,  123,   88,   94,   94,  123,  123,
564  static int yy_prev_more_offset = 0;         94,   94,   94,   94,   94,   94,   13,  123,  123,  123,
565  #define yymore() (yy_more_offset = yy_flex_strlen( yytext ))        123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
566  #define YY_NEED_STRLEN        123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
567  #define YY_MORE_ADJ 0        123,  123,  123,  123,  123,  123
568  #define YY_RESTORE_YY_MORE_OFFSET \  
569      { \      } ;
570      yy_more_offset = yy_prev_more_offset; \  
571      yyleng -= yy_more_offset; \  static yyconst flex_int16_t yy_chk[497] =
572      }      {   0,
573  #ifndef YYLMAX          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
574  #define YYLMAX 8192          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
575  #endif          1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
576            4,    3,    4,    5,  122,    6,    5,    5,    6,    6,
577  char yytext[YYLMAX];          7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
578  char *yytext_ptr;          7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
579  #line 1 "tcltk\\generic\\interface\\typelex.l"          7,    7,    7,    7,    7,    7,    7,    7,    7,    9,
580  #define INITIAL 0         10,  121,   16,    9,   10,   15,   17,   15,   16,   19,
581  #line 2 "tcltk\\generic\\interface\\typelex.l"         27,   25,   17,   25,   27,   19,   26,   26,  117,   32,
582  /*         19,   32,   16,    9,   10,   11,   11,   11,   11,   11,
583   *  TypeExtractor.l  
584   *  by Kirk Abbott and Ben Allan         11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
585   *  Created: 1/94         11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
586   *  Version: $Revision: 1.20 $         11,   11,   11,   11,   18,   20,   33,   21,   60,   60,
587   *  Version control file: $RCSfile: typelex.l,v $         18,   20,   33,   21,   38,   45,   38,   45,   61,  109,
588   *  Date last modified: $Date: 2003/08/23 18:43:09 $         61,   18,   20,   21,   22,   22,   22,   34,   22,   22,
589   *  Last modified by: $Author: ballan $         22,   22,   50,   34,   51,   53,   54,   62,   50,   62,
590   *         51,   53,   54,   34,   64,   64,   54,   53,   22,   22,
591   *  This file is part of the ASCEND Tcl/Tk interface         22,   51,   22,   35,   35,   35,   52,   35,   35,   35,
592   *         35,   55,   52,   66,   66,   67,   74,   55,   74,   67,
593   *  Copyright 1997, Carnegie Mellon University         79,   85,   52,   85,   55,  102,   79,   35,   35,   35,
594   *  
595   *  The ASCEND Tcl/Tk interface is free software; you can redistribute         80,   35,   86,   89,   86,   90,   80,   91,   92,   89,
596   *  it and/or modify it under the terms of the GNU General Public License as         80,   90,  101,   91,   92,   93,   95,   96,   89,   92,
597   *  published by the Free Software Foundation; either version 2 of the         91,   93,   95,   96,   90,   97,   98,   99,  100,  103,
598   *  License, or (at your option) any later version.         82,   97,   98,   99,  100,  103,  103,   93,  104,  100,
599   *        105,   99,   98,  106,  104,   97,  105,  107,  108,  106,
600   *  The ASCEND Tcl/Tk interface is distributed in hope that it will be        110,  104,  111,  107,  108,   81,  110,   78,  111,  114,
601   *  useful, but WITHOUT ANY WARRANTY; without even the implied warranty of        112,  106,   77,  107,  113,  114,  112,   75,  108,  110,
602   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU        113,  113,  111,  112,  115,  116,  118,  119,  120,   68,
603   *  General Public License for more details.        115,  116,  118,  119,  120,   59,   57,   56,   49,  116,
604   *         48,  115,  118,  124,  124,  124,  124,  124,  124,  124,
605   *  You should have received a copy of the GNU General Public License  
606   *  along with the program; if not, write to the Free Software Foundation,        124,  124,  124,  125,  125,  125,  125,  125,  125,  125,
607   *  Inc., 675 Mass Ave, Cambridge, MA 02139 USA.  Check the file named        125,  125,  125,  126,  126,  126,  126,  126,  126,  126,
608   *  COPYING.  COPYING is found in ../compiler.        126,  126,  126,  127,  127,   46,  127,  127,  127,   28,
609   */        127,  127,  128,  128,  128,  128,  128,  128,   24,  128,
610          128,  129,   13,    0,    0,  129,  129,    0,  129,  130,
611  /*        130,    0,  130,  130,  130,  130,  130,  130,  130,  131,
612   *  ASCEND Type Retriever 1.2        131,  131,  131,  131,  131,  131,  131,  131,  131,  132,
613   *        132,    0,  132,  132,  132,  132,  132,  132,  132,  133,
614   *  Purpose:        133,  133,  133,  133,  133,  133,  133,  133,  134,  134,
615   *      To extract a type definition from an input file.        134,  134,  134,  134,  134,  134,  134,  134,  135,  135,
616   *  Usage:  
617   *      See the header file for use from within ASCEND.        135,  135,  135,  135,  135,    0,  135,  136,  136,    0,
618   *      For stand-alone use:        136,  136,  136,    0,  136,  136,  137,  137,  137,  137,
619   *          typer [flags] ascend_type_name input_file output_file        137,  137,    0,  137,  137,  138,    0,    0,    0,  138,
620   *              flags: -c  show comments        138,    0,  138,  139,  139,    0,  139,  139,    0,  139,
621   *                         If no -c given, strip out comments.        139,  139,  140,  140,  140,  140,  140,    0,  140,  140,
622   *  Features:        140,  141,    0,  141,    0,  141,  142,  142,    0,    0,
623   *      --Does not descend into REQUIREd files. Only examines input_file        142,  142,  142,  142,  142,  142,  123,  123,  123,  123,
624   *        for definitions of ascend_type_name.        123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
625   *      --This version DOES handle the UNIVERSAL quantifier.        123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
626   *        123,  123,  123,  123,  123,  123
627   */  
628        } ;
629  #define MY_YYMORE() yymore()  
630    /* Table of booleans, true if rule could match eol. */
631  #include <tcl.h>  static yyconst flex_int32_t yy_rule_can_match_eol[35] =
632  #include <utilities/ascConfig.h>      {   0,
633  #include <general/list.h>  0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
634  #ifndef TYPER_TEST      1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,     };
635  /* for handling string modules and results in interp */  
636  #include <compiler/compiler.h>  extern int typ__flex_debug;
637  #include <compiler/symtab.h>  int typ__flex_debug = 0;
638  #include <compiler/fractions.h>  
639  #include <compiler/dimen.h>  static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
640  #include <compiler/child.h>  static char *yy_full_match;
641  #include <compiler/type_desc.h>  static int yy_lp;
642  #include <compiler/library.h>  #define REJECT \
643  #include <compiler/module.h>  { \
644  #include "HelpProc.h" /* help is not necessary for test */  *yy_cp = (yy_hold_char); /* undo effects of setting up typ_text */ \
645  #endif /*!typertest*/  yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
646    ++(yy_lp); \
647  #include "typelex.h"  goto find_rule; \
648    }
649    
650  #ifndef lint  static int yy_more_offset = 0;
651  static const char TyperID[] = "$Id: typelex.l,v 1.20 2003/08/23 18:43:09 ballan Exp $";  static int yy_prev_more_offset = 0;
652  #endif  #define yymore() ((yy_more_offset) = yy_flex_strlen( typ_text ))
653    #define YY_NEED_STRLEN
654  #define YY_BREAK  #define YY_MORE_ADJ 0
655  /*  #define YY_RESTORE_YY_MORE_OFFSET \
656   *  Defining yybreak as above (empty) means that all of our matches must end      { \
657   *  in break or return because the normal flex supplied yybreak will      (yy_more_offset) = (yy_prev_more_offset); \
658   *  be preempted by our empty one.      typ_leng -= (yy_more_offset); \
659   *  In cases where matches contain a conditional return, make sure a      }
660   *  break follows in the failure case.  #ifndef YYLMAX
661   */  #define YYLMAX 8192
662    #endif
663  static int CommentNestLevel = 0;  
664  /*  char typ_text[YYLMAX];
665   *  Nesting level of (* comments *)  char *yytext_ptr;
666   */  #line 1 "tcltk/generic/interface/typelex.l"
667    #line 2 "tcltk/generic/interface/typelex.l"
668  static int BracesNestLevel = 0;  /*
669  /*   *  TypeExtractor.l
670   *  Nesting level of {braced} expressions   *  by Kirk Abbott and Ben Allan
671   */   *  Created: 1/94
672     *  Version: $Revision: 1.20 $
673  enum keyword_tokens {   *  Version control file: $RCSfile: typelex.l,v $
674    NONE,       /* Nothing to match, we're in the initial state */   *  Date last modified: $Date: 2003/08/23 18:43:09 $
675    MODEL,      /* We've just read a MODEL or ATOM keyword */   *  Last modified by: $Author: ballan $
676    MODEL_END,  /* We've just read an END keyword inside a MODEL,   *
677                 * an ATOM, or a DEFINITION. */   *  This file is part of the ASCEND Tcl/Tk interface
678    CONSTANT    /* We've just read a CONSTANT keyword */   *
679  };   *  Copyright 1997, Carnegie Mellon University
680  static enum keyword_tokens MatchedToken = NONE;   *
681  /*   *  The ASCEND Tcl/Tk interface is free software; you can redistribute
682   *  The recognized token we've most recently read.  This usually implies   *  it and/or modify it under the terms of the GNU General Public License as
683   *  that we're either in that state or we need to check the next keyword   *  published by the Free Software Foundation; either version 2 of the
684   *  to see if we should enter (or leave, in the case of MODEL_END) that   *  License, or (at your option) any later version.
685   *  state.  MODEL, ATOM, and DEFINITION state are equivalent.   *
686   */   *  The ASCEND Tcl/Tk interface is distributed in hope that it will be
687     *  useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
688  static int ShowComments = 0;   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
689  /*   *  General Public License for more details.
690   *  Should we print comments? (1 = yes, 0 = no)   *
691   *  This is set to 1 with `-c' on the command line   *  You should have received a copy of the GNU General Public License
692   */   *  along with the program; if not, write to the Free Software Foundation,
693     *  Inc., 675 Mass Ave, Cambridge, MA 02139 USA.  Check the file named
694  static unsigned long StartId = 0;   *  COPYING.  COPYING is found in ../compiler.
695  /*   */
696   *  The location in the `typ_text' array where the MODEL, ATOM, or CONSTANT  
697   *  identifierbegins.  We save this value and call MY_YYMORE() when we find  /*
698   *  a MODEL, ATOM, or CONSTANT keyword; StartId tells us where the   *  ASCEND Type Retriever 1.2
699   *  Identifier will go.   *
700   */   *  Purpose:
701     *      To extract a type definition from an input file.
702  static char *reqType = "";   *  Usage:
703  /*   *      See the header file for use from within ASCEND.
704   *  The type we are looking for.  This is one of the arguments passed   *      For stand-alone use:
705   *  to Asc_ExtractType() in the argv vector.   *          typer [flags] ascend_type_name input_file output_file
706   */   *              flags: -c  show comments
707     *                         If no -c given, strip out comments.
708  static void Asc_PutCode(char *s,FILE *fp);   *  Features:
709     *      --Does not descend into REQUIREd files. Only examines input_file
710  static Tcl_Interp *g_typ__interp;   *        for definitions of ascend_type_name.
711  /* during parse, set to caller's interp if string result is wanted   *      --This version DOES handle the UNIVERSAL quantifier.
712   * instead of file.   *
713   */   */
714    
715  #ifdef TYPER_TEST  #define MY_YYMORE() yymore()
716  /*  
717   *  Specify ASCERR, ASCWAR when building stand alone.  #include <tcl.h>
718   */  #include <utilities/ascConfig.h>
719  #ifdef REIMPLEMENT_STREAM  #include <general/list.h>
720  FILE *ASCERR = stderr;  #ifndef TYPER_TEST
721  FILE *ASCWAR = stderr;  /* for handling string modules and results in interp */
722  #endif  #include <compiler/compiler.h>
723  #endif /* TYPER_TEST */  #include <compiler/symtab.h>
724    #include <compiler/fractions.h>
725  #define Comment 1  #include <compiler/dimen.h>
726    #include <compiler/child.h>
727  #define BracedText 2  #include <compiler/type_desc.h>
728    #include <compiler/library.h>
729  #define Model 3  #include <compiler/module.h>
730    #include "HelpProc.h" /* help is not necessary for test */
731  #define Constant 4  #endif /*!typertest*/
732    
733  #define CheckID 5  #include "typelex.h"
734    
735    
736  /* Macros after this point can all be overridden by user definitions in  #ifndef lint
737   * section 1.  static const char TyperID[] = "$Id: typelex.l,v 1.20 2003/08/23 18:43:09 ballan Exp $";
738   */  #endif
739    
740  #ifndef YY_SKIP_YYWRAP  #define YY_BREAK
741  #ifdef __cplusplus  /*
742  extern "C" int yywrap YY_PROTO(( void ));   *  Defining yybreak as above (empty) means that all of our matches must end
743  #else   *  in break or return because the normal flex supplied yybreak will
744  extern int yywrap YY_PROTO(( void ));   *  be preempted by our empty one.
745  #endif   *  In cases where matches contain a conditional return, make sure a
746  #endif   *  break follows in the failure case.
747     */
748  #ifndef YY_NO_UNPUT  
749  static void yyunput YY_PROTO(( int c, char *buf_ptr ));  static int CommentNestLevel = 0;
750  #endif  /*
751     *  Nesting level of (* comments *)
752  #ifndef yytext_ptr   */
753  static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));  
754  #endif  static int BracesNestLevel = 0;
755    /*
756  #ifdef YY_NEED_STRLEN   *  Nesting level of {braced} expressions
757  static int yy_flex_strlen YY_PROTO(( yyconst char * ));   */
758  #endif  
759    enum keyword_tokens {
760  #ifndef YY_NO_INPUT    NONE,       /* Nothing to match, we're in the initial state */
761  #ifdef __cplusplus    MODEL,      /* We've just read a MODEL or ATOM keyword */
762  static int yyinput YY_PROTO(( void ));    MODEL_END,  /* We've just read an END keyword inside a MODEL,
763  #else                 * an ATOM, or a DEFINITION. */
764  static int input YY_PROTO(( void ));    CONSTANT    /* We've just read a CONSTANT keyword */
765  #endif  };
766  #endif  static enum keyword_tokens MatchedToken = NONE;
767    /*
768  #if YY_STACK_USED   *  The recognized token we've most recently read.  This usually implies
769  static int yy_start_stack_ptr = 0;   *  that we're either in that state or we need to check the next keyword
770  static int yy_start_stack_depth = 0;   *  to see if we should enter (or leave, in the case of MODEL_END) that
771  static int *yy_start_stack = 0;   *  state.  MODEL, ATOM, and DEFINITION state are equivalent.
772  #ifndef YY_NO_PUSH_STATE   */
773  static void yy_push_state YY_PROTO(( int new_state ));  
774  #endif  static int ShowComments = 0;
775  #ifndef YY_NO_POP_STATE  /*
776  static void yy_pop_state YY_PROTO(( void ));   *  Should we print comments? (1 = yes, 0 = no)
777  #endif   *  This is set to 1 with `-c' on the command line
778  #ifndef YY_NO_TOP_STATE   */
779  static int yy_top_state YY_PROTO(( void ));  
780  #endif  static unsigned long StartId = 0;
781    /*
782  #else   *  The location in the `typ_text' array where the MODEL, ATOM, or CONSTANT
783  #define YY_NO_PUSH_STATE 1   *  identifierbegins.  We save this value and call MY_YYMORE() when we find
784  #define YY_NO_POP_STATE 1   *  a MODEL, ATOM, or CONSTANT keyword; StartId tells us where the
785  #define YY_NO_TOP_STATE 1   *  Identifier will go.
786  #endif   */
787    
788  #ifdef YY_MALLOC_DECL  static char *reqType = "";
789  YY_MALLOC_DECL  /*
790  #else   *  The type we are looking for.  This is one of the arguments passed
791  #if __STDC__   *  to Asc_ExtractType() in the argv vector.
792  #ifndef __cplusplus   */
793  #include <stdlib.h>  
794  #endif  static void Asc_PutCode(char *s,FILE *fp);
795  #else  
796  /* Just try to get by without declaring the routines.  This will fail  static Tcl_Interp *g_typ__interp;
797   * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)  /* during parse, set to caller's interp if string result is wanted
798   * or sizeof(void*) != sizeof(int).   * instead of file.
799   */   */
800  #endif  
801  #endif  #ifdef TYPER_TEST
802    /*
803  /* Amount of stuff to slurp up with each read. */   *  Specify ASCERR, ASCWAR when building stand alone.
804  #ifndef YY_READ_BUF_SIZE   */
805  #define YY_READ_BUF_SIZE 8192  #ifdef REIMPLEMENT_STREAM
806  #endif  FILE *ASCERR = stderr;
807    FILE *ASCWAR = stderr;
808  /* Copy whatever the last rule matched to the standard output. */  #endif
809    #endif /* TYPER_TEST */
810  #ifndef ECHO  
811  /* This used to be an fputs(), but since the string might contain NUL's,  
812   * we now use fwrite().  
813   */  
814  #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )  
815  #endif  
816    #line 817 "<stdout>"
817  /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,  
818   * is returned in "result".  #define INITIAL 0
819   */  #define Comment 1
820  #ifndef YY_INPUT  #define BracedText 2
821  #define YY_INPUT(buf,result,max_size) \  #define Model 3
822      if ( yy_current_buffer->yy_is_interactive ) \  #define Constant 4
823          { \  #define CheckID 5
824          int c = '*', n; \  
825          for ( n = 0; n < max_size && \  #ifndef YY_NO_UNISTD_H
826                   (c = getc( yyin )) != EOF && c != '\n'; ++n ) \  /* Special case for "unistd.h", since it is non-ANSI. We include it way
827              buf[n] = (char) c; \   * down here because we want the user's section 1 to have been scanned first.
828          if ( c == '\n' ) \   * The user has a chance to override it with an option.
829              buf[n++] = (char) c; \   */
830          if ( c == EOF && ferror( yyin ) ) \  #include <unistd.h>
831              YY_FATAL_ERROR( "input in flex scanner failed" ); \  #endif
832          result = n; \  
833          } \  #ifndef YY_EXTRA_TYPE
834      else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \  #define YY_EXTRA_TYPE void *
835            && ferror( yyin ) ) \  #endif
836          YY_FATAL_ERROR( "input in flex scanner failed" );  
837  #endif  static int yy_init_globals (void );
838    
839  /* No semi-colon after return; correct usage is to write "yyterminate();" -  /* Macros after this point can all be overridden by user definitions in
840   * we don't want an extra ';' after the "return" because that will cause   * section 1.
841   * some compilers to complain about unreachable statements.   */
842   */  
843  #ifndef yyterminate  #ifndef YY_SKIP_YYWRAP
844  #define yyterminate() return YY_NULL  #ifdef __cplusplus
845  #endif  extern "C" int typ_wrap (void );
846    #else
847  /* Number of entries by which start-condition stack grows. */  extern int typ_wrap (void );
848  #ifndef YY_START_STACK_INCR  #endif
849  #define YY_START_STACK_INCR 25  #endif
850  #endif  
851        static void yyunput (int c,char *buf_ptr  );
852  /* Report a fatal error. */      
853  #ifndef YY_FATAL_ERROR  #ifndef yytext_ptr
854  #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )  static void yy_flex_strncpy (char *,yyconst char *,int );
855  #endif  #endif
856    
857  /* Default declaration of generated scanner - a define so the user can  #ifdef YY_NEED_STRLEN
858   * easily add parameters.  static int yy_flex_strlen (yyconst char * );
859   */  #endif
860  #ifndef YY_DECL  
861  #define YY_DECL int yylex YY_PROTO(( void ))  #ifndef YY_NO_INPUT
862  #endif  
863    #ifdef __cplusplus
864  /* Code executed at the beginning of each rule, after yytext and yyleng  static int yyinput (void );
865   * have been set up.  #else
866   */  static int input (void );
867  #ifndef YY_USER_ACTION  #endif
868  #define YY_USER_ACTION  
869  #endif  #endif
870    
871  /* Code executed at the end of each rule. */  /* Amount of stuff to slurp up with each read. */
872  #ifndef YY_BREAK  #ifndef YY_READ_BUF_SIZE
873  #define YY_BREAK break;  #define YY_READ_BUF_SIZE 8192
874  #endif  #endif
875    
876  #define YY_RULE_SETUP \  /* Copy whatever the last rule matched to the standard output. */
877      YY_USER_ACTION  #ifndef ECHO
878    /* This used to be an fputs(), but since the string might contain NUL's,
879  YY_DECL   * we now use fwrite().
880      {   */
881      register yy_state_type yy_current_state;  #define ECHO (void) fwrite( typ_text, typ_leng, 1, typ_out )
882      register char *yy_cp, *yy_bp;  #endif
883      register int yy_act;  
884    /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
885  #line 167 "tcltk\\generic\\interface\\typelex.l"   * is returned in "result".
886     */
887    #ifndef YY_INPUT
888      /*  #define YY_INPUT(buf,result,max_size) \
889       *  Code to handle (* Comments *)      if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
890       *          { \
891       *  "(*" puts us into the Comment state.  Comments nest, so in the          int c = '*'; \
892       *  Comment state we need to look for "(*" that increases the nesting          size_t n; \
893       *  level and "*)" that will lower it.          for ( n = 0; n < max_size && \
894       *  Do NOT try to match \(\*+ since that causes "(****)" to parse                   (c = getc( typ_in )) != EOF && c != '\n'; ++n ) \
895       *  incorrectly.              buf[n] = (char) c; \
896       */          if ( c == '\n' ) \
897                buf[n++] = (char) c; \
898            if ( c == EOF && ferror( typ_in ) ) \
899      if ( yy_init )              YY_FATAL_ERROR( "input in flex scanner failed" ); \
900          {          result = n; \
901          yy_init = 0;          } \
902        else \
903  #ifdef YY_USER_INIT          { \
904          YY_USER_INIT;          errno=0; \
905  #endif          while ( (result = fread(buf, 1, max_size, typ_in))==0 && ferror(typ_in)) \
906                { \
907          if ( ! yy_start )              if( errno != EINTR) \
908              yy_start = 1;   /* first start state */                  { \
909                    YY_FATAL_ERROR( "input in flex scanner failed" ); \
910          if ( ! yyin )                  break; \
911              yyin = stdin;                  } \
912                errno=0; \
913          if ( ! yyout )              clearerr(typ_in); \
914              yyout = stdout;              } \
915            }\
916          if ( ! yy_current_buffer )  \
917              yy_current_buffer =  
918                  yy_create_buffer( yyin, YY_BUF_SIZE );  #endif
919    
920          yy_load_buffer_state();  /* No semi-colon after return; correct usage is to write "yyterminate();" -
921          }   * we don't want an extra ';' after the "return" because that will cause
922     * some compilers to complain about unreachable statements.
923      while ( 1 )     /* loops until end-of-file is reached */   */
924          {  #ifndef yyterminate
925          yy_cp = yy_c_buf_p;  #define yyterminate() return YY_NULL
926    #endif
927          /* Support of yytext. */  
928          *yy_cp = yy_hold_char;  /* Number of entries by which start-condition stack grows. */
929    #ifndef YY_START_STACK_INCR
930          /* yy_bp points to the position in yy_ch_buf of the start of  #define YY_START_STACK_INCR 25
931           * the current run.  #endif
932           */  
933          yy_bp = yy_cp;  /* Report a fatal error. */
934    #ifndef YY_FATAL_ERROR
935          yy_current_state = yy_start;  #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
936          yy_state_ptr = yy_state_buf;  #endif
937          *yy_state_ptr++ = yy_current_state;  
938  yy_match:  /* end tables serialization structures and prototypes */
939          do  
940              {  /* Default declaration of generated scanner - a define so the user can
941              register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];   * easily add parameters.
942              while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )   */
943                  {  #ifndef YY_DECL
944                  yy_current_state = (int) yy_def[yy_current_state];  #define YY_DECL_IS_OURS 1
945                  if ( yy_current_state >= 124 )  
946                      yy_c = yy_meta[(unsigned int) yy_c];  extern int typ_lex (void);
947                  }  
948              yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];  #define YY_DECL int typ_lex (void)
949              *yy_state_ptr++ = yy_current_state;  #endif /* !YY_DECL */
950              ++yy_cp;  
951              }  /* Code executed at the beginning of each rule, after typ_text and typ_leng
952          while ( yy_base[yy_current_state] != 467 );   * have been set up.
953     */
954  yy_find_action:  #ifndef YY_USER_ACTION
955          yy_current_state = *--yy_state_ptr;  #define YY_USER_ACTION
956          yy_lp = yy_accept[yy_current_state];  #endif
957  find_rule: /* we branch to this label when backing up */  
958          for ( ; ; ) /* until we find what rule we matched */  /* Code executed at the end of each rule. */
959              {  #ifndef YY_BREAK
960              if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )  #define YY_BREAK break;
961                  {  #endif
962                  yy_act = yy_acclist[yy_lp];  
963                      {  #define YY_RULE_SETUP \
964                      yy_full_match = yy_cp;      YY_USER_ACTION
965                      break;  
966                      }  /** The main scanner function which does all the work.
967                  }   */
968              --yy_cp;  YY_DECL
969              yy_current_state = *--yy_state_ptr;  {
970              yy_lp = yy_accept[yy_current_state];      register yy_state_type yy_current_state;
971              }      register char *yy_cp, *yy_bp;
972        register int yy_act;
973          YY_DO_BEFORE_ACTION;      
974    #line 167 "tcltk/generic/interface/typelex.l"
975          if ( yy_act != YY_END_OF_BUFFER )  
976              {  
977              int yyl;      /*
978              for ( yyl = 0; yyl < yyleng; ++yyl )       *  Code to handle (* Comments *)
979                  if ( yytext[yyl] == '\n' )       *
980                      ++yylineno;       *  "(*" puts us into the Comment state.  Comments nest, so in the
981              }       *  Comment state we need to look for "(*" that increases the nesting
982         *  level and "*)" that will lower it.
983  do_action:  /* This label is used only to access EOF actions. */       *  Do NOT try to match \(\*+ since that causes "(****)" to parse
984         *  incorrectly.
985         */
986          switch ( yy_act )  
987      { /* beginning of action switch */  #line 988 "<stdout>"
988  case 1:  
989  #line 180 "tcltk\\generic\\interface\\typelex.l"      if ( !(yy_init) )
990  case 2:          {
991  #line 181 "tcltk\\generic\\interface\\typelex.l"          (yy_init) = 1;
992  case 3:  
993  YY_RULE_SETUP  #ifdef YY_USER_INIT
994  #line 181 "tcltk\\generic\\interface\\typelex.l"          YY_USER_INIT;
995  {  #endif
996                    /*  Match "(" followed by "*" puts us into  
997                     *  the COMMENT state.  Don't use \*+ since          /* Create the reject buffer large enough to save one state per allowed character. */
998                     *  that will parse "(***)" incorrectly.          if ( ! (yy_state_buf) )
999                     *  Initialize the nesting level.              (yy_state_buf) = (yy_state_type *)typ_alloc(YY_STATE_BUF_SIZE  );
1000                     *  Print if ShowComments is TRUE and  
1001                                     *  MatchedToken is not NONE          if ( ! (yy_start) )
1002                     */              (yy_start) = 1; /* first start state */
1003                    BEGIN(Comment);  
1004                    CommentNestLevel = 1;          if ( ! typ_in )
1005                    if( ShowComments && MatchedToken!=NONE ) {              typ_in = stdin;
1006                      Asc_PutCode( typ_text, typ_out );  
1007                    }          if ( ! typ_out )
1008                    break;              typ_out = stdout;
1009                  }  
1010      YY_BREAK          if ( ! YY_CURRENT_BUFFER ) {
1011  case 4:              typ_ensure_buffer_stack ();
1012  YY_RULE_SETUP              YY_CURRENT_BUFFER_LVALUE =
1013  #line 196 "tcltk\\generic\\interface\\typelex.l"                  typ__create_buffer(typ_in,YY_BUF_SIZE );
1014  {          }
1015                    /*  Match "(" followed "*" followed by  
1016                     *  anything that's not "(" nor "*".          typ__load_buffer_state( );
1017                     *  `anything' includes newlines.          }
1018                     *  Increase the commment nesting level.  
1019                     *  Print if ShowComments is TRUE and      while ( 1 )     /* loops until end-of-file is reached */
1020                                     *  MatchedToken is not NONE.          {
1021                     */          yy_cp = (yy_c_buf_p);
1022                    CommentNestLevel++;  
1023                    if( ShowComments && MatchedToken!=NONE ) {          /* Support of typ_text. */
1024                      Asc_PutCode( typ_text, typ_out );          *yy_cp = (yy_hold_char);
1025                    }  
1026                    break;          /* yy_bp points to the position in yy_ch_buf of the start of
1027                  }           * the current run.
1028      YY_BREAK           */
1029  case 5:          yy_bp = yy_cp;
1030  YY_RULE_SETUP  
1031  #line 210 "tcltk\\generic\\interface\\typelex.l"          yy_current_state = (yy_start);
1032  {  
1033                    /*  Match anything not "*" or "(" followed          (yy_state_ptr) = (yy_state_buf);
1034                     *  by one or more "*"s followed by ")".          *(yy_state_ptr)++ = yy_current_state;
1035                     *  `anything' includes newlines.  
1036                     *  This decreases the comment nesting level  yy_match:
1037                     *  and kicks us out if we're back to zero.          do
1038                     *  Print if ShowComments is TRUE and              {
1039                                     *  MatchedToken is not NONE.              register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1040                     */              while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1041                    CommentNestLevel--;                  {
1042                    if( CommentNestLevel > 0 ) {                  yy_current_state = (int) yy_def[yy_current_state];
1043                                      /* more comments */                  if ( yy_current_state >= 124 )
1044                                      break;                      yy_c = yy_meta[(unsigned int) yy_c];
1045                                    }                  }
1046                                    if( MatchedToken == NONE ) {              yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1047                                      BEGIN(INITIAL);              *(yy_state_ptr)++ = yy_current_state;
1048                                      break;              ++yy_cp;
1049                                    }              }
1050                                    if( ShowComments ) {          while ( yy_base[yy_current_state] != 467 );
1051                                      Asc_PutCode( typ_text, typ_out );  
1052                                    }  yy_find_action:
1053                                    switch( MatchedToken ) {          yy_current_state = *--(yy_state_ptr);
1054                                    case MODEL:          (yy_lp) = yy_accept[yy_current_state];
1055                                      BEGIN(Model);  find_rule: /* we branch to this label when backing up */
1056                                      break;          for ( ; ; ) /* until we find what rule we matched */
1057                                    case CONSTANT:              {
1058                                      BEGIN(Constant);              if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
1059                                      break;                  {
1060                                    default:                  yy_act = yy_acclist[(yy_lp)];
1061                                      BEGIN(INITIAL);                      {
1062                                      break;                      (yy_full_match) = yy_cp;
1063                                    }                      break;
1064                    break;                      }
1065                                  }                  }
1066      YY_BREAK              --yy_cp;
1067  case 6:              yy_current_state = *--(yy_state_ptr);
1068  #line 245 "tcltk\\generic\\interface\\typelex.l"              (yy_lp) = yy_accept[yy_current_state];
1069  case 7:              }
1070  #line 246 "tcltk\\generic\\interface\\typelex.l"  
1071  case 8:          YY_DO_BEFORE_ACTION;
1072  YY_RULE_SETUP  
1073  #line 246 "tcltk\\generic\\interface\\typelex.l"          if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
1074  {              {
1075                    /*              int yyl;
1076                     *  These three rules eat:              for ( yyl = (yy_prev_more_offset); yyl < typ_leng; ++yyl )
1077                     *    -- anything that's not a "*" or a "("                  if ( typ_text[yyl] == '\n' )
1078                     *    -- "("s not followed by "*"                        
1079                     *    -- "*"s not followed by ")"      typ_lineno++;
1080                     *  `anything' includes newlines.  ;
1081                     *  Print if ShowComments is TRUE and              }
1082                                     *  MatchedToken is not NONE  
1083                     */  do_action:  /* This label is used only to access EOF actions. */
1084                    if( ShowComments && MatchedToken!=NONE ) {  
1085                      Asc_PutCode( typ_text, typ_out );          switch ( yy_act )
1086                    }      { /* beginning of action switch */
1087                    break;  case 1:
1088                  }  #line 180 "tcltk/generic/interface/typelex.l"
1089      YY_BREAK  case 2:
1090  /*  #line 181 "tcltk/generic/interface/typelex.l"
1091       *  Code to handle { Text in Braces }  case 3:
1092       *  YY_RULE_SETUP
1093       *  "{" puts us into the BracedText state.  Braces nest, so  #line 181 "tcltk/generic/interface/typelex.l"
1094       *  in the BracedText state we need to look for "{" that increases  {
1095       *  the nesting level and "}" that will lower it.                    /*  Match "(" followed by "*" puts us into
1096       */                     *  the COMMENT state.  Don't use \*+ since
1097  case 9:                     *  that will parse "(***)" incorrectly.
1098  #line 272 "tcltk\\generic\\interface\\typelex.l"                     *  Initialize the nesting level.
1099  case 10:                     *  Print if ShowComments is TRUE and
1100  #line 273 "tcltk\\generic\\interface\\typelex.l"                                     *  MatchedToken is not NONE
1101  case 11:                     */
1102  YY_RULE_SETUP                    BEGIN(Comment);
1103  #line 273 "tcltk\\generic\\interface\\typelex.l"                    CommentNestLevel = 1;
1104  {                    if( ShowComments && MatchedToken!=NONE ) {
1105                    /*  A "{" puts us into the BracedText state.                      Asc_PutCode( typ_text, typ_out );
1106                     *  Initialize the nesting level.                    }
1107                     *  Print if MatchedToken is not NONE.                    break;
1108                     *                  }
1109                     */      YY_BREAK
1110                    BEGIN(BracedText);  case 4:
1111                    BracesNestLevel = 1;  /* rule 4 can match eol */
1112                    if( MatchedToken != NONE ) {  YY_RULE_SETUP
1113                      Asc_PutCode( typ_text, typ_out );  #line 196 "tcltk/generic/interface/typelex.l"
1114                    }  {
1115                    break;                    /*  Match "(" followed "*" followed by
1116                  }                     *  anything that's not "(" nor "*".
1117      YY_BREAK                     *  `anything' includes newlines.
1118  case 12:                     *  Increase the commment nesting level.
1119  YY_RULE_SETUP                     *  Print if ShowComments is TRUE and
1120  #line 286 "tcltk\\generic\\interface\\typelex.l"                                     *  MatchedToken is not NONE.
1121  {                     */
1122                    /*  A backslash \ in the BracedText state                    CommentNestLevel++;
1123                     *  protects any character---even a                    if( ShowComments && MatchedToken!=NONE ) {
1124                     *  newline---and does not affect the                      Asc_PutCode( typ_text, typ_out );
1125                     *  Nesting Level.                    }
1126                     *  Print if MatchedToken is not NONE.                    break;
1127                     */                  }
1128                    if( MatchedToken != NONE ) {      YY_BREAK
1129                      Asc_PutCode( typ_text, typ_out );  case 5:
1130                    }  /* rule 5 can match eol */
1131                    break;  YY_RULE_SETUP
1132                  }  #line 210 "tcltk/generic/interface/typelex.l"
1133      YY_BREAK  {
1134  case 13:                    /*  Match anything not "*" or "(" followed
1135  YY_RULE_SETUP                     *  by one or more "*"s followed by ")".
1136  #line 298 "tcltk\\generic\\interface\\typelex.l"                     *  `anything' includes newlines.
1137  {                     *  This decreases the comment nesting level
1138                    /*  A backslash \ in the BracedText state                     *  and kicks us out if we're back to zero.
1139                     *  protects any character---even a                     *  Print if ShowComments is TRUE and
1140                     *  newline---and does not affect the                                     *  MatchedToken is not NONE.
1141                     *  Nesting Level.                     */
1142                     *  Print if MatchedToken is not NONE.                    CommentNestLevel--;
1143                     */                    if( CommentNestLevel > 0 ) {
1144                    if( MatchedToken != NONE ) {                                      /* more comments */
1145                      Asc_PutCode( typ_text, typ_out );                                      break;
1146                    }                                    }
1147                    break;                                    if( MatchedToken == NONE ) {
1148                  }                                      BEGIN(INITIAL);
1149      YY_BREAK                                      break;
1150  case 14:                                    }
1151  YY_RULE_SETUP                                    if( ShowComments ) {
1152  #line 310 "tcltk\\generic\\interface\\typelex.l"                                      Asc_PutCode( typ_text, typ_out );
1153  {                                    }
1154                    /*  A "{" in the braces state gets added to                                    switch( MatchedToken ) {
1155                     *  the text and increase the nesting level.                                    case MODEL:
1156                     *  Match any non-brace character---including                                      BEGIN(Model);
1157                     *  newlines---that follows the open brace.                                      break;
1158                     *  Print if MatchedToken is not NONE.                                    case CONSTANT:
1159                     */                                      BEGIN(Constant);
1160                    BracesNestLevel++;                                      break;
1161                    if( MatchedToken != NONE ) {                                    default:
1162                      Asc_PutCode( typ_text, typ_out );                                      BEGIN(INITIAL);
1163                    }                                      break;
1164                    break;                                    }
1165                  }                    break;
1166      YY_BREAK                                  }
1167  case 15:      YY_BREAK
1168  YY_RULE_SETUP  case 6:
1169  #line 323 "tcltk\\generic\\interface\\typelex.l"  /* rule 6 can match eol */
1170  {  #line 245 "tcltk/generic/interface/typelex.l"
1171                    /*  A "}" will reduce the nesting level.  case 7:
1172                     *  If the nesting level is zero, go back to  /* rule 7 can match eol */
1173                     *  the previous state.  Match any  #line 246 "tcltk/generic/interface/typelex.l"
1174                     *  non-brace character---including  case 8:
1175                     *  newlines---that precedes the close brace.  /* rule 8 can match eol */
1176                     *  Print if MatchedToken is not NONE.  YY_RULE_SETUP
1177                     */  #line 246 "tcltk/generic/interface/typelex.l"
1178                    BracesNestLevel--;  {
1179                    if (BracesNestLevel > 0) {                    /*
1180                                      /* more braced text */                     *  These three rules eat:
1181                                      break;                     *    -- anything that's not a "*" or a "("
1182                                    }                     *    -- "("s not followed by "*"
1183                                    if( MatchedToken == NONE ) {                     *    -- "*"s not followed by ")"
1184                                      BEGIN(INITIAL);                     *  `anything' includes newlines.
1185                                      break;                     *  Print if ShowComments is TRUE and
1186                                    }                                     *  MatchedToken is not NONE
1187                                    Asc_PutCode( typ_text, typ_out );                     */
1188                                    switch( MatchedToken ) {                    if( ShowComments && MatchedToken!=NONE ) {
1189                    case MODEL:                      Asc_PutCode( typ_text, typ_out );
1190                                      BEGIN(Model);                    }
1191                                      break;                    break;
1192                                    case CONSTANT:                  }
1193                                      BEGIN(Constant);      YY_BREAK
1194                                      break;  /*
1195                                    default:       *  Code to handle { Text in Braces }
1196                                      BEGIN(INITIAL);       *
1197                                      break;       *  "{" puts us into the BracedText state.  Braces nest, so
1198                                    }       *  in the BracedText state we need to look for "{" that increases
1199                    break;       *  the nesting level and "}" that will lower it.
1200                  }       */
1201      YY_BREAK  case 9:
1202  case 16:  #line 272 "tcltk/generic/interface/typelex.l"
1203  YY_RULE_SETUP  case 10:
1204  #line 354 "tcltk\\generic\\interface\\typelex.l"  #line 273 "tcltk/generic/interface/typelex.l"
1205  {  case 11:
1206                    /*  Match anything that is not "{" nor "}"  YY_RULE_SETUP
1207                     *  nor "\\"(backslash).  #line 273 "tcltk/generic/interface/typelex.l"
1208                     *  `anything' includes newlines.  {
1209                     *  Print if MatchedToken is not NONE.                    /*  A "{" puts us into the BracedText state.
1210                     */                     *  Initialize the nesting level.
1211                    if( MatchedToken != NONE ) {                     *  Print if MatchedToken is not NONE.
1212                      Asc_PutCode( typ_text, typ_out );                     *
1213                    }                     */
1214                    break;                    BEGIN(BracedText);
1215                  }                    BracesNestLevel = 1;
1216      YY_BREAK                    if( MatchedToken != NONE ) {
1217  /*                      Asc_PutCode( typ_text, typ_out );
1218       *  Code to check an identifier.                    }
1219       *                    break;
1220       *  When we are looking for a MODEL, ATOM, CONSTANT, or DEFIITION                  }
1221       *  and we find the text [UNIVERSAL]{MODEL|ATOM|CONSTANT|DEFINITION},      YY_BREAK
1222       *  we enter this state.  case 12:
1223           *  /* rule 12 can match eol */
1224           *  When we are insided MODEL, ATOM, or DEFINITION and we find  YY_RULE_SETUP
1225       *  the text END, we enter this state.  #line 286 "tcltk/generic/interface/typelex.l"
1226       *  {
1227       *  This state checks to see if the text following the MODEL,                    /*  A backslash \ in the BracedText state
1228       *  ATOM, CONSTANT, DEFINITION, or END keyword matches                     *  protects any character---even a
1229       *  `reqType'---the type requested by the user.  If so, we are                     *  newline---and does not affect the
1230       *  at the beginning or end of a type, and should change states                     *  Nesting Level.
1231       *  accordingly.  If not, we should stay in our current state.                     *  Print if MatchedToken is not NONE.
1232       */                     */
1233  case 17:                    if( MatchedToken != NONE ) {
1234  YY_RULE_SETUP                      Asc_PutCode( typ_text, typ_out );
1235  #line 385 "tcltk\\generic\\interface\\typelex.l"                    }
1236  {                    break;
1237                    /*                  }
1238                     *  Found an identifier.      YY_BREAK
1239                     *  Identify the correct state.  case 13:
1240                     */  /* rule 13 can match eol */
1241                    if( MatchedToken == MODEL_END ) {  YY_RULE_SETUP
1242                      /*  #line 298 "tcltk/generic/interface/typelex.l"
1243                       *  We're in the Model state, print the  {
1244                       *  text and see if matches reqType, if                    /*  A backslash \ in the BracedText state
1245                       *  so, we're at the end of the MODEL                     *  protects any character---even a
1246                       *  (or ATOM or DEFINITION)                     *  newline---and does not affect the
1247                       *  and should exit typ_lex()---return to                     *  Nesting Level.
1248                       *  our caller, else stay in the Model                     *  Print if MatchedToken is not NONE.
1249                       *  state.                     */
1250                       */                    if( MatchedToken != NONE ) {
1251                      Asc_PutCode( typ_text, typ_out );                      Asc_PutCode( typ_text, typ_out );
1252                      if(strcmp((typ_text+StartId),reqType) == 0) {                    }
1253                        return 0;                    break;
1254                      } else {                  }
1255                                        MatchedToken = MODEL;      YY_BREAK
1256                        BEGIN(Model);  case 14:
1257                      }  /* rule 14 can match eol */
1258                                      break;  YY_RULE_SETUP
1259                    }  #line 310 "tcltk/generic/interface/typelex.l"
1260                                    if(strcmp((typ_text+StartId),reqType)==0){  {
1261                      /*                    /*  A "{" in the braces state gets added to
1262                       *  We're in the INITIAL state, and we                     *  the text and increase the nesting level.
1263                       *  found the beginning of the                     *  Match any non-brace character---including
1264                       *  requested MODEL, ATOM, CONSTANT,                     *  newlines---that follows the open brace.
1265                       *  or DEFINITION.                     *  Print if MatchedToken is not NONE.
1266                       *  Print the text and set OutputState to                     */
1267                       *  say we are printing.  Start the                    BracesNestLevel++;
1268                       *  appropriate State by checking                    if( MatchedToken != NONE ) {
1269                       *  MatchedToken.                      Asc_PutCode( typ_text, typ_out );
1270                       */                    }
1271                      Asc_PutCode( typ_text, typ_out );                    break;
1272                                      switch( MatchedToken ) {                  }
1273                      case MODEL:      YY_BREAK
1274                        BEGIN(Model);  case 15:
1275                                        break;  /* rule 15 can match eol */
1276                      case CONSTANT:  YY_RULE_SETUP
1277                        BEGIN(Constant);  #line 323 "tcltk/generic/interface/typelex.l"
1278                                        break;  {
1279                                      default:                    /*  A "}" will reduce the nesting level.
1280                        /* something is wrong */                     *  If the nesting level is zero, go back to
1281                        BEGIN(INITIAL);                     *  the previous state.  Match any
1282                                        break;                     *  non-brace character---including
1283                      }                     *  newlines---that precedes the close brace.
1284                                      break;                     *  Print if MatchedToken is not NONE.
1285                    }                     */
1286                                    /*                    BracesNestLevel--;
1287                                     *  We're in the INITIAL state; we found                    if (BracesNestLevel > 0) {
1288                                     *  an MODEL, ATOM, CONSTANT, or                                      /* more braced text */
1289                                     *  DEFINITION, but it wasn't the right                                      break;
1290                                     *  one.  Stay in the INITIAL state.                                    }
1291                                     */                                    if( MatchedToken == NONE ) {
1292                                    MatchedToken = NONE;                                      BEGIN(INITIAL);
1293                                    BEGIN(INITIAL);                                      break;
1294                    break;                                    }
1295                  }                                    Asc_PutCode( typ_text, typ_out );
1296      YY_BREAK                                    switch( MatchedToken ) {
1297  case 18:                    case MODEL:
1298  YY_RULE_SETUP                                      BEGIN(Model);
1299  #line 445 "tcltk\\generic\\interface\\typelex.l"                                      break;
1300  {                                    case CONSTANT:
1301                    /*                                      BEGIN(Constant);
1302                     *  Some text other than an identifier                                      break;
1303                     *  was found.  Print the text if                                    default:
1304                     *  MatchedToken is not NONE,                                      BEGIN(INITIAL);
1305                     *  and return to the correct state.                                      break;
1306                     */                                    }
1307                    if( MatchedToken == NONE ) {                    break;
1308                                      BEGIN(INITIAL);                  }
1309                                      break;      YY_BREAK
1310                                    }  case 16:
1311                                    Asc_PutCode( typ_text, typ_out );  /* rule 16 can match eol */
1312                                    switch( MatchedToken ) {  YY_RULE_SETUP
1313                                    case MODEL:  #line 354 "tcltk/generic/interface/typelex.l"
1314                      BEGIN(Model);  {
1315                                      break;                    /*  Match anything that is not "{" nor "}"
1316                    case CONSTANT:                     *  nor "\\"(backslash).
1317                      BEGIN(Constant);                     *  `anything' includes newlines.
1318                                      break;                     *  Print if MatchedToken is not NONE.
1319                                    default:                     */
1320                                      /* something is wrong */                    if( MatchedToken != NONE ) {
1321                                      BEGIN(INITIAL);                      Asc_PutCode( typ_text, typ_out );
1322                                      break;                    }
1323                    }                    break;
1324                    break;                  }
1325                  }      YY_BREAK
1326      YY_BREAK  /*
1327  /*       *  Code to check an identifier.
1328       *  Code to handle the model/atom/definition we want.       *
1329       *       *  When we are looking for a MODEL, ATOM, CONSTANT, or DEFIITION
1330       *  Once we've found the start of the matching MODEL, ATOM, or       *  and we find the text [UNIVERSAL]{MODEL|ATOM|CONSTANT|DEFINITION},
1331           *  DEFINITION, print the text until we find the END token.       *  we enter this state.
1332           *  When we find END, save the current length of typ_text and use           *
1333           *  MY_YYMORE() to append the identifier, then check the identifier           *  When we are insided MODEL, ATOM, or DEFINITION and we find
1334           *  (in the CheckID state) to see if it is what we want.  If so,       *  the text END, we enter this state.
1335       *  this is the end of this MODEL, ATOM, or DEFINITION.       *
1336       */       *  This state checks to see if the text following the MODEL,
1337  case 19:       *  ATOM, CONSTANT, DEFINITION, or END keyword matches
1338  YY_RULE_SETUP       *  `reqType'---the type requested by the user.  If so, we are
1339  #line 485 "tcltk\\generic\\interface\\typelex.l"       *  at the beginning or end of a type, and should change states
1340  {       *  accordingly.  If not, we should stay in our current state.
1341                    /*       */
1342                     *  Found the END keyword.  Save the  case 17:
1343                     *  current location in the typ_text array,  YY_RULE_SETUP
1344                     *  then enter the CheckID state to see if  #line 385 "tcltk/generic/interface/typelex.l"
1345                     *  the identifier matches what we want.  {
1346                     */                    /*
1347                    StartId = typ_leng;                     *  Found an identifier.
1348                                    MatchedToken = MODEL_END;                     *  Identify the correct state.
1349                    BEGIN(CheckID);                     */
1350                    MY_YYMORE();                    if( MatchedToken == MODEL_END ) {
1351                    break;                      /*
1352                  }                       *  We're in the Model state, print the
1353      YY_BREAK                       *  text and see if matches reqType, if
1354  case 20:                       *  so, we're at the end of the MODEL
1355  #line 499 "tcltk\\generic\\interface\\typelex.l"                       *  (or ATOM or DEFINITION)
1356  case 21:                       *  and should exit typ_lex()---return to
1357  #line 500 "tcltk\\generic\\interface\\typelex.l"                       *  our caller, else stay in the Model
1358  case 22:                       *  state.
1359  YY_RULE_SETUP                       */
1360  #line 500 "tcltk\\generic\\interface\\typelex.l"                      Asc_PutCode( typ_text, typ_out );
1361  {                      if(strcmp((typ_text+StartId),reqType) == 0) {
1362                    /*                        return 0;
1363                     *  These rules match                      } else {
1364                     *    -- any character except that which                                        MatchedToken = MODEL;
1365                     *       would cause us to change states                        BEGIN(Model);
1366                     *    -- "("s not followed by "*"s                      }
1367                     *    -- uppercase keywords and following                                      break;
1368                     *       semicolon or whitespace.                    }
1369                     *  Print the text.                                    if(strcmp((typ_text+StartId),reqType)==0){
1370                     */                      /*
1371                    Asc_PutCode( typ_text, typ_out );                       *  We're in the INITIAL state, and we
1372                    break;                       *  found the beginning of the
1373                  }                       *  requested MODEL, ATOM, CONSTANT,
1374      YY_BREAK                       *  or DEFINITION.
1375  /*                       *  Print the text and set OutputState to
1376       *  Code to handle the constant definition we want.                       *  say we are printing.  Start the
1377       *                       *  appropriate State by checking
1378       *  Once we've found the start of the matching CONSTANT, print                       *  MatchedToken.
1379       *  the text until we find a semicolon ";".                       */
1380       */                      Asc_PutCode( typ_text, typ_out );
1381  case 23:                                      switch( MatchedToken ) {
1382  YY_RULE_SETUP                      case MODEL:
1383  #line 523 "tcltk\\generic\\interface\\typelex.l"                        BEGIN(Model);
1384  {                                        break;
1385                    /*                      case CONSTANT:
1386                     * Found the ";" which ends the CONSTANT.                        BEGIN(Constant);
1387                     * Do NOT print it since that will be                                        break;
1388                     * added below.  Return 0.                                      default:
1389                     */                        /* something is wrong */
1390                     return 0;                        BEGIN(INITIAL);
1391                  }                                        break;
1392      YY_BREAK                      }
1393  case 24:                                      break;
1394  #line 532 "tcltk\\generic\\interface\\typelex.l"                    }
1395  case 25:                                    /*
1396  YY_RULE_SETUP                                     *  We're in the INITIAL state; we found
1397  #line 532 "tcltk\\generic\\interface\\typelex.l"                                     *  an MODEL, ATOM, CONSTANT, or
1398  {                                     *  DEFINITION, but it wasn't the right
1399                    /*                                     *  one.  Stay in the INITIAL state.
1400                     *  These rules match                                     */
1401                     *    -- any character except that which                                    MatchedToken = NONE;
1402                     *       would cause us to change states                                    BEGIN(INITIAL);
1403                     *    -- "("s not followed by "*"s                    break;
1404                     *  Print the text.                  }
1405                     */      YY_BREAK
1406                    Asc_PutCode( typ_text, typ_out );  case 18:
1407                    break;  YY_RULE_SETUP
1408                  }  #line 445 "tcltk/generic/interface/typelex.l"
1409      YY_BREAK  {
1410  /*                    /*
1411       *  Code to look for [UNIVERSAL ]{MODEL|ATOM|CONSTANT|DEFINITION}.                     *  Some text other than an identifier
1412       *                     *  was found.  Print the text if
1413       *  If we find UNIVERSAL, use yymore() to append the next                     *  MatchedToken is not NONE,
1414       *  keyword---probably MODEL, ATOM, or CONSTANT.                     *  and return to the correct state.
1415       *  If we find MODEL, ATOM, CONSTANT, or DEFINITION save the                     */
1416       *  current length and use yymore() to append the identifier,                    if( MatchedToken == NONE ) {
1417       *  then check the identifier (in the CheckID state) to see if                                      BEGIN(INITIAL);
1418       *  it is what we're looking for.                                      break;
1419       */                                    }
1420  case 26:                                    Asc_PutCode( typ_text, typ_out );
1421  YY_RULE_SETUP                                    switch( MatchedToken ) {
1422  #line 557 "tcltk\\generic\\interface\\typelex.l"                                    case MODEL:
1423  {                      BEGIN(Model);
1424                    /*                                      break;
1425                     *  Found the UNIVERSAL keyword.  Append                    case CONSTANT:
1426                     *  the following ATOM/MODEL/CONSTANT                      BEGIN(Constant);
1427                     *  keyword.                                      break;
1428                     */                                    default:
1429                    MY_YYMORE();                                      /* something is wrong */
1430                    break;                                      BEGIN(INITIAL);
1431                  }                                      break;
1432      YY_BREAK                    }
1433  case 27:                    break;
1434  #line 567 "tcltk\\generic\\interface\\typelex.l"                  }
1435  case 28:      YY_BREAK
1436  #line 568 "tcltk\\generic\\interface\\typelex.l"  /*
1437  case 29:       *  Code to handle the model/atom/definition we want.
1438  YY_RULE_SETUP       *
1439  #line 568 "tcltk\\generic\\interface\\typelex.l"       *  Once we've found the start of the matching MODEL, ATOM, or
1440  {           *  DEFINITION, print the text until we find the END token.
1441                    /*           *  When we find END, save the current length of typ_text and use
1442                     *  Found an MODEL, ATOM, or DEFINITION           *  MY_YYMORE() to append the identifier, then check the identifier
1443                     *  keyword--perhaps with a UNIVERSAL           *  (in the CheckID state) to see if it is what we want.  If so,
1444                     *  modifier.  Save the current location       *  this is the end of this MODEL, ATOM, or DEFINITION.
1445                     *  in the typ_text array, then enter the       */
1446                     *  CheckID state to see if the identifier  case 19:
1447                                     *  matches what we want.  YY_RULE_SETUP
1448                     */  #line 485 "tcltk/generic/interface/typelex.l"
1449                    StartId = typ_leng;  {
1450                    MatchedToken = MODEL;                    /*
1451                    BEGIN(CheckID);                     *  Found the END keyword.  Save the
1452                    MY_YYMORE();                     *  current location in the typ_text array,
1453                    break;                     *  then enter the CheckID state to see if
1454                  }                     *  the identifier matches what we want.
1455      YY_BREAK                     */
1456  case 30:                    StartId = typ_leng;
1457  YY_RULE_SETUP                                    MatchedToken = MODEL_END;
1458  #line 583 "tcltk\\generic\\interface\\typelex.l"                    BEGIN(CheckID);
1459  {                    MY_YYMORE();
1460                    /*                    break;
1461                     *  Found a CONSTANT keyword--perhaps                  }
1462                     *  with a UNIVERSAL modifier.  Save the      YY_BREAK
1463                     *  current location in the typ_text array,  case 20:
1464                     *  then enter the CheckID state to see if  /* rule 20 can match eol */
1465                     *  the identifier matches what we want.  #line 499 "tcltk/generic/interface/typelex.l"
1466                     */  case 21:
1467                    StartId = typ_leng;  /* rule 21 can match eol */
1468                    MatchedToken = CONSTANT;  #line 500 "tcltk/generic/interface/typelex.l"
1469                    BEGIN(CheckID);  case 22:
1470                    MY_YYMORE();  /* rule 22 can match eol */
1471                    break;  YY_RULE_SETUP
1472                  }  #line 500 "tcltk/generic/interface/typelex.l"
1473      YY_BREAK  {
1474  /*                    /*
1475           *  Rules to match other text.                     *  These rules match
1476           */                     *    -- any character except that which
1477  case 31:                     *       would cause us to change states
1478  #line 606 "tcltk\\generic\\interface\\typelex.l"                     *    -- "("s not followed by "*"s
1479  case 32:                     *    -- uppercase keywords and following
1480  #line 607 "tcltk\\generic\\interface\\typelex.l"                     *       semicolon or whitespace.
1481  case 33:                     *  Print the text.
1482  YY_RULE_SETUP                     */
1483  #line 607 "tcltk\\generic\\interface\\typelex.l"                    Asc_PutCode( typ_text, typ_out );
1484  {                    break;
1485                    /*                  }
1486                     *  These rules match      YY_BREAK
1487                     *    -- any character except that which  /*
1488                     *       would cause us to change states       *  Code to handle the constant definition we want.
1489                     *    -- "("s not followed by "*"s       *
1490                     *    -- uppercase keywords and following       *  Once we've found the start of the matching CONSTANT, print
1491                     *       semicolon or whitespace.       *  the text until we find a semicolon ";".
1492                     *  Do nothing.       */
1493                     */  case 23:
1494                    break;  YY_RULE_SETUP
1495                  }  #line 523 "tcltk/generic/interface/typelex.l"
1496      YY_BREAK  {
1497  case YY_STATE_EOF(INITIAL):                    /*
1498  #line 619 "tcltk\\generic\\interface\\typelex.l"                     * Found the ";" which ends the CONSTANT.
1499  {                     * Do NOT print it since that will be
1500                    /*                     * added below.  Return 0.
1501                     *  Reached End of file without a match                     */
1502                     */                     return 0;
1503                    return 1;                  }
1504                  }      YY_BREAK
1505      YY_BREAK  case 24:
1506  case 34:  /* rule 24 can match eol */
1507  YY_RULE_SETUP  #line 532 "tcltk/generic/interface/typelex.l"
1508  #line 627 "tcltk\\generic\\interface\\typelex.l"  case 25:
1509  ECHO;  /* rule 25 can match eol */
1510      YY_BREAK  YY_RULE_SETUP
1511              case YY_STATE_EOF(Comment):  #line 532 "tcltk/generic/interface/typelex.l"
1512              case YY_STATE_EOF(BracedText):  {
1513              case YY_STATE_EOF(Model):                    /*
1514              case YY_STATE_EOF(Constant):                     *  These rules match
1515              case YY_STATE_EOF(CheckID):                     *    -- any character except that which
1516                  yyterminate();                     *       would cause us to change states
1517                       *    -- "("s not followed by "*"s
1518      case YY_END_OF_BUFFER:                     *  Print the text.
1519          {                     */
1520          /* Amount of text matched not including the EOB char. */                    Asc_PutCode( typ_text, typ_out );
1521          int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;                    break;
1522                    }
1523          /* Undo the effects of YY_DO_BEFORE_ACTION. */      YY_BREAK
1524          *yy_cp = yy_hold_char;  /*
1525          YY_RESTORE_YY_MORE_OFFSET       *  Code to look for [UNIVERSAL ]{MODEL|ATOM|CONSTANT|DEFINITION}.
1526         *
1527          if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )       *  If we find UNIVERSAL, use yymore() to append the next
1528              {       *  keyword---probably MODEL, ATOM, or CONSTANT.
1529              /* We're scanning a new file or input source.  It's       *  If we find MODEL, ATOM, CONSTANT, or DEFINITION save the
1530               * possible that this happened because the user       *  current length and use yymore() to append the identifier,
1531               * just pointed yyin at a new source and called       *  then check the identifier (in the CheckID state) to see if
1532               * yylex().  If so, then we have to assure       *  it is what we're looking for.
1533               * consistency between yy_current_buffer and our       */
1534               * globals.  Here is the right place to do so, because  case 26:
1535               * this is the first action (other than possibly a  YY_RULE_SETUP
1536               * back-up) that will match for the new input source.  #line 557 "tcltk/generic/interface/typelex.l"
1537               */  {
1538              yy_n_chars = yy_current_buffer->yy_n_chars;                    /*
1539              yy_current_buffer->yy_input_file = yyin;                     *  Found the UNIVERSAL keyword.  Append
1540              yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;                     *  the following ATOM/MODEL/CONSTANT
1541              }                     *  keyword.
1542                       */
1543          /* Note that here we test for yy_c_buf_p "<=" to the position                    MY_YYMORE();
1544           * of the first EOB in the buffer, since yy_c_buf_p will                    break;
1545           * already have been incremented past the NUL character                  }
1546           * (since all states make transitions on EOB to the      YY_BREAK
1547           * end-of-buffer state).  Contrast this with the test  case 27:
1548           * in input().  #line 567 "tcltk/generic/interface/typelex.l"
1549           */  case 28:
1550          if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )  #line 568 "tcltk/generic/interface/typelex.l"
1551              { /* This was really a NUL. */  case 29:
1552              yy_state_type yy_next_state;  YY_RULE_SETUP
1553    #line 568 "tcltk/generic/interface/typelex.l"
1554              yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;  {
1555                      /*
1556              yy_current_state = yy_get_previous_state();                     *  Found an MODEL, ATOM, or DEFINITION
1557                       *  keyword--perhaps with a UNIVERSAL
1558              /* Okay, we're now positioned to make the NUL                     *  modifier.  Save the current location
1559               * transition.  We couldn't have                     *  in the typ_text array, then enter the
1560               * yy_get_previous_state() go ahead and do it                     *  CheckID state to see if the identifier
1561               * for us because it doesn't know how to deal                                     *  matches what we want.
1562               * with the possibility of jamming (and we don't                     */
1563               * want to build jamming into it because then it                    StartId = typ_leng;
1564               * will run more slowly).                    MatchedToken = MODEL;
1565               */                    BEGIN(CheckID);
1566                      MY_YYMORE();
1567              yy_next_state = yy_try_NUL_trans( yy_current_state );                    break;
1568                    }
1569              yy_bp = yytext_ptr + YY_MORE_ADJ;      YY_BREAK
1570    case 30:
1571              if ( yy_next_state )  YY_RULE_SETUP
1572                  {  #line 583 "tcltk/generic/interface/typelex.l"
1573                  /* Consume the NUL. */  {
1574                  yy_cp = ++yy_c_buf_p;                    /*
1575                  yy_current_state = yy_next_state;                     *  Found a CONSTANT keyword--perhaps
1576                  goto yy_match;                     *  with a UNIVERSAL modifier.  Save the
1577                  }                     *  current location in the typ_text array,
1578                       *  then enter the CheckID state to see if
1579              else                     *  the identifier matches what we want.
1580                  {                     */
1581                  yy_cp = yy_c_buf_p;                    StartId = typ_leng;
1582                  goto yy_find_action;                    MatchedToken = CONSTANT;
1583                  }                    BEGIN(CheckID);
1584              }                    MY_YYMORE();
1585                      break;
1586          else switch ( yy_get_next_buffer() )                  }
1587              {      YY_BREAK
1588              case EOB_ACT_END_OF_FILE:  /*
1589                  {           *  Rules to match other text.
1590                  yy_did_buffer_switch_on_eof = 0;           */
1591    case 31:
1592                  if ( yywrap() )  /* rule 31 can match eol */
1593                      {  #line 606 "tcltk/generic/interface/typelex.l"
1594                      /* Note: because we've taken care in  case 32:
1595                       * yy_get_next_buffer() to have set up  /* rule 32 can match eol */
1596                       * yytext, we can now set up  #line 607 "tcltk/generic/interface/typelex.l"
1597                       * yy_c_buf_p so that if some total  case 33:
1598                       * hoser (like flex itself) wants to  /* rule 33 can match eol */
1599                       * call the scanner after we return the  YY_RULE_SETUP
1600                       * YY_NULL, it'll still work - another  #line 607 "tcltk/generic/interface/typelex.l"
1601                       * YY_NULL will get returned.  {
1602                       */                    /*
1603                      yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;                     *  These rules match
1604                       *    -- any character except that which
1605                      yy_act = YY_STATE_EOF(YY_START);                     *       would cause us to change states
1606                      goto do_action;                     *    -- "("s not followed by "*"s
1607                      }                     *    -- uppercase keywords and following
1608                       *       semicolon or whitespace.
1609                  else                     *  Do nothing.
1610                      {                     */
1611                      if ( ! yy_did_buffer_switch_on_eof )                    break;
1612                          YY_NEW_FILE;                  }
1613                      }      YY_BREAK
1614                  break;  case YY_STATE_EOF(INITIAL):
1615                  }  #line 619 "tcltk/generic/interface/typelex.l"
1616    {
1617              case EOB_ACT_CONTINUE_SCAN:                    /*
1618                  yy_c_buf_p =                     *  Reached End of file without a match
1619                      yytext_ptr + yy_amount_of_matched_text;                     */
1620                      return 1;
1621                  yy_current_state = yy_get_previous_state();                  }
1622        YY_BREAK
1623                  yy_cp = yy_c_buf_p;  case 34:
1624                  yy_bp = yytext_ptr + YY_MORE_ADJ;  YY_RULE_SETUP
1625                  goto yy_match;  #line 627 "tcltk/generic/interface/typelex.l"
1626    ECHO;
1627              case EOB_ACT_LAST_MATCH:      YY_BREAK
1628                  yy_c_buf_p =  #line 1629 "<stdout>"
1629                  &yy_current_buffer->yy_ch_buf[yy_n_chars];              case YY_STATE_EOF(Comment):
1630                case YY_STATE_EOF(BracedText):
1631                  yy_current_state = yy_get_previous_state();              case YY_STATE_EOF(Model):
1632                case YY_STATE_EOF(Constant):
1633                  yy_cp = yy_c_buf_p;              case YY_STATE_EOF(CheckID):
1634                  yy_bp = yytext_ptr + YY_MORE_ADJ;                  yyterminate();
1635                  goto yy_find_action;  
1636              }      case YY_END_OF_BUFFER:
1637          break;          {
1638          }          /* Amount of text matched not including the EOB char. */
1639            int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
1640      default:  
1641          YY_FATAL_ERROR(          /* Undo the effects of YY_DO_BEFORE_ACTION. */
1642              "fatal flex scanner internal error--no action found" );          *yy_cp = (yy_hold_char);
1643      } /* end of action switch */          YY_RESTORE_YY_MORE_OFFSET
1644          } /* end of scanning one token */  
1645      } /* end of yylex */          if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1646                {
1647                /* We're scanning a new file or input source.  It's
1648  /* yy_get_next_buffer - try to read in a new buffer               * possible that this happened because the user
1649   *               * just pointed typ_in at a new source and called
1650   * Returns a code representing an action:               * typ_lex().  If so, then we have to assure
1651   *  EOB_ACT_LAST_MATCH -               * consistency between YY_CURRENT_BUFFER and our
1652   *  EOB_ACT_CONTINUE_SCAN - continue scanning from current position               * globals.  Here is the right place to do so, because
1653   *  EOB_ACT_END_OF_FILE - end of file               * this is the first action (other than possibly a
1654   */               * back-up) that will match for the new input source.
1655                 */
1656  static int yy_get_next_buffer()              (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1657      {              YY_CURRENT_BUFFER_LVALUE->yy_input_file = typ_in;
1658      register char *dest = yy_current_buffer->yy_ch_buf;              YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1659      register char *source = yytext_ptr;              }
1660      register int number_to_move, i;  
1661      int ret_val;          /* Note that here we test for yy_c_buf_p "<=" to the position
1662             * of the first EOB in the buffer, since yy_c_buf_p will
1663      if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )           * already have been incremented past the NUL character
1664          YY_FATAL_ERROR(           * (since all states make transitions on EOB to the
1665          "fatal flex scanner internal error--end of buffer missed" );           * end-of-buffer state).  Contrast this with the test
1666             * in input().
1667      if ( yy_current_buffer->yy_fill_buffer == 0 )           */
1668          { /* Don't try to fill the buffer, so this is an EOF. */          if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1669          if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )              { /* This was really a NUL. */
1670              {              yy_state_type yy_next_state;
1671              /* We matched a single character, the EOB, so  
1672               * treat this as a final EOF.              (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
1673               */  
1674              return EOB_ACT_END_OF_FILE;              yy_current_state = yy_get_previous_state(  );
1675              }  
1676                /* Okay, we're now positioned to make the NUL
1677          else               * transition.  We couldn't have
1678              {               * yy_get_previous_state() go ahead and do it
1679              /* We matched some text prior to the EOB, first               * for us because it doesn't know how to deal
1680               * process it.               * with the possibility of jamming (and we don't
1681               */               * want to build jamming into it because then it
1682              return EOB_ACT_LAST_MATCH;               * will run more slowly).
1683              }               */
1684          }  
1685                yy_next_state = yy_try_NUL_trans( yy_current_state );
1686      /* Try to read more data. */  
1687                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1688      /* First move last chars to start of buffer. */  
1689      number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;              if ( yy_next_state )
1690                    {
1691      for ( i = 0; i < number_to_move; ++i )                  /* Consume the NUL. */
1692          *(dest++) = *(source++);                  yy_cp = ++(yy_c_buf_p);
1693                    yy_current_state = yy_next_state;
1694      if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )                  goto yy_match;
1695          /* don't do the read, it's not guaranteed to return an EOF,                  }
1696           * just force an EOF  
1697           */              else
1698          yy_current_buffer->yy_n_chars = yy_n_chars = 0;                  {
1699                    yy_cp = (yy_c_buf_p);
1700      else                  goto yy_find_action;
1701          {                  }
1702          int num_to_read =              }
1703              yy_current_buffer->yy_buf_size - number_to_move - 1;  
1704            else switch ( yy_get_next_buffer(  ) )
1705          while ( num_to_read <= 0 )              {
1706              { /* Not enough room in the buffer - grow it. */              case EOB_ACT_END_OF_FILE:
1707  #ifdef YY_USES_REJECT                  {
1708              YY_FATAL_ERROR(                  (yy_did_buffer_switch_on_eof) = 0;
1709  "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );  
1710  #else                  if ( typ_wrap( ) )
1711                        {
1712              /* just a shorter name for the current buffer */                      /* Note: because we've taken care in
1713              YY_BUFFER_STATE b = yy_current_buffer;                       * yy_get_next_buffer() to have set up
1714                         * typ_text, we can now set up
1715              int yy_c_buf_p_offset =                       * yy_c_buf_p so that if some total
1716                  (int) (yy_c_buf_p - b->yy_ch_buf);                       * hoser (like flex itself) wants to
1717                         * call the scanner after we return the
1718              if ( b->yy_is_our_buffer )                       * YY_NULL, it'll still work - another
1719                  {                       * YY_NULL will get returned.
1720                  int new_size = b->yy_buf_size * 2;                       */
1721                        (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
1722                  if ( new_size <= 0 )  
1723                      b->yy_buf_size += b->yy_buf_size / 8;                      yy_act = YY_STATE_EOF(YY_START);
1724                  else                      goto do_action;
1725                      b->yy_buf_size *= 2;                      }
1726    
1727                  b->yy_ch_buf = (char *)                  else
1728                      /* Include room in for 2 EOB chars. */                      {
1729                      yy_flex_realloc( (void *) b->yy_ch_buf,                      if ( ! (yy_did_buffer_switch_on_eof) )
1730                               b->yy_buf_size + 2 );                          YY_NEW_FILE;
1731                  }                      }
1732              else                  break;
1733                  /* Can't grow it, we don't own it. */                  }
1734                  b->yy_ch_buf = 0;  
1735                case EOB_ACT_CONTINUE_SCAN:
1736              if ( ! b->yy_ch_buf )                  (yy_c_buf_p) =
1737                  YY_FATAL_ERROR(                      (yytext_ptr) + yy_amount_of_matched_text;
1738                  "fatal error - scanner input buffer overflow" );  
1739                    yy_current_state = yy_get_previous_state(  );
1740              yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];  
1741                    yy_cp = (yy_c_buf_p);
1742              num_to_read = yy_current_buffer->yy_buf_size -                  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1743                          number_to_move - 1;                  goto yy_match;
1744  #endif  
1745              }              case EOB_ACT_LAST_MATCH:
1746                    (yy_c_buf_p) =
1747          if ( num_to_read > YY_READ_BUF_SIZE )                  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
1748              num_to_read = YY_READ_BUF_SIZE;  
1749                    yy_current_state = yy_get_previous_state(  );
1750          /* Read in more data. */  
1751          YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),                  yy_cp = (yy_c_buf_p);
1752              yy_n_chars, num_to_read );                  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1753                    goto yy_find_action;
1754          yy_current_buffer->yy_n_chars = yy_n_chars;              }
1755          }          break;
1756            }
1757      if ( yy_n_chars == 0 )  
1758          {      default:
1759          if ( number_to_move == YY_MORE_ADJ )          YY_FATAL_ERROR(
1760              {              "fatal flex scanner internal error--no action found" );
1761              ret_val = EOB_ACT_END_OF_FILE;      } /* end of action switch */
1762              yyrestart( yyin );          } /* end of scanning one token */
1763              }  } /* end of typ_lex */
1764    
1765          else  /* yy_get_next_buffer - try to read in a new buffer
1766              {   *
1767              ret_val = EOB_ACT_LAST_MATCH;   * Returns a code representing an action:
1768              yy_current_buffer->yy_buffer_status =   *  EOB_ACT_LAST_MATCH -
1769                  YY_BUFFER_EOF_PENDING;   *  EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1770              }   *  EOB_ACT_END_OF_FILE - end of file
1771          }   */
1772    static int yy_get_next_buffer (void)
1773      else  {
1774          ret_val = EOB_ACT_CONTINUE_SCAN;          register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1775        register char *source = (yytext_ptr);
1776      yy_n_chars += number_to_move;      register int number_to_move, i;
1777      yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;      int ret_val;
1778      yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;  
1779        if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
1780      yytext_ptr = &yy_current_buffer->yy_ch_buf[0];          YY_FATAL_ERROR(
1781            "fatal flex scanner internal error--end of buffer missed" );
1782      return ret_val;  
1783      }      if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1784            { /* Don't try to fill the buffer, so this is an EOF. */
1785            if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
1786  /* yy_get_previous_state - get the state just before the EOB char was reached */              {
1787                /* We matched a single character, the EOB, so
1788  static yy_state_type yy_get_previous_state()               * treat this as a final EOF.
1789      {               */
1790      register yy_state_type yy_current_state;              return EOB_ACT_END_OF_FILE;
1791      register char *yy_cp;              }
1792    
1793      yy_current_state = yy_start;          else
1794      yy_state_ptr = yy_state_buf;              {
1795      *yy_state_ptr++ = yy_current_state;              /* We matched some text prior to the EOB, first
1796                 * process it.
1797      for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )               */
1798          {              return EOB_ACT_LAST_MATCH;
1799          register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);              }
1800          while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )          }
1801              {  
1802              yy_current_state = (int) yy_def[yy_current_state];      /* Try to read more data. */
1803              if ( yy_current_state >= 124 )  
1804                  yy_c = yy_meta[(unsigned int) yy_c];      /* First move last chars to start of buffer. */
1805              }      number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
1806          yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];  
1807          *yy_state_ptr++ = yy_current_state;      for ( i = 0; i < number_to_move; ++i )
1808          }          *(dest++) = *(source++);
1809    
1810      return yy_current_state;      if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1811      }          /* don't do the read, it's not guaranteed to return an EOF,
1812             * just force an EOF
1813             */
1814  /* yy_try_NUL_trans - try to make a transition on the NUL character          YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
1815   *  
1816   * synopsis      else
1817   *  next_state = yy_try_NUL_trans( current_state );          {
1818   */              int num_to_read =
1819                YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1820  #ifdef YY_USE_PROTOS  
1821  static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )          while ( num_to_read <= 0 )
1822  #else              { /* Not enough room in the buffer - grow it. */
1823  static yy_state_type yy_try_NUL_trans( yy_current_state )  
1824  yy_state_type yy_current_state;              YY_FATAL_ERROR(
1825  #endif  "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1826      {  
1827      register int yy_is_jam;              }
1828    
1829      register YY_CHAR yy_c = 1;          if ( num_to_read > YY_READ_BUF_SIZE )
1830      while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )              num_to_read = YY_READ_BUF_SIZE;
1831          {  
1832          yy_current_state = (int) yy_def[yy_current_state];          /* Read in more data. */
1833          if ( yy_current_state >= 124 )          YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1834              yy_c = yy_meta[(unsigned int) yy_c];              (yy_n_chars), (size_t) num_to_read );
1835          }  
1836      yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];          YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1837      yy_is_jam = (yy_current_state == 123);          }
1838      if ( ! yy_is_jam )  
1839          *yy_state_ptr++ = yy_current_state;      if ( (yy_n_chars) == 0 )
1840            {
1841      return yy_is_jam ? 0 : yy_current_state;          if ( number_to_move == YY_MORE_ADJ )
1842      }              {
1843                ret_val = EOB_ACT_END_OF_FILE;
1844                typ_restart(typ_in  );
1845  #ifndef YY_NO_UNPUT              }
1846  #ifdef YY_USE_PROTOS  
1847  static void yyunput( int c, register char *yy_bp )          else
1848  #else              {
1849  static void yyunput( c, yy_bp )              ret_val = EOB_ACT_LAST_MATCH;
1850  int c;              YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1851  register char *yy_bp;                  YY_BUFFER_EOF_PENDING;
1852  #endif              }
1853      {          }
1854      register char *yy_cp = yy_c_buf_p;  
1855        else
1856      /* undo effects of setting up yytext */          ret_val = EOB_ACT_CONTINUE_SCAN;
1857      *yy_cp = yy_hold_char;  
1858        (yy_n_chars) += number_to_move;
1859      if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )      YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
1860          { /* need to shift things up to make room */      YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
1861          /* +2 for EOB chars. */  
1862          register int number_to_move = yy_n_chars + 2;      (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1863          register char *dest = &yy_current_buffer->yy_ch_buf[  
1864                      yy_current_buffer->yy_buf_size + 2];      return ret_val;
1865          register char *source =  }
1866                  &yy_current_buffer->yy_ch_buf[number_to_move];  
1867    /* yy_get_previous_state - get the state just before the EOB char was reached */
1868          while ( source > yy_current_buffer->yy_ch_buf )  
1869              *--dest = *--source;      static yy_state_type yy_get_previous_state (void)
1870    {
1871          yy_cp += (int) (dest - source);      register yy_state_type yy_current_state;
1872          yy_bp += (int) (dest - source);      register char *yy_cp;
1873          yy_current_buffer->yy_n_chars =      
1874              yy_n_chars = yy_current_buffer->yy_buf_size;      yy_current_state = (yy_start);
1875    
1876          if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )      (yy_state_ptr) = (yy_state_buf);
1877              YY_FATAL_ERROR( "flex scanner push-back overflow" );      *(yy_state_ptr)++ = yy_current_state;
1878          }  
1879        for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
1880      *--yy_cp = (char) c;          {
1881            register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1882      if ( c == '\n' )          while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1883          --yylineno;              {
1884                yy_current_state = (int) yy_def[yy_current_state];
1885      yytext_ptr = yy_bp;              if ( yy_current_state >= 124 )
1886      yy_hold_char = *yy_cp;                  yy_c = yy_meta[(unsigned int) yy_c];
1887      yy_c_buf_p = yy_cp;              }
1888      }          yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1889  #endif  /* ifndef YY_NO_UNPUT */          *(yy_state_ptr)++ = yy_current_state;
1890            }
1891    
1892  #ifdef __cplusplus      return yy_current_state;
1893  static int yyinput()  }
1894  #else  
1895  static int input()  /* yy_try_NUL_trans - try to make a transition on the NUL character
1896  #endif   *
1897      {   * synopsis
1898      int c;   *  next_state = yy_try_NUL_trans( current_state );
1899     */
1900      *yy_c_buf_p = yy_hold_char;      static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
1901    {
1902      if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )      register int yy_is_jam;
1903          {      
1904          /* yy_c_buf_p now points to the character we want to return.      register YY_CHAR yy_c = 1;
1905           * If this occurs *before* the EOB characters, then it's a      while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1906           * valid NUL; if not, then we've hit the end of the buffer.          {
1907           */          yy_current_state = (int) yy_def[yy_current_state];
1908          if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )          if ( yy_current_state >= 124 )
1909              /* This was really a NUL. */              yy_c = yy_meta[(unsigned int) yy_c];
1910              *yy_c_buf_p = '\0';          }
1911        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1912          else      yy_is_jam = (yy_current_state == 123);
1913              { /* need more input */      if ( ! yy_is_jam )
1914              int offset = yy_c_buf_p - yytext_ptr;          *(yy_state_ptr)++ = yy_current_state;
1915              ++yy_c_buf_p;  
1916        return yy_is_jam ? 0 : yy_current_state;
1917              switch ( yy_get_next_buffer() )  }
1918                  {  
1919                  case EOB_ACT_LAST_MATCH:      static void yyunput (int c, register char * yy_bp )
1920                      /* This happens because yy_g_n_b()  {
1921                       * sees that we've accumulated a      register char *yy_cp;
1922                       * token and flags that we need to      
1923                       * try matching the token before      yy_cp = (yy_c_buf_p);
1924                       * proceeding.  But for input(),  
1925                       * there's no matching to consider.      /* undo effects of setting up typ_text */
1926                       * So convert the EOB_ACT_LAST_MATCH      *yy_cp = (yy_hold_char);
1927                       * to EOB_ACT_END_OF_FILE.  
1928                       */      if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1929            { /* need to shift things up to make room */
1930                      /* Reset buffer status. */          /* +2 for EOB chars. */
1931                      yyrestart( yyin );          register int number_to_move = (yy_n_chars) + 2;
1932            register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
1933                      /* fall through */                      YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
1934            register char *source =
1935                  case EOB_ACT_END_OF_FILE:                  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
1936                      {  
1937                      if ( yywrap() )          while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1938                          return EOF;              *--dest = *--source;
1939    
1940                      if ( ! yy_did_buffer_switch_on_eof )          yy_cp += (int) (dest - source);
1941                          YY_NEW_FILE;          yy_bp += (int) (dest - source);
1942  #ifdef __cplusplus          YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
1943                      return yyinput();              (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
1944  #else  
1945                      return input();          if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1946  #endif              YY_FATAL_ERROR( "flex scanner push-back overflow" );
1947                      }          }
1948    
1949                  case EOB_ACT_CONTINUE_SCAN:      *--yy_cp = (char) c;
1950                      yy_c_buf_p = yytext_ptr + offset;  
1951                      break;      if ( c == '\n' ){
1952                  }          --typ_lineno;
1953              }      }
1954          }  
1955        (yytext_ptr) = yy_bp;
1956      c = *(unsigned char *) yy_c_buf_p;  /* cast for 8-bit char's */      (yy_hold_char) = *yy_cp;
1957      *yy_c_buf_p = '\0'; /* preserve yytext */      (yy_c_buf_p) = yy_cp;
1958      yy_hold_char = *++yy_c_buf_p;  }
1959    
1960      if ( c == '\n' )  #ifndef YY_NO_INPUT
1961          ++yylineno;  #ifdef __cplusplus
1962        static int yyinput (void)
1963      return c;  #else
1964      }      static int input  (void)
1965    #endif
1966    
1967  #ifdef YY_USE_PROTOS  {
1968  void yyrestart( FILE *input_file )      int c;
1969  #else      
1970  void yyrestart( input_file )      *(yy_c_buf_p) = (yy_hold_char);
1971  FILE *input_file;  
1972  #endif      if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
1973      {          {
1974      if ( ! yy_current_buffer )          /* yy_c_buf_p now points to the character we want to return.
1975          yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );           * If this occurs *before* the EOB characters, then it's a
1976             * valid NUL; if not, then we've hit the end of the buffer.
1977      yy_init_buffer( yy_current_buffer, input_file );           */
1978      yy_load_buffer_state();          if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1979      }              /* This was really a NUL. */
1980                *(yy_c_buf_p) = '\0';
1981    
1982  #ifdef YY_USE_PROTOS          else
1983  void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )              { /* need more input */
1984  #else              int offset = (yy_c_buf_p) - (yytext_ptr);
1985  void yy_switch_to_buffer( new_buffer )              ++(yy_c_buf_p);
1986  YY_BUFFER_STATE new_buffer;  
1987  #endif              switch ( yy_get_next_buffer(  ) )
1988      {                  {
1989      if ( yy_current_buffer == new_buffer )                  case EOB_ACT_LAST_MATCH:
1990          return;                      /* This happens because yy_g_n_b()
1991                         * sees that we've accumulated a
1992      if ( yy_current_buffer )                       * token and flags that we need to
1993          {                       * try matching the token before
1994          /* Flush out information for old buffer. */                       * proceeding.  But for input(),
1995          *yy_c_buf_p = yy_hold_char;                       * there's no matching to consider.
1996          yy_current_buffer->yy_buf_pos = yy_c_buf_p;                       * So convert the EOB_ACT_LAST_MATCH
1997          yy_current_buffer->yy_n_chars = yy_n_chars;                       * to EOB_ACT_END_OF_FILE.
1998          }                       */
1999    
2000      yy_current_buffer = new_buffer;                      /* Reset buffer status. */
2001      yy_load_buffer_state();                      typ_restart(typ_in );
2002    
2003      /* We don't actually know whether we did this switch during                      /*FALLTHROUGH*/
2004       * EOF (yywrap()) processing, but the only time this flag  
2005       * is looked at is after yywrap() is called, so it's safe                  case EOB_ACT_END_OF_FILE:
2006       * to go ahead and always set it.                      {
2007       */                      if ( typ_wrap( ) )
2008      yy_did_buffer_switch_on_eof = 1;                          return EOF;
2009      }  
2010                        if ( ! (yy_did_buffer_switch_on_eof) )
2011                            YY_NEW_FILE;
2012  #ifdef YY_USE_PROTOS  #ifdef __cplusplus
2013  void yy_load_buffer_state( void )                      return yyinput();
2014  #else  #else
2015  void yy_load_buffer_state()                      return input();
2016  #endif  #endif
2017      {                      }
2018      yy_n_chars = yy_current_buffer->yy_n_chars;  
2019      yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;                  case EOB_ACT_CONTINUE_SCAN:
2020      yyin = yy_current_buffer->yy_input_file;                      (yy_c_buf_p) = (yytext_ptr) + offset;
2021      yy_hold_char = *yy_c_buf_p;                      break;
2022      }                  }
2023                }
2024            }
2025  #ifdef YY_USE_PROTOS  
2026  YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )      c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
2027  #else      *(yy_c_buf_p) = '\0';   /* preserve typ_text */
2028  YY_BUFFER_STATE yy_create_buffer( file, size )      (yy_hold_char) = *++(yy_c_buf_p);
2029  FILE *file;  
2030  int size;      if ( c == '\n' )
2031  #endif            
2032      {      typ_lineno++;
2033      YY_BUFFER_STATE b;  ;
2034    
2035      b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );      return c;
2036      if ( ! b )  }
2037          YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );  #endif  /* ifndef YY_NO_INPUT */
2038    
2039      b->yy_buf_size = size;  /** Immediately switch to a different input stream.
2040     * @param input_file A readable stream.
2041      /* yy_ch_buf has to be 2 characters longer than the size given because   *
2042       * we need to put in 2 end-of-buffer characters.   * @note This function does not reset the start condition to @c INITIAL .
2043       */   */
2044      b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );      void typ_restart  (FILE * input_file )
2045      if ( ! b->yy_ch_buf )  {
2046          YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );      
2047        if ( ! YY_CURRENT_BUFFER ){
2048      b->yy_is_our_buffer = 1;          typ_ensure_buffer_stack ();
2049            YY_CURRENT_BUFFER_LVALUE =
2050      yy_init_buffer( b, file );              typ__create_buffer(typ_in,YY_BUF_SIZE );
2051        }
2052      return b;  
2053      }      typ__init_buffer(YY_CURRENT_BUFFER,input_file );
2054        typ__load_buffer_state( );
2055    }
2056  #ifdef YY_USE_PROTOS  
2057  void yy_delete_buffer( YY_BUFFER_STATE b )  /** Switch to a different input buffer.
2058  #else   * @param new_buffer The new input buffer.
2059  void yy_delete_buffer( b )   *
2060  YY_BUFFER_STATE b;   */
2061  #endif      void typ__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
2062      {  {
2063      if ( ! b )      
2064          return;      /* TODO. We should be able to replace this entire function body
2065         * with
2066      if ( b == yy_current_buffer )       *      typ_pop_buffer_state();
2067          yy_current_buffer = (YY_BUFFER_STATE) 0;       *      typ_push_buffer_state(new_buffer);
2068         */
2069      if ( b->yy_is_our_buffer )      typ_ensure_buffer_stack ();
2070          yy_flex_free( (void *) b->yy_ch_buf );      if ( YY_CURRENT_BUFFER == new_buffer )
2071            return;
2072      yy_flex_free( (void *) b );  
2073      }      if ( YY_CURRENT_BUFFER )
2074            {
2075            /* Flush out information for old buffer. */
2076  #ifndef YY_ALWAYS_INTERACTIVE          *(yy_c_buf_p) = (yy_hold_char);
2077  #ifndef YY_NEVER_INTERACTIVE          YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2078  extern int isatty YY_PROTO(( int ));          YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2079  #endif          }
2080  #endif  
2081        YY_CURRENT_BUFFER_LVALUE = new_buffer;
2082  #ifdef YY_USE_PROTOS      typ__load_buffer_state( );
2083  void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )  
2084  #else      /* We don't actually know whether we did this switch during
2085  void yy_init_buffer( b, file )       * EOF (typ_wrap()) processing, but the only time this flag
2086  YY_BUFFER_STATE b;       * is looked at is after typ_wrap() is called, so it's safe
2087  FILE *file;       * to go ahead and always set it.
2088  #endif       */
2089        (yy_did_buffer_switch_on_eof) = 1;
2090    }
2091      {  
2092      yy_flush_buffer( b );  static void typ__load_buffer_state  (void)
2093    {
2094      b->yy_input_file = file;          (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2095      b->yy_fill_buffer = 1;      (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2096        typ_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2097  #if YY_ALWAYS_INTERACTIVE      (yy_hold_char) = *(yy_c_buf_p);
2098      b->yy_is_interactive = 1;  }
2099  #else  
2100  #if YY_NEVER_INTERACTIVE  /** Allocate and initialize an input buffer state.
2101      b->yy_is_interactive = 0;   * @param file A readable stream.
2102  #else   * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2103      b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;   *
2104  #endif   * @return the allocated buffer state.
2105  #endif   */
2106      }      YY_BUFFER_STATE typ__create_buffer  (FILE * file, int  size )
2107    {
2108        YY_BUFFER_STATE b;
2109  #ifdef YY_USE_PROTOS      
2110  void yy_flush_buffer( YY_BUFFER_STATE b )      b = (YY_BUFFER_STATE) typ_alloc(sizeof( struct yy_buffer_state )  );
2111  #else      if ( ! b )
2112  void yy_flush_buffer( b )          YY_FATAL_ERROR( "out of dynamic memory in typ__create_buffer()" );
2113  YY_BUFFER_STATE b;  
2114  #endif      b->yy_buf_size = size;
2115    
2116      {      /* yy_ch_buf has to be 2 characters longer than the size given because
2117      if ( ! b )       * we need to put in 2 end-of-buffer characters.
2118          return;       */
2119        b->yy_ch_buf = (char *) typ_alloc(b->yy_buf_size + 2  );
2120      b->yy_n_chars = 0;      if ( ! b->yy_ch_buf )
2121            YY_FATAL_ERROR( "out of dynamic memory in typ__create_buffer()" );
2122      /* We always need two end-of-buffer characters.  The first causes  
2123       * a transition to the end-of-buffer state.  The second causes      b->yy_is_our_buffer = 1;
2124       * a jam in that state.  
2125       */      typ__init_buffer(b,file );
2126      b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;  
2127      b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;      return b;
2128    }
2129      b->yy_buf_pos = &b->yy_ch_buf[0];  
2130    /** Destroy the buffer.
2131      b->yy_at_bol = 1;   * @param b a buffer created with typ__create_buffer()
2132      b->yy_buffer_status = YY_BUFFER_NEW;   *
2133     */
2134      if ( b == yy_current_buffer )      void typ__delete_buffer (YY_BUFFER_STATE  b )
2135          yy_load_buffer_state();  {
2136      }      
2137        if ( ! b )
2138            return;
2139  #ifndef YY_NO_SCAN_BUFFER  
2140  #ifdef YY_USE_PROTOS      if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2141  YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )          YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2142  #else  
2143  YY_BUFFER_STATE yy_scan_buffer( base, size )      if ( b->yy_is_our_buffer )
2144  char *base;          typ_free((void *) b->yy_ch_buf  );
2145  yy_size_t size;  
2146  #endif      typ_free((void *) b  );
2147      {  }
2148      YY_BUFFER_STATE b;  
2149    #ifndef __cplusplus
2150      if ( size < 2 ||  extern int isatty (int );
2151           base[size-2] != YY_END_OF_BUFFER_CHAR ||  #endif /* __cplusplus */
2152           base[size-1] != YY_END_OF_BUFFER_CHAR )      
2153          /* They forgot to leave room for the EOB's. */  /* Initializes or reinitializes a buffer.
2154          return 0;   * This function is sometimes called more than once on the same buffer,
2155     * such as during a typ_restart() or at EOF.
2156      b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );   */
2157      if ( ! b )      static void typ__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
2158          YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );  
2159    {
2160      b->yy_buf_size = size - 2;  /* "- 2" to take care of EOB's */      int oerrno = errno;
2161      b->yy_buf_pos = b->yy_ch_buf = base;      
2162      b->yy_is_our_buffer = 0;      typ__flush_buffer(b );
2163      b->yy_input_file = 0;  
2164      b->yy_n_chars = b->yy_buf_size;      b->yy_input_file = file;
2165      b->yy_is_interactive = 0;      b->yy_fill_buffer = 1;
2166      b->yy_at_bol = 1;  
2167      b->yy_fill_buffer = 0;      /* If b is the current buffer, then typ__init_buffer was _probably_
2168      b->yy_buffer_status = YY_BUFFER_NEW;       * called from typ_restart() or through yy_get_next_buffer.
2169         * In that case, we don't want to reset the lineno or column.
2170      yy_switch_to_buffer( b );       */
2171        if (b != YY_CURRENT_BUFFER){
2172      return b;          b->yy_bs_lineno = 1;
2173      }          b->yy_bs_column = 0;
2174  #endif      }
2175    
2176            b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2177  #ifndef YY_NO_SCAN_STRING      
2178  #ifdef YY_USE_PROTOS      errno = oerrno;
2179  YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )  }
2180  #else  
2181  YY_BUFFER_STATE yy_scan_string( yy_str )  /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2182  yyconst char *yy_str;   * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2183  #endif   *
2184      {   */
2185      int len;      void typ__flush_buffer (YY_BUFFER_STATE  b )
2186      for ( len = 0; yy_str[len]; ++len )  {
2187          ;          if ( ! b )
2188            return;
2189      return yy_scan_bytes( yy_str, len );  
2190      }      b->yy_n_chars = 0;
2191  #endif  
2192        /* We always need two end-of-buffer characters.  The first causes
2193         * a transition to the end-of-buffer state.  The second causes
2194  #ifndef YY_NO_SCAN_BYTES       * a jam in that state.
2195  #ifdef YY_USE_PROTOS       */
2196  YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )      b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2197  #else      b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2198  YY_BUFFER_STATE yy_scan_bytes( bytes, len )  
2199  yyconst char *bytes;      b->yy_buf_pos = &b->yy_ch_buf[0];
2200  int len;  
2201  #endif      b->yy_at_bol = 1;
2202      {      b->yy_buffer_status = YY_BUFFER_NEW;
2203      YY_BUFFER_STATE b;  
2204      char *buf;      if ( b == YY_CURRENT_BUFFER )
2205      yy_size_t n;          typ__load_buffer_state( );
2206      int i;  }
2207    
2208      /* Get memory for full buffer, including space for trailing EOB's. */  /** Pushes the new state onto the stack. The new state becomes
2209      n = len + 2;   *  the current state. This function will allocate the stack
2210      buf = (char *) yy_flex_alloc( n );   *  if necessary.
2211      if ( ! buf )   *  @param new_buffer The new state.
2212          YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );   *  
2213     */
2214      for ( i = 0; i < len; ++i )  void typ_push_buffer_state (YY_BUFFER_STATE new_buffer )
2215          buf[i] = bytes[i];  {
2216            if (new_buffer == NULL)
2217      buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;          return;
2218    
2219      b = yy_scan_buffer( buf, n );      typ_ensure_buffer_stack();
2220      if ( ! b )  
2221          YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );      /* This block is copied from typ__switch_to_buffer. */
2222        if ( YY_CURRENT_BUFFER )
2223      /* It's okay to grow etc. this buffer, and we should throw it          {
2224       * away when we're done.          /* Flush out information for old buffer. */
2225       */          *(yy_c_buf_p) = (yy_hold_char);
2226      b->yy_is_our_buffer = 1;          YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2227            YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2228      return b;          }
2229      }  
2230  #endif      /* Only push if top exists. Otherwise, replace top. */
2231        if (YY_CURRENT_BUFFER)
2232            (yy_buffer_stack_top)++;
2233  #ifndef YY_NO_PUSH_STATE      YY_CURRENT_BUFFER_LVALUE = new_buffer;
2234  #ifdef YY_USE_PROTOS  
2235  static void yy_push_state( int new_state )      /* copied from typ__switch_to_buffer. */
2236  #else      typ__load_buffer_state( );
2237  static void yy_push_state( new_state )      (yy_did_buffer_switch_on_eof) = 1;
2238  int new_state;  }
2239  #endif  
2240      {  /** Removes and deletes the top of the stack, if present.
2241      if ( yy_start_stack_ptr >= yy_start_stack_depth )   *  The next element becomes the new top.
2242          {   *  
2243          yy_size_t new_size;   */
2244    void typ_pop_buffer_state (void)
2245          yy_start_stack_depth += YY_START_STACK_INCR;  {
2246          new_size = yy_start_stack_depth * sizeof( int );          if (!YY_CURRENT_BUFFER)
2247            return;
2248          if ( ! yy_start_stack )  
2249              yy_start_stack = (int *) yy_flex_alloc( new_size );      typ__delete_buffer(YY_CURRENT_BUFFER );
2250        YY_CURRENT_BUFFER_LVALUE = NULL;
2251          else      if ((yy_buffer_stack_top) > 0)
2252              yy_start_stack = (int *) yy_flex_realloc(          --(yy_buffer_stack_top);
2253                      (void *) yy_start_stack, new_size );  
2254        if (YY_CURRENT_BUFFER) {
2255          if ( ! yy_start_stack )          typ__load_buffer_state( );
2256              YY_FATAL_ERROR(          (yy_did_buffer_switch_on_eof) = 1;
2257              "out of memory expanding start-condition stack" );      }
2258          }  }
2259    
2260      yy_start_stack[yy_start_stack_ptr++] = YY_START;  /* Allocates the stack if it does not exist.
2261     *  Guarantees space for at least one push.
2262      BEGIN(new_state);   */
2263      }  static void typ_ensure_buffer_stack (void)
2264  #endif  {
2265        int num_to_alloc;
2266        
2267  #ifndef YY_NO_POP_STATE      if (!(yy_buffer_stack)) {
2268  static void yy_pop_state()  
2269      {          /* First allocation is just for 2 elements, since we don't know if this
2270      if ( --yy_start_stack_ptr < 0 )           * scanner will even need a stack. We use 2 instead of 1 to avoid an
2271          YY_FATAL_ERROR( "start-condition stack underflow" );           * immediate realloc on the next call.
2272             */
2273      BEGIN(yy_start_stack[yy_start_stack_ptr]);          num_to_alloc = 1;
2274      }          (yy_buffer_stack) = (struct yy_buffer_state**)typ_alloc
2275  #endif                                  (num_to_alloc * sizeof(struct yy_buffer_state*)
2276                                    );
2277            
2278  #ifndef YY_NO_TOP_STATE          memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2279  static int yy_top_state()                  
2280      {          (yy_buffer_stack_max) = num_to_alloc;
2281      return yy_start_stack[yy_start_stack_ptr - 1];          (yy_buffer_stack_top) = 0;
2282      }          return;
2283  #endif      }
2284    
2285  #ifndef YY_EXIT_FAILURE      if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2286  #define YY_EXIT_FAILURE 2  
2287  #endif          /* Increase the buffer to prepare for a possible push. */
2288            int grow_size = 8 /* arbitrary grow size */;
2289  #ifdef YY_USE_PROTOS  
2290  static void yy_fatal_error( yyconst char msg[] )          num_to_alloc = (yy_buffer_stack_max) + grow_size;
2291  #else          (yy_buffer_stack) = (struct yy_buffer_state**)typ_realloc
2292  static void yy_fatal_error( msg )                                  ((yy_buffer_stack),
2293  char msg[];                                  num_to_alloc * sizeof(struct yy_buffer_state*)
2294  #endif                                  );
2295      {  
2296      (void) fprintf( stderr, "%s\n", msg );          /* zero only the new slots.*/
2297      exit( YY_EXIT_FAILURE );          memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2298      }          (yy_buffer_stack_max) = num_to_alloc;
2299        }
2300    }
2301    
2302  /* Redefine yyless() so it works in section 3 code. */  /** Setup the input buffer state to scan directly from a user-specified character buffer.
2303     * @param base the character buffer
2304  #undef yyless   * @param size the size in bytes of the character buffer
2305  #define yyless(n) \   *
2306      do \   * @return the newly allocated buffer state object.
2307          { \   */
2308          /* Undo effects of setting up yytext. */ \  YY_BUFFER_STATE typ__scan_buffer  (char * base, yy_size_t  size )
2309          yytext[yyleng] = yy_hold_char; \  {
2310          yy_c_buf_p = yytext + n; \      YY_BUFFER_STATE b;
2311          yy_hold_char = *yy_c_buf_p; \      
2312          *yy_c_buf_p = '\0'; \      if ( size < 2 ||
2313          yyleng = n; \           base[size-2] != YY_END_OF_BUFFER_CHAR ||
2314          } \           base[size-1] != YY_END_OF_BUFFER_CHAR )
2315      while ( 0 )          /* They forgot to leave room for the EOB's. */
2316            return 0;
2317    
2318  /* Internal utility routines. */      b = (YY_BUFFER_STATE) typ_alloc(sizeof( struct yy_buffer_state )  );
2319        if ( ! b )
2320  #ifndef yytext_ptr          YY_FATAL_ERROR( "out of dynamic memory in typ__scan_buffer()" );
2321  #ifdef YY_USE_PROTOS  
2322  static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )      b->yy_buf_size = size - 2;  /* "- 2" to take care of EOB's */
2323  #else      b->yy_buf_pos = b->yy_ch_buf = base;
2324  static void yy_flex_strncpy( s1, s2, n )      b->yy_is_our_buffer = 0;
2325  char *s1;      b->yy_input_file = 0;
2326  yyconst char *s2;      b->yy_n_chars = b->yy_buf_size;
2327  int n;      b->yy_is_interactive = 0;
2328  #endif      b->yy_at_bol = 1;
2329      {      b->yy_fill_buffer = 0;
2330      register int i;      b->yy_buffer_status = YY_BUFFER_NEW;
2331      for ( i = 0; i < n; ++i )  
2332          s1[i] = s2[i];      typ__switch_to_buffer(b  );
2333      }  
2334  #endif      return b;
2335    }
2336  #ifdef YY_NEED_STRLEN  
2337  #ifdef YY_USE_PROTOS  /** Setup the input buffer state to scan a string. The next call to typ_lex() will
2338  static int yy_flex_strlen( yyconst char *s )   * scan from a @e copy of @a str.
2339  #else   * @param yystr a NUL-terminated string to scan
2340  static int yy_flex_strlen( s )   *
2341  yyconst char *s;   * @return the newly allocated buffer state object.
2342  #endif   * @note If you want to scan bytes that may contain NUL values, then use
2343      {   *       typ__scan_bytes() instead.
2344      register int n;   */
2345      for ( n = 0; s[n]; ++n )  YY_BUFFER_STATE typ__scan_string (yyconst char * yystr )
2346          ;  {
2347        
2348      return n;      return typ__scan_bytes(yystr,strlen(yystr) );
2349      }  }
2350  #endif  
2351    /** Setup the input buffer state to scan the given bytes. The next call to typ_lex() will
2352     * scan from a @e copy of @a bytes.
2353  #ifdef YY_USE_PROTOS   * @param bytes the byte buffer to scan
2354  static void *yy_flex_alloc( yy_size_t size )   * @param len the number of bytes in the buffer pointed to by @a bytes.
2355  #else   *
2356  static void *yy_flex_alloc( size )   * @return the newly allocated buffer state object.
2357  yy_size_t size;   */
2358  #endif  YY_BUFFER_STATE typ__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
2359      {  {
2360      return (void *) malloc( size );      YY_BUFFER_STATE b;
2361      }      char *buf;
2362        yy_size_t n;
2363  #ifdef YY_USE_PROTOS      int i;
2364  static void *yy_flex_realloc( void *ptr, yy_size_t size )      
2365  #else      /* Get memory for full buffer, including space for trailing EOB's. */
2366  static void *yy_flex_realloc( ptr, size )      n = _yybytes_len + 2;
2367  void *ptr;      buf = (char *) typ_alloc(n  );
2368  yy_size_t size;      if ( ! buf )
2369  #endif          YY_FATAL_ERROR( "out of dynamic memory in typ__scan_bytes()" );
2370      {  
2371      /* The cast to (char *) in the following accommodates both      for ( i = 0; i < _yybytes_len; ++i )
2372       * implementations that use char* generic pointers, and those          buf[i] = yybytes[i];
2373       * that use void* generic pointers.  It works with the latter  
2374       * because both ANSI C and C++ allow castless assignment from      buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2375       * any pointer type to void*, and deal with argument conversions  
2376       * as though doing an assignment.      b = typ__scan_buffer(buf,n );
2377       */      if ( ! b )
2378      return (void *) realloc( (char *) ptr, size );          YY_FATAL_ERROR( "bad buffer in typ__scan_bytes()" );
2379      }  
2380        /* It's okay to grow etc. this buffer, and we should throw it
2381  #ifdef YY_USE_PROTOS       * away when we're done.
2382  static void yy_flex_free( void *ptr )       */
2383  #else      b->yy_is_our_buffer = 1;
2384  static void yy_flex_free( ptr )  
2385  void *ptr;      return b;
2386  #endif  }
2387      {  
2388      free( ptr );  #ifndef YY_EXIT_FAILURE
2389      }  #define YY_EXIT_FAILURE 2
2390    #endif
2391  #if YY_MAIN  
2392  int main()  static void yy_fatal_error (yyconst char* msg )
2393      {  {
2394      yylex();          (void) fprintf( stderr, "%s\n", msg );
2395      return 0;      exit( YY_EXIT_FAILURE );
2396      }  }
2397  #endif  
2398  #line 627 "tcltk\\generic\\interface\\typelex.l"  /* Redefine yyless() so it works in section 3 code. */
2399    
2400  /*  #undef yyless
2401   *  int typ_wrap(void);  #define yyless(n) \
2402   *      do \
2403   *  This returns 1 if the scanner should stop parsing, or 0 if          { \
2404   *  the scanner should continue.  Flex requires this function          /* Undo effects of setting up typ_text. */ \
2405   *  unless the flex directive `%option nozzwrap' is given, but          int yyless_macro_arg = (n); \
2406   *  `%option' directives are a recent addition to flex and for          YY_LESS_LINENO(yyless_macro_arg);\
2407   *  maximum portability should not be used.          typ_text[typ_leng] = (yy_hold_char); \
2408   */          (yy_c_buf_p) = typ_text + yyless_macro_arg; \
2409  int typ_wrap(void)          (yy_hold_char) = *(yy_c_buf_p); \
2410  {          *(yy_c_buf_p) = '\0'; \
2411    return 1;          typ_leng = yyless_macro_arg; \
2412  }          } \
2413        while ( 0 )
2414    
2415  #ifndef TYPER_TEST  /* Accessor  methods (get/set functions) to struct members. */
2416  STDHLF(Asc_ExtractType,(Asc_ExtractTypeHL1,Asc_ExtractTypeHL2,HLFSTOP));  
2417  #endif  /** Get the current line number.
2418     *
2419  /*   */
2420   *  int Asc_ExtractType(cdata, interp, argc, argv)  int typ_get_lineno  (void)
2421   *      ClientData cdata;    --Tcl information, not used  {
2422   *      Tcl_Interp *interp;  --Tcl interpreter, not used in standalone use          
2423   *      int argc;            --the number of arguments      return typ_lineno;
2424   *      char **argv;         --the array of arguments  }
2425   *  
2426   *  When running as part of ASCEND, returns TCL_OK or TCL_ERROR.  /** Get the input stream.
2427   *  When running as a stand alone tool (CPP macro TYPER_TEST is defined)   *
2428   *  we return:   */
2429   *    0  --success  FILE *typ_get_in  (void)
2430   *    1  --problems with arguments  {
2431   *    2  --problems opening file          return typ_in;
2432   *   -1  --no errors occurred but the requested type was not found  }
2433   *  
2434   */  /** Get the output stream.
2435  extern int Asc_ExtractType(ClientData cdata, Tcl_Interp *interp,   *
2436                             int argc, CONST84 char **argv)   */
2437  {  FILE *typ_get_out  (void)
2438    int ndx = 1;   /* index into the argv array */  {
2439    int result;    /* result from typ_lex and value to return to caller */          return typ_out;
2440  #ifndef TYPER_TEST  }
2441    struct TypeDescription *desc=NULL;  
2442    struct module_t *mod=NULL;  /** Get the length of the current token.
2443    CONST char *scanstring=NULL;   *
2444    YY_BUFFER_STATE oldbuf=NULL;   */
2445    YY_BUFFER_STATE scanbuf=NULL;  int typ_get_leng  (void)
2446  #endif /*!typertest*/  {
2447            return typ_leng;
2448    (void)cdata;   /* stop gcc whining about unused parameter */  }
2449  #ifdef TYPER_TEST  
2450    (void)interp;  /* stop gcc whining about unused parameter */  /** Get the current token.
2451  #endif   *
2452     */
2453    
2454    /*  char *typ_get_text  (void)
2455     *  Reset our global set  {
2456     */          return typ_text;
2457    BEGIN( INITIAL );  }
2458    MatchedToken = NONE;  
2459    ShowComments = 0;  /** Set the current line number.
2460    reqType = "";   * @param line_number
2461    CommentNestLevel = 0;   *
2462    BracesNestLevel = 0;   */
2463    void typ_set_lineno (int  line_number )
2464    {
2465    /*      
2466     *  Process the arguments      typ_lineno = line_number;
2467     */  }
2468    if (( argc < 2 ) || ( argc > 5 )) {  
2469  #ifdef TYPER_TEST  /** Set the input stream. This does not discard the current
2470      FPRINTF(ASCERR,   * input buffer.
2471              "Wrong number of arguments\n"   * @param in_str A readable stream.
2472              "Usage: %s [-c] type [source_file] [destination_file]\n",   *
2473              argv[0]);   * @see typ__switch_to_buffer
2474      return 1;   */
2475  #else /* ! TYPER_TEST */  void typ_set_in (FILE *  in_str )
2476      Tcl_AppendResult(interp, "Wrong number of arguments\nUsage: ",  {
2477               argv[0], "[-c] type [source_file] "          typ_in = in_str ;
2478                       "[-s,destination_file]",  }
2479               (char*)NULL);  
2480      return TCL_ERROR;  void typ_set_out (FILE *  out_str )
2481  #endif /* TYPER_TYPER */  {
2482    }          typ_out = out_str ;
2483    }
2484    if(( argc > ndx ) && ( argv[ndx][0] == '-' )) {  
2485      switch( argv[ndx][1] ) {  int typ_get_debug  (void)
2486      case 'c':  {
2487        ShowComments = 1;          return typ__flex_debug;
2488        ndx++;  }
2489        break;  
2490      default:  void typ_set_debug (int  bdebug )
2491  #ifdef TYPER_TEST  {
2492        FPRINTF(ASCERR, "Unknown switch %s\n", argv[ndx]);          typ__flex_debug = bdebug ;
2493        return 1;  }
2494  #else /* ! TYPER_TEST */  
2495        Tcl_AppendResult(interp, "Unknown switch ", argv[ndx], (char*)NULL);  static int yy_init_globals (void)
2496        return TCL_ERROR;  {
2497  #endif /* TYPER_TEST */          /* Initialization is the same as for the non-reentrant scanner.
2498      }       * This function is called from typ_lex_destroy(), so don't allocate here.
2499    }       */
2500    
2501    if( argc > ndx ) {      /* We do not touch typ_lineno unless the option is enabled. */
2502      /*  The type of MODEL/ATOM to get  */      typ_lineno =  1;
2503      reqType = QUIET(argv[ndx++]);      
2504    } else {      (yy_buffer_stack) = 0;
2505  #ifdef TYPER_TEST      (yy_buffer_stack_top) = 0;
2506      FPRINTF(ASCERR,      (yy_buffer_stack_max) = 0;
2507              "Wrong number of arguments\n"      (yy_c_buf_p) = (char *) 0;
2508              "Usage: %s [-c] type [source_file] [destination_file]\n",      (yy_init) = 0;
2509              argv[0]);      (yy_start) = 0;
2510      return 1;  
2511  #else /* ! TYPER_TEST */      (yy_state_buf) = 0;
2512      Tcl_AppendResult(interp, "Wrong number of arguments\nUsage: ",      (yy_state_ptr) = 0;
2513               argv[0], "[-c] type [source_file] "      (yy_full_match) = 0;
2514                       "[-s,destination_file]",      (yy_lp) = 0;
2515               (char*)NULL);  
2516        return TCL_ERROR;  /* Defined in main.c */
2517  #endif /* TYPER_TEST */  #ifdef YY_STDINIT
2518    }      typ_in = stdin;
2519        typ_out = stdout;
2520    if( argc > ndx ) {  #else
2521      /*  The source file; stdin if not specified. */      typ_in = (FILE *) 0;
2522  #ifndef TYPER_TEST      typ_out = (FILE *) 0;
2523      /* in ascend, find source module if possible for string module name */  #endif
2524      desc = FindType(AddSymbol(reqType));  
2525      if (desc != NULL) {      /* For future reference: Set errno on error, since we are called by
2526        mod = GetModule(desc);       * typ_lex_init()
2527        assert(mod!=NULL);       */
2528        scanstring = Asc_ModuleString(mod);      return 0;
2529        if (scanstring == NULL) {  }
2530          mod = NULL;  
2531        }  /* typ_lex_destroy is for both reentrant and non-reentrant scanners. */
2532      }  int typ_lex_destroy  (void)
2533  #endif /*!typertest*/  {
2534      if(scanstring == NULL && (typ_in = fopen(argv[ndx],"r")) == NULL) {      
2535  #ifdef TYPER_TEST      /* Pop the buffer stack, destroying each element. */
2536        FPRINTF(ASCERR, "Error opening source file \'%s\'\n", argv[ndx]);      while(YY_CURRENT_BUFFER){
2537        return 2;          typ__delete_buffer(YY_CURRENT_BUFFER  );
2538  #else /* ! TYPER_TEST */          YY_CURRENT_BUFFER_LVALUE = NULL;
2539        Tcl_AppendResult(interp, "Error opening source file \'",          typ_pop_buffer_state();
2540                         argv[ndx], "\'", (char*)NULL);      }
2541        return TCL_ERROR;  
2542  #endif /* TYPER_TEST */      /* Destroy the stack itself. */
2543      }      typ_free((yy_buffer_stack) );
2544      ndx++;      (yy_buffer_stack) = NULL;
2545    } else {  
2546      typ_in = stdin;      typ_free ( (yy_state_buf) );
2547    }      (yy_state_buf)  = NULL;
2548    
2549    if( argc > ndx ) {      /* Reset the globals. This is important in a non-reentrant scanner so the next time
2550  #ifndef TYPER_TEST       * typ_lex() is called, initialization will occur. */
2551      if (argv[ndx][0] == '-' && argv[ndx][1] == 's') {      yy_init_globals( );
2552        g_typ__interp = interp;  
2553        typ_out = NULL;      return 0;
2554      } else {  }
2555  #endif /* !typertest*/  
2556        g_typ__interp = NULL;  /*
2557        /*  The destination file; stdout if not specified  */   * Internal utility routines.
2558        if((typ_out = fopen(argv[ndx],"a+")) == NULL) {   */
2559  #ifdef TYPER_TEST  
2560          FPRINTF(ASCERR, "Error opening destination file \'%s\'\n", argv[ndx]);  #ifndef yytext_ptr
2561          return 2;  static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
2562  #else /* ! TYPER_TEST */  {
2563          Tcl_AppendResult(interp, "Error opening destination file \'",      register int i;
2564                           argv[ndx], "\'", (char*)NULL);      for ( i = 0; i < n; ++i )
2565          return TCL_ERROR;          s1[i] = s2[i];
2566  #endif /* TYPER_TEST */  }
2567        }  #endif
2568  #ifndef TYPER_TEST  
2569      }  #ifdef YY_NEED_STRLEN
2570  #endif /* !typertest*/  static int yy_flex_strlen (yyconst char * s )
2571      ndx++;  {
2572    } else {      register int n;
2573      typ_out = stdout;      for ( n = 0; s[n]; ++n )
2574    }          ;
2575    
2576        return n;
2577    /*  }
2578     *  Call typ_lex() to process the input  #endif
2579     */  
2580  #ifndef TYPER_TEST  void *typ_alloc (yy_size_t  size )
2581    if (scanstring != NULL) {  {
2582      oldbuf = YY_CURRENT_BUFFER;      return (void *) malloc( size );
2583      scanbuf = typ__scan_string(scanstring);  }
2584      typ__switch_to_buffer(scanbuf);  
2585      BEGIN(INITIAL);  void *typ_realloc  (void * ptr, yy_size_t  size )
2586      /* typ_restart((FILE *)NULL); */  {
2587    }      /* The cast to (char *) in the following accommodates both
2588  #else       * implementations that use char* generic pointers, and those
2589    typ_restart(typ_in);       * that use void* generic pointers.  It works with the latter
2590  #endif /* !typertest */       * because both ANSI C and C++ allow castless assignment from
2591    if( (result = typ_lex()) != 0 ) {       * any pointer type to void*, and deal with argument conversions
2592  #ifdef TYPER_TEST       * as though doing an assignment.
2593      FPRINTF(ASCERR, "Could not find type \'%s\'\n", reqType);       */
2594  #else /* ! TYPER_TEST */      return (void *) realloc( (char *) ptr, size );
2595      if (g_typ__interp!=NULL) {  }
2596        Tcl_ResetResult(interp);  
2597      }  void typ_free (void * ptr )
2598      Tcl_AppendResult(interp, "Could not find type \'", reqType, "\'",  {
2599                       (char*)NULL);      free( (char *) ptr );   /* see typ_realloc() for (char *) cast */
2600      result = TCL_ERROR;  }
2601  #endif /* TYPER_TEST */  
2602    } else {  #define YYTABLES_NAME "yytables"
2603      /* add a closing semicolon and newline */  
2604      Asc_PutCode( ";\n", typ_out );  #line 627 "tcltk/generic/interface/typelex.l"
2605  #ifndef TYPER_TEST  
2606      result = TCL_OK;  
2607  #endif /* ! TYPER_TEST */  /*
2608    }   *  int typ_wrap(void);
2609     *
2610    /*   *  This returns 1 if the scanner should stop parsing, or 0 if
2611     *  Close any files/buffers we opened and exit.   *  the scanner should continue.  Flex requires this function
2612     */   *  unless the flex directive `%option nozzwrap' is given, but
2613  #ifndef TYPER_TEST   *  `%option' directives are a recent addition to flex and for
2614    if (scanstring != NULL) {   *  maximum portability should not be used.
2615      typ__delete_buffer(YY_CURRENT_BUFFER);   */
2616      typ__switch_to_buffer(oldbuf);  int typ_wrap(void)
2617      BEGIN(INITIAL);  {
2618    }    return 1;
2619  #endif  }
2620    if ( typ_in != stdin && typ_in != NULL) {  
2621      fclose(typ_in);  
2622    }  #ifndef TYPER_TEST
2623    if ( typ_out != stdout && typ_out != NULL) {  STDHLF(Asc_ExtractType,(Asc_ExtractTypeHL1,Asc_ExtractTypeHL2,HLFSTOP));
2624      fclose(typ_out);  #endif
2625    }  
2626    /*
2627    return result;   *  int Asc_ExtractType(cdata, interp, argc, argv)
2628  }   *      ClientData cdata;    --Tcl information, not used
2629     *      Tcl_Interp *interp;  --Tcl interpreter, not used in standalone use
2630  static void Asc_PutCode(char *s,FILE *fp)   *      int argc;            --the number of arguments
2631  /** into string or screen */   *      char **argv;         --the array of arguments
2632  {   *
2633  #ifndef TYPER_TEST   *  When running as part of ASCEND, returns TCL_OK or TCL_ERROR.
2634    if (g_typ__interp != NULL) {   *  When running as a stand alone tool (CPP macro TYPER_TEST is defined)
2635      Tcl_AppendResult(g_typ__interp,s,(char *)NULL);   *  we return:
2636    } else {   *    0  --success