CascadeFileScanner.c
上传用户:lijia5631
上传日期:2008-11-10
资源大小:1214k
文件大小:52k
源码类别:

视频捕捉/采集

开发平台:

MultiPlatform

  1. /* A lexical scanner generated by flex */
  2. /* Scanner skeleton version:
  3.  * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
  4.  */
  5. #define FLEX_SCANNER
  6. #define YY_FLEX_MAJOR_VERSION 2
  7. #define YY_FLEX_MINOR_VERSION 5
  8. #include <stdio.h>
  9. #include <unistd.h>
  10. /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
  11. #ifdef c_plusplus
  12. #ifndef __cplusplus
  13. #define __cplusplus
  14. #endif
  15. #endif
  16. #ifdef __cplusplus
  17. #include <stdlib.h>
  18. /* Use prototypes in function declarations. */
  19. #define YY_USE_PROTOS
  20. /* The "const" storage-class-modifier is valid. */
  21. #define YY_USE_CONST
  22. #else /* ! __cplusplus */
  23. #if __STDC__
  24. #define YY_USE_PROTOS
  25. #define YY_USE_CONST
  26. #endif /* __STDC__ */
  27. #endif /* ! __cplusplus */
  28. #ifdef __TURBOC__
  29.  #pragma warn -rch
  30.  #pragma warn -use
  31. #include <io.h>
  32. #include <stdlib.h>
  33. #define YY_USE_CONST
  34. #define YY_USE_PROTOS
  35. #endif
  36. #ifdef YY_USE_CONST
  37. #define yyconst const
  38. #else
  39. #define yyconst
  40. #endif
  41. #ifdef YY_USE_PROTOS
  42. #define YY_PROTO(proto) proto
  43. #else
  44. #define YY_PROTO(proto) ()
  45. #endif
  46. /* Returned upon end-of-file. */
  47. #define YY_NULL 0
  48. /* Promotes a possibly negative, possibly signed char to an unsigned
  49.  * integer for use as an array index.  If the signed char is negative,
  50.  * we want to instead treat it as an 8-bit unsigned char, hence the
  51.  * double cast.
  52.  */
  53. #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
  54. /* Enter a start condition.  This macro really ought to take a parameter,
  55.  * but we do it the disgusting crufty way forced on us by the ()-less
  56.  * definition of BEGIN.
  57.  */
  58. #define BEGIN yy_start = 1 + 2 *
  59. /* Translate the current start state into a value that can be later handed
  60.  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  61.  * compatibility.
  62.  */
  63. #define YY_START ((yy_start - 1) / 2)
  64. #define YYSTATE YY_START
  65. /* Action number for EOF rule of a given start state. */
  66. #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  67. /* Special action meaning "start processing a new file". */
  68. #define YY_NEW_FILE yyrestart( yyin )
  69. #define YY_END_OF_BUFFER_CHAR 0
  70. /* Size of default input buffer. */
  71. #define YY_BUF_SIZE 16384
  72. typedef struct yy_buffer_state *YY_BUFFER_STATE;
  73. extern int yyleng;
  74. extern FILE *yyin, *yyout;
  75. #define EOB_ACT_CONTINUE_SCAN 0
  76. #define EOB_ACT_END_OF_FILE 1
  77. #define EOB_ACT_LAST_MATCH 2
  78. /* The funky do-while in the following #define is used to turn the definition
  79.  * int a single C statement (which needs a semi-colon terminator).  This
  80.  * avoids problems with code like:
  81.  *
  82.  *  if ( condition_holds )
  83.  * yyless( 5 );
  84.  * else
  85.  * do_something_else();
  86.  *
  87.  * Prior to using the do-while the compiler would get upset at the
  88.  * "else" because it interpreted the "if" statement as being all
  89.  * done when it reached the ';' after the yyless() call.
  90.  */
  91. /* Return all but the first 'n' matched characters back to the input stream. */
  92. #define yyless(n) 
  93. do 
  94. /* Undo effects of setting up yytext. */ 
  95. *yy_cp = yy_hold_char; 
  96. YY_RESTORE_YY_MORE_OFFSET 
  97. yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; 
  98. YY_DO_BEFORE_ACTION; /* set up yytext again */ 
  99. while ( 0 )
  100. #define unput(c) yyunput( c, yytext_ptr )
  101. /* The following is because we cannot portably get our hands on size_t
  102.  * (without autoconf's help, which isn't available because we want
  103.  * flex-generated scanners to compile on their own).
  104.  */
  105. typedef unsigned int yy_size_t;
  106. struct yy_buffer_state
  107. {
  108. FILE *yy_input_file;
  109. char *yy_ch_buf; /* input buffer */
  110. char *yy_buf_pos; /* current position in input buffer */
  111. /* Size of input buffer in bytes, not including room for EOB
  112.  * characters.
  113.  */
  114. yy_size_t yy_buf_size;
  115. /* Number of characters read into yy_ch_buf, not including EOB
  116.  * characters.
  117.  */
  118. int yy_n_chars;
  119. /* Whether we "own" the buffer - i.e., we know we created it,
  120.  * and can realloc() it to grow it, and should free() it to
  121.  * delete it.
  122.  */
  123. int yy_is_our_buffer;
  124. /* Whether this is an "interactive" input source; if so, and
  125.  * if we're using stdio for input, then we want to use getc()
  126.  * instead of fread(), to make sure we stop fetching input after
  127.  * each newline.
  128.  */
  129. int yy_is_interactive;
  130. /* Whether we're considered to be at the beginning of a line.
  131.  * If so, '^' rules will be active on the next match, otherwise
  132.  * not.
  133.  */
  134. int yy_at_bol;
  135. /* Whether to try to fill the input buffer when we reach the
  136.  * end of it.
  137.  */
  138. int yy_fill_buffer;
  139. int yy_buffer_status;
  140. #define YY_BUFFER_NEW 0
  141. #define YY_BUFFER_NORMAL 1
  142. /* When an EOF's been seen but there's still some text to process
  143.  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
  144.  * shouldn't try reading from the input source any more.  We might
  145.  * still have a bunch of tokens to match, though, because of
  146.  * possible backing-up.
  147.  *
  148.  * When we actually see the EOF, we change the status to "new"
  149.  * (via yyrestart()), so that the user can continue scanning by
  150.  * just pointing yyin at a new input file.
  151.  */
  152. #define YY_BUFFER_EOF_PENDING 2
  153. };
  154. static YY_BUFFER_STATE yy_current_buffer = 0;
  155. /* We provide macros for accessing buffer states in case in the
  156.  * future we want to put the buffer states in a more general
  157.  * "scanner state".
  158.  */
  159. #define YY_CURRENT_BUFFER yy_current_buffer
  160. /* yy_hold_char holds the character lost when yytext is formed. */
  161. static char yy_hold_char;
  162. static int yy_n_chars; /* number of characters read into yy_ch_buf */
  163. int yyleng;
  164. /* Points to current character in buffer. */
  165. static char *yy_c_buf_p = (char *) 0;
  166. static int yy_init = 1; /* whether we need to initialize */
  167. static int yy_start = 0; /* start state number */
  168. /* Flag which is used to allow yywrap()'s to do buffer switches
  169.  * instead of setting up a fresh yyin.  A bit of a hack ...
  170.  */
  171. static int yy_did_buffer_switch_on_eof;
  172. void yyrestart YY_PROTO(( FILE *input_file ));
  173. void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
  174. void yy_load_buffer_state YY_PROTO(( void ));
  175. YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
  176. void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
  177. void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
  178. void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
  179. #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
  180. YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
  181. YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
  182. YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
  183. static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
  184. static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
  185. static void yy_flex_free YY_PROTO(( void * ));
  186. #define yy_new_buffer yy_create_buffer
  187. #define yy_set_interactive(is_interactive) 
  188. if ( ! yy_current_buffer ) 
  189. yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); 
  190. yy_current_buffer->yy_is_interactive = is_interactive; 
  191. }
  192. #define yy_set_bol(at_bol) 
  193. if ( ! yy_current_buffer ) 
  194. yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); 
  195. yy_current_buffer->yy_at_bol = at_bol; 
  196. }
  197. #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
  198. typedef unsigned char YY_CHAR;
  199. FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
  200. typedef int yy_state_type;
  201. extern char *yytext;
  202. #define yytext_ptr yytext
  203. static yy_state_type yy_get_previous_state YY_PROTO(( void ));
  204. static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
  205. static int yy_get_next_buffer YY_PROTO(( void ));
  206. static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
  207. /* Done after the current pattern has been matched and before the
  208.  * corresponding action - sets up yytext.
  209.  */
  210. #define YY_DO_BEFORE_ACTION 
  211. yytext_ptr = yy_bp; 
  212. yyleng = (int) (yy_cp - yy_bp); 
  213. yy_hold_char = *yy_cp; 
  214. *yy_cp = ''; 
  215. yy_c_buf_p = yy_cp;
  216. #define YY_NUM_RULES 58
  217. #define YY_END_OF_BUFFER 59
  218. static yyconst short int yy_accept[250] =
  219.     {   0,
  220.         0,    0,   59,   57,   52,   54,   57,   51,   34,   57,
  221.        38,   39,   42,   57,   35,   50,   49,   45,   47,   37,
  222.        43,   57,   48,   48,   48,   48,   48,   48,   48,   48,
  223.        48,   40,   41,   48,   48,   48,   48,   48,   48,   48,
  224.        48,   48,   36,   53,    0,   56,    0,    0,    0,   47,
  225.        46,   46,   44,   48,   48,   48,   48,   48,   48,   48,
  226.        48,   48,   48,   48,   48,   48,    7,   48,   48,   48,
  227.        48,   48,   48,   48,   48,   48,   48,   48,   55,    0,
  228.        46,   48,   48,   48,   48,   48,   48,   48,   48,   48,
  229.        48,   48,   48,   48,    3,    6,   48,   48,   48,   48,
  230.        48,   48,   48,   48,    0,   46,   48,   48,   48,   21,
  231.        48,   48,   16,   48,   48,   48,   48,   48,   48,   48,
  232.        48,   48,   48,   48,    4,   14,   48,   48,   48,   48,
  233.        48,   48,   48,   48,   48,   48,   48,   48,   48,    5,
  234.        48,   48,   48,   48,   33,   32,   48,   48,   48,   48,
  235.        48,   48,   13,   48,   18,   48,   48,   48,   48,   10,
  236.        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
  237.        48,   48,   48,   48,   48,   48,   48,   27,   48,   48,
  238.        48,   48,   48,   48,   31,   48,   48,   48,   48,   48,
  239.        48,   48,   29,   48,   17,   48,   48,   48,    9,   48,
  240.        48,   15,   48,   48,   48,   48,   48,   48,   23,   12,
  241.         2,    8,   48,   28,   48,   48,   48,   48,   11,   48,
  242.        48,   48,   48,   20,   48,   30,   48,   22,   48,   48,
  243.        48,   48,   48,   48,   19,   48,   48,   48,   48,   25,
  244.        48,    1,   48,   48,   48,   48,   24,   26,    0
  245.     } ;
  246. static yyconst int yy_ec[256] =
  247.     {   0,
  248.         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
  249.         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
  250.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  251.         1,    5,    1,    6,    7,    1,    1,    1,    1,    8,
  252.         9,   10,   11,   12,   13,   14,   15,   16,   16,   16,
  253.        16,   16,   16,   16,   16,   16,   16,   17,    1,   18,
  254.        19,   20,    1,    1,   21,   22,   23,   24,   25,   26,
  255.        27,   28,   29,   29,   29,   30,   31,   32,   33,   29,
  256.        29,   34,   35,   36,   37,   29,   29,   38,   29,   29,
  257.        39,    1,   40,    1,   29,    1,   41,   42,   43,   44,
  258.        45,   46,   47,   48,   49,   29,   50,   51,   52,   53,
  259.        54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
  260.        29,   29,    1,   11,    1,    1,    1,    1,    1,    1,
  261.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  262.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  263.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  264.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  265.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  266.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  267.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  268.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  269.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  270.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  271.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  272.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  273.         1,    1,    1,    1,    1
  274.     } ;
  275. static yyconst int yy_meta[64] =
  276.     {   0,
  277.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  278.         1,    1,    1,    1,    1,    2,    1,    1,    1,    1,
  279.         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
  280.         3,    3,    3,    3,    3,    3,    3,    3,    1,    1,
  281.         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
  282.         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
  283.         3,    3,    3
  284.     } ;
  285. static yyconst short int yy_base[254] =
  286.     {   0,
  287.         0,    0,  291,  292,  292,  292,  287,  292,  292,   61,
  288.       292,  292,  292,   52,  292,   53,  273,  292,   56,  292,
  289.       292,  269,    0,  253,   38,  237,  231,  239,  246,   37,
  290.       227,  292,  292,  224,  229,  222,  215,   33,  236,   31,
  291.        27,  231,    0,  292,   74,  292,   76,  259,   67,   71,
  292.        70,  258,  292,    0,  252,  241,  230,  229,  209,  222,
  293.       237,  232,  204,  240,  222,  221,    0,  213,  207,  202,
  294.       199,  201,  199,  212,  197,  208,  211,    0,  292,   81,
  295.        77,  219,  219,  191,  201,  190,  187,  215,  211,  198,
  296.       188,  188,  182,  198,    0,    0,  189,  177,  182,  192,
  297.       189,  188,  182,    0,  215,  214,  206,  195,  169,  191,
  298.       203,   73,    0,  192,  170,  160,  178,  162,  159,  164,
  299.       172,  163,  170,  156,    0,    0,  185,  180,  162,   57,
  300.       156,  164,  159,  180,  183,  152,  156,  154,  144,    0,
  301.       148,  153,  141,  150,    0,    0,  151,  144,  143,  131,
  302.       140,  145,    0,  137,  155,  144,  142,  128,  127,    0,
  303.       127,  130,  134,  137,  132,  135,  120,  130,  126,  135,
  304.       117,  125,  128,  123,  125,  119,  124,    0,  117,  109,
  305.       121,  106,  104,  111,    0,  117,  117,  119,   99,  114,
  306.       100,  115,  120,   97,  118,  100,  106,   93,    0,   98,
  307.        97,    0,  124,   89,  104,  110,  102,   89,    0,   83,
  308.         0,    0,   99,    0,   87,   89,   85,   78,    0,   77,
  309.        89,   86,   87,   96,   87,    0,   73,    0,   59,   79,
  310.        60,   66,   65,   72,   79,   68,   63,   66,   69,    0,
  311.        58,    0,   53,   63,   58,   44,    0,    0,  292,  122,
  312.       124,   96,  126
  313.     } ;
  314. static yyconst short int yy_def[254] =
  315.     {   0,
  316.       249,    1,  249,  249,  249,  249,  249,  249,  249,  250,
  317.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  318.       249,  249,  251,  251,  251,  251,  251,  251,  251,  251,
  319.       251,  249,  249,  251,  251,  251,  251,  251,  251,  251,
  320.       251,  251,  252,  249,  250,  249,  250,  249,  249,  249,
  321.       249,  249,  249,  251,  251,  251,  251,  251,  251,  251,
  322.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  323.       251,  251,  251,  251,  251,  251,  251,  253,  249,  249,
  324.       249,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  325.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  326.       251,  251,  251,  253,  249,  249,  251,  251,  251,  251,
  327.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  328.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  329.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  330.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  331.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  332.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  333.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  334.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  335.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  336.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  337.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  338.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  339.       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
  340.       251,  251,  251,  251,  251,  251,  251,  251,    0,  249,
  341.       249,  249,  249
  342.     } ;
  343. static yyconst short int yy_nxt[356] =
  344.     {   0,
  345.         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
  346.        14,   15,   16,   17,   18,   19,   20,   21,    4,   22,
  347.        23,   24,   25,   26,   23,   27,   23,   23,   23,   28,
  348.        23,   29,   23,   23,   30,   23,   31,    4,   32,   33,
  349.        23,   34,   35,   36,   37,   38,   23,   23,   23,   23,
  350.        23,   23,   23,   23,   23,   23,   39,   40,   41,   23,
  351.        23,   42,   43,   46,   47,   48,   48,   49,   50,   52,
  352.        56,   50,   62,   69,   75,   72,   46,   47,   79,   47,
  353.        52,   63,   49,   76,   52,   51,   50,   70,   57,   73,
  354.        74,  105,   81,  105,   80,  132,  106,  148,   78,  232,
  355.       248,   80,  247,  246,  245,  149,  133,  233,  244,  243,
  356.       242,  241,  240,  239,   80,  238,  237,  236,  235,  234,
  357.       231,   80,   45,   45,   45,   54,   54,  104,  104,  230,
  358.       229,  228,  227,  226,  225,  224,  223,  222,  221,  220,
  359.       219,  218,  217,  216,  215,  214,  213,  212,  211,  210,
  360.       209,  208,  207,  206,  205,  204,  203,  202,  201,  200,
  361.       199,  198,  197,  196,  195,  194,  193,  192,  191,  190,
  362.       189,  188,  187,  186,  185,  184,  183,  182,  181,  180,
  363.       179,  178,  177,  176,  175,  174,  173,  172,  171,  170,
  364.       169,  168,  167,  166,  165,  164,  163,  162,  161,  160,
  365.       159,  158,  157,  156,  155,  154,  153,  152,  151,  150,
  366.       147,  146,  145,  144,  143,  142,  141,  140,  139,  138,
  367.       137,  136,  135,  134,  131,  130,  129,  128,  127,  106,
  368.       106,  126,  125,  124,  123,  122,  121,  120,  119,  118,
  369.       117,  116,  115,  114,  113,  112,  111,  110,  109,  108,
  370.       107,  103,  102,  101,  100,   99,   98,   97,   96,   95,
  371.        94,   93,   92,   91,   90,   89,   88,   87,   86,   85,
  372.        84,   83,   82,   81,   51,   77,   71,   68,   67,   66,
  373.        65,   64,   61,   60,   59,   58,   55,   53,   51,   44,
  374.       249,    3,  249,  249,  249,  249,  249,  249,  249,  249,
  375.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  376.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  377.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  378.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  379.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  380.       249,  249,  249,  249,  249
  381.     } ;
  382. static yyconst short int yy_chk[356] =
  383.     {   0,
  384.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  385.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  386.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  387.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  388.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  389.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  390.         1,    1,    1,   10,   10,   14,   16,   14,   16,   19,
  391.        25,   19,   30,   38,   41,   40,   45,   45,   47,   47,
  392.        49,   30,   49,   41,   50,   51,   50,   38,   25,   40,
  393.        40,   80,   81,   80,   51,  112,   80,  130,  252,  229,
  394.       246,   81,  245,  244,  243,  130,  112,  229,  241,  239,
  395.       238,  237,  236,  235,   51,  234,  233,  232,  231,  230,
  396.       227,   81,  250,  250,  250,  251,  251,  253,  253,  225,
  397.       224,  223,  222,  221,  220,  218,  217,  216,  215,  213,
  398.       210,  208,  207,  206,  205,  204,  203,  201,  200,  198,
  399.       197,  196,  195,  194,  193,  192,  191,  190,  189,  188,
  400.       187,  186,  184,  183,  182,  181,  180,  179,  177,  176,
  401.       175,  174,  173,  172,  171,  170,  169,  168,  167,  166,
  402.       165,  164,  163,  162,  161,  159,  158,  157,  156,  155,
  403.       154,  152,  151,  150,  149,  148,  147,  144,  143,  142,
  404.       141,  139,  138,  137,  136,  135,  134,  133,  132,  131,
  405.       129,  128,  127,  124,  123,  122,  121,  120,  119,  118,
  406.       117,  116,  115,  114,  111,  110,  109,  108,  107,  106,
  407.       105,  103,  102,  101,  100,   99,   98,   97,   94,   93,
  408.        92,   91,   90,   89,   88,   87,   86,   85,   84,   83,
  409.        82,   77,   76,   75,   74,   73,   72,   71,   70,   69,
  410.        68,   66,   65,   64,   63,   62,   61,   60,   59,   58,
  411.        57,   56,   55,   52,   48,   42,   39,   37,   36,   35,
  412.        34,   31,   29,   28,   27,   26,   24,   22,   17,    7,
  413.         3,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  414.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  415.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  416.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  417.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  418.       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  419.       249,  249,  249,  249,  249
  420.     } ;
  421. static yy_state_type yy_last_accepting_state;
  422. static char *yy_last_accepting_cpos;
  423. /* The intent behind this definition is that it'll catch
  424.  * any uses of REJECT which flex missed.
  425.  */
  426. #define REJECT reject_used_but_not_detected
  427. #define yymore() yymore_used_but_not_detected
  428. #define YY_MORE_ADJ 0
  429. #define YY_RESTORE_YY_MORE_OFFSET
  430. char *yytext;
  431. #line 1 "CascadeFileScanner.l"
  432. #define INITIAL 0
  433. /**
  434.   * cubicles
  435.   *
  436.   * This is an implementation of the Viola-Jones object detection 
  437.   * method and some extensions.  The code is mostly platform-
  438.   * independent and uses only standard C and C++ libraries.  It
  439.   * can make use of MPI for parallel training and a few Windows
  440.   * MFC functions for classifier display.
  441.   *
  442.   * Mathias Kolsch, matz@cs.ucsb.edu
  443.   *
  444.   * $Id: CascadeFileScanner.l,v 1.7 2004/10/22 03:26:00 matz Exp $
  445. **
  446. // CascadeFileScanner takes care of scanning integral features,
  447. // weak classifiers, strong classifiers, and classifier cascades
  448. // from file input.  Compile with flex.
  449. //
  450. ////////////////////////////////////////////////////////////////////
  451. //
  452. // By downloading, copying, installing or using the software you 
  453. // agree to this license.  If you do not agree to this license, 
  454. // do not download, install, copy or use the software.
  455. //
  456. // Copyright (C) 2004, Mathias Kolsch, all rights reserved.
  457. // Third party copyrights are property of their respective owners.
  458. //
  459. // Redistribution and use in binary form, with or without 
  460. // modification, is permitted for non-commercial purposes only.
  461. // Redistribution in source, with or without modification, is 
  462. // prohibited without prior written permission.
  463. // If granted in writing in another document, personal use and 
  464. // modification are permitted provided that the following two
  465. // conditions are met:
  466. //
  467. // 1.Any modification of source code must retain the above 
  468. //   copyright notice, this list of conditions and the following 
  469. //   disclaimer.
  470. //
  471. // 2.Redistribution's in binary form must reproduce the above 
  472. //   copyright notice, this list of conditions and the following 
  473. //   disclaimer in the documentation and/or other materials provided
  474. //   with the distribution.
  475. //
  476. // This software is provided by the copyright holders and 
  477. // contributors "as is" and any express or implied warranties, 
  478. // including, but not limited to, the implied warranties of 
  479. // merchantability and fitness for a particular purpose are 
  480. // disclaimed.  In no event shall the copyright holder or 
  481. // contributors be liable for any direct, indirect, incidental, 
  482. // special, exemplary, or consequential damages (including, but not 
  483. // limited to, procurement of substitute goods or services; loss of 
  484. // use, data, or profits; or business interruption) however caused
  485. // and on any theory of liability, whether in contract, strict 
  486. // liability, or tort (including negligence or otherwise) arising 
  487. // in any way out of the use of this software, even if advised of 
  488. // the possibility of such damage.
  489. //
  490. ////////////////////////////////////////////////////////////////////
  491. */
  492. #line 64 "CascadeFileScanner.l"
  493. #include "cubicles.hpp"
  494. #include "IntegralFeatures.h"
  495. #include "Classifiers.h"
  496. #include "Cascade.h"
  497. #include "CascadeFileParser.h"
  498. void yyerror(const char *str);
  499. //void yyerror(YYLTYPE *llocp, const char *str);
  500. extern "C" int mywrap(void)
  501. {
  502.   /*
  503.   FILE* fp = fopen("c:\tmp\dump3.txt", "a+");
  504.   fprintf(fp, "wrap calledn");
  505.   fflush(fp);
  506.   fclose(fp);
  507.   */
  508.   return 1;
  509. }
  510. extern string yyIDstring;
  511.  
  512. void nextline(void);
  513.  
  514. #define yywrap mywrap
  515. #define YY_NEVER_INTERACTIVE 1
  516. #define YYERROR_VERBOSE 1
  517. /* definitions */
  518. #line 617 "CascadeFileScanner.c"
  519. /* Macros after this point can all be overridden by user definitions in
  520.  * section 1.
  521.  */
  522. #ifndef YY_SKIP_YYWRAP
  523. #ifdef __cplusplus
  524. extern "C" int yywrap YY_PROTO(( void ));
  525. #else
  526. extern int yywrap YY_PROTO(( void ));
  527. #endif
  528. #endif
  529. #ifndef YY_NO_UNPUT
  530. static void yyunput YY_PROTO(( int c, char *buf_ptr ));
  531. #endif
  532. #ifndef yytext_ptr
  533. static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
  534. #endif
  535. #ifdef YY_NEED_STRLEN
  536. static int yy_flex_strlen YY_PROTO(( yyconst char * ));
  537. #endif
  538. #ifndef YY_NO_INPUT
  539. #ifdef __cplusplus
  540. static int yyinput YY_PROTO(( void ));
  541. #else
  542. static int input YY_PROTO(( void ));
  543. #endif
  544. #endif
  545. #if YY_STACK_USED
  546. static int yy_start_stack_ptr = 0;
  547. static int yy_start_stack_depth = 0;
  548. static int *yy_start_stack = 0;
  549. #ifndef YY_NO_PUSH_STATE
  550. static void yy_push_state YY_PROTO(( int new_state ));
  551. #endif
  552. #ifndef YY_NO_POP_STATE
  553. static void yy_pop_state YY_PROTO(( void ));
  554. #endif
  555. #ifndef YY_NO_TOP_STATE
  556. static int yy_top_state YY_PROTO(( void ));
  557. #endif
  558. #else
  559. #define YY_NO_PUSH_STATE 1
  560. #define YY_NO_POP_STATE 1
  561. #define YY_NO_TOP_STATE 1
  562. #endif
  563. #ifdef YY_MALLOC_DECL
  564. YY_MALLOC_DECL
  565. #else
  566. #if __STDC__
  567. #ifndef __cplusplus
  568. #include <stdlib.h>
  569. #endif
  570. #else
  571. /* Just try to get by without declaring the routines.  This will fail
  572.  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
  573.  * or sizeof(void*) != sizeof(int).
  574.  */
  575. #endif
  576. #endif
  577. /* Amount of stuff to slurp up with each read. */
  578. #ifndef YY_READ_BUF_SIZE
  579. #define YY_READ_BUF_SIZE 8192
  580. #endif
  581. /* Copy whatever the last rule matched to the standard output. */
  582. #ifndef ECHO
  583. /* This used to be an fputs(), but since the string might contain NUL's,
  584.  * we now use fwrite().
  585.  */
  586. #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
  587. #endif
  588. /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
  589.  * is returned in "result".
  590.  */
  591. #ifndef YY_INPUT
  592. #define YY_INPUT(buf,result,max_size) 
  593. if ( yy_current_buffer->yy_is_interactive ) 
  594. int c = '*', n; 
  595. for ( n = 0; n < max_size && 
  596.      (c = getc( yyin )) != EOF && c != 'n'; ++n ) 
  597. buf[n] = (char) c; 
  598. if ( c == 'n' ) 
  599. buf[n++] = (char) c; 
  600. if ( c == EOF && ferror( yyin ) ) 
  601. YY_FATAL_ERROR( "input in flex scanner failed" ); 
  602. result = n; 
  603. else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) 
  604.   && ferror( yyin ) ) 
  605. YY_FATAL_ERROR( "input in flex scanner failed" );
  606. #endif
  607. /* No semi-colon after return; correct usage is to write "yyterminate();" -
  608.  * we don't want an extra ';' after the "return" because that will cause
  609.  * some compilers to complain about unreachable statements.
  610.  */
  611. #ifndef yyterminate
  612. #define yyterminate() return YY_NULL
  613. #endif
  614. /* Number of entries by which start-condition stack grows. */
  615. #ifndef YY_START_STACK_INCR
  616. #define YY_START_STACK_INCR 25
  617. #endif
  618. /* Report a fatal error. */
  619. #ifndef YY_FATAL_ERROR
  620. #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
  621. #endif
  622. /* Default declaration of generated scanner - a define so the user can
  623.  * easily add parameters.
  624.  */
  625. #ifndef YY_DECL
  626. #define YY_DECL int yylex YY_PROTO(( void ))
  627. #endif
  628. /* Code executed at the beginning of each rule, after yytext and yyleng
  629.  * have been set up.
  630.  */
  631. #ifndef YY_USER_ACTION
  632. #define YY_USER_ACTION
  633. #endif
  634. /* Code executed at the end of each rule. */
  635. #ifndef YY_BREAK
  636. #define YY_BREAK break;
  637. #endif
  638. #define YY_RULE_SETUP 
  639. YY_USER_ACTION
  640. YY_DECL
  641. {
  642. register yy_state_type yy_current_state;
  643. register char *yy_cp = NULL, *yy_bp = NULL;
  644. register int yy_act;
  645. #line 103 "CascadeFileScanner.l"
  646. #line 771 "CascadeFileScanner.c"
  647. if ( yy_init )
  648. {
  649. yy_init = 0;
  650. #ifdef YY_USER_INIT
  651. YY_USER_INIT;
  652. #endif
  653. if ( ! yy_start )
  654. yy_start = 1; /* first start state */
  655. if ( ! yyin )
  656. yyin = stdin;
  657. if ( ! yyout )
  658. yyout = stdout;
  659. if ( ! yy_current_buffer )
  660. yy_current_buffer =
  661. yy_create_buffer( yyin, YY_BUF_SIZE );
  662. yy_load_buffer_state();
  663. }
  664. while ( 1 ) /* loops until end-of-file is reached */
  665. {
  666. yy_cp = yy_c_buf_p;
  667. /* Support of yytext. */
  668. *yy_cp = yy_hold_char;
  669. /* yy_bp points to the position in yy_ch_buf of the start of
  670.  * the current run.
  671.  */
  672. yy_bp = yy_cp;
  673. yy_current_state = yy_start;
  674. yy_match:
  675. do
  676. {
  677. register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
  678. if ( yy_accept[yy_current_state] )
  679. {
  680. yy_last_accepting_state = yy_current_state;
  681. yy_last_accepting_cpos = yy_cp;
  682. }
  683. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  684. {
  685. yy_current_state = (int) yy_def[yy_current_state];
  686. if ( yy_current_state >= 250 )
  687. yy_c = yy_meta[(unsigned int) yy_c];
  688. }
  689. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  690. ++yy_cp;
  691. }
  692. while ( yy_base[yy_current_state] != 292 );
  693. yy_find_action:
  694. yy_act = yy_accept[yy_current_state];
  695. if ( yy_act == 0 )
  696. { /* have to back up */
  697. yy_cp = yy_last_accepting_cpos;
  698. yy_current_state = yy_last_accepting_state;
  699. yy_act = yy_accept[yy_current_state];
  700. }
  701. YY_DO_BEFORE_ACTION;
  702. do_action: /* This label is used only to access EOF actions. */
  703. switch ( yy_act )
  704. { /* beginning of action switch */
  705. case 0: /* must back up */
  706. /* undo the effects of YY_DO_BEFORE_ACTION */
  707. *yy_cp = yy_hold_char;
  708. yy_cp = yy_last_accepting_cpos;
  709. yy_current_state = yy_last_accepting_state;
  710. goto yy_find_action;
  711. case 1:
  712. YY_RULE_SETUP
  713. #line 105 "CascadeFileScanner.l"
  714. { return CLASSIFIER_CASCADE; }
  715. YY_BREAK
  716. case 2:
  717. YY_RULE_SETUP
  718. #line 106 "CascadeFileScanner.l"
  719. { return TYPE_SEQUENTIAL; }
  720. YY_BREAK
  721. case 3:
  722. YY_RULE_SETUP
  723. #line 107 "CascadeFileScanner.l"
  724. { return TYPE_FAN; }
  725. YY_BREAK
  726. case 4:
  727. YY_RULE_SETUP
  728. #line 108 "CascadeFileScanner.l"
  729. { return TYPE_TREE; }
  730. YY_BREAK
  731. case 5:
  732. YY_RULE_SETUP
  733. #line 109 "CascadeFileScanner.l"
  734. { return RATIO; }
  735. YY_BREAK
  736. case 6:
  737. YY_RULE_SETUP
  738. #line 110 "CascadeFileScanner.l"
  739. { return FPR; }
  740. YY_BREAK
  741. case 7:
  742. YY_RULE_SETUP
  743. #line 111 "CascadeFileScanner.l"
  744. { return DR; }
  745. YY_BREAK
  746. case 8:
  747. YY_RULE_SETUP
  748. #line 112 "CascadeFileScanner.l"
  749. { return SUCCESSFUL; }
  750. YY_BREAK
  751. case 9:
  752. YY_RULE_SETUP
  753. #line 113 "CascadeFileScanner.l"
  754. { return EXHAUSTED; }
  755. YY_BREAK
  756. case 10:
  757. YY_RULE_SETUP
  758. #line 114 "CascadeFileScanner.l"
  759. { return STRONG; }
  760. YY_BREAK
  761. case 11:
  762. YY_RULE_SETUP
  763. #line 115 "CascadeFileScanner.l"
  764. { return CLASSIFIERS; }
  765. YY_BREAK
  766. case 12:
  767. YY_RULE_SETUP
  768. #line 116 "CascadeFileScanner.l"
  769. { return CLASSIFIER; }
  770. YY_BREAK
  771. case 13:
  772. YY_RULE_SETUP
  773. #line 117 "CascadeFileScanner.l"
  774. { return UPCASE_STRONG; }
  775. YY_BREAK
  776. case 14:
  777. YY_RULE_SETUP
  778. #line 118 "CascadeFileScanner.l"
  779. { return WEAK; }
  780. YY_BREAK
  781. case 15:
  782. YY_RULE_SETUP
  783. #line 119 "CascadeFileScanner.l"
  784. { return THRESHOLD; }
  785. YY_BREAK
  786. case 16:
  787. YY_RULE_SETUP
  788. #line 120 "CascadeFileScanner.l"
  789. { return NULL_ID; }
  790. YY_BREAK
  791. case 17:
  792. YY_RULE_SETUP
  793. #line 121 "CascadeFileScanner.l"
  794. { return LEFT_RIGHT; }
  795. YY_BREAK
  796. case 18:
  797. YY_RULE_SETUP
  798. #line 122 "CascadeFileScanner.l"
  799. { return UP_DOWN; }
  800. YY_BREAK
  801. case 19:
  802. YY_RULE_SETUP
  803. #line 123 "CascadeFileScanner.l"
  804. { return LEFT_CENTER_RIGHT; }
  805. YY_BREAK
  806. case 20:
  807. YY_RULE_SETUP
  808. #line 124 "CascadeFileScanner.l"
  809. { return SEVEN_COLUMNS; }
  810. YY_BREAK
  811. case 21:
  812. YY_RULE_SETUP
  813. #line 125 "CascadeFileScanner.l"
  814. { return DIAG; }
  815. YY_BREAK
  816. case 22:
  817. YY_RULE_SETUP
  818. #line 126 "CascadeFileScanner.l"
  819. { return LEFT_RIGHT_SAME; }
  820. YY_BREAK
  821. case 23:
  822. YY_RULE_SETUP
  823. #line 127 "CascadeFileScanner.l"
  824. { return UP_DOWN_SAME; }
  825. YY_BREAK
  826. case 24:
  827. YY_RULE_SETUP
  828. #line 128 "CascadeFileScanner.l"
  829. { return LEFT_CENTER_RIGHT_SAME; }
  830. YY_BREAK
  831. case 25:
  832. YY_RULE_SETUP
  833. #line 129 "CascadeFileScanner.l"
  834. { return SEVEN_COLUMNS_SAME; }
  835. YY_BREAK
  836. case 26:
  837. YY_RULE_SETUP
  838. #line 130 "CascadeFileScanner.l"
  839. { return SEVEN_COLUMNS_SIMILAR; }
  840. YY_BREAK
  841. case 27:
  842. YY_RULE_SETUP
  843. #line 131 "CascadeFileScanner.l"
  844. { return DIAG_SAME; }
  845. YY_BREAK
  846. case 28:
  847. YY_RULE_SETUP
  848. #line 132 "CascadeFileScanner.l"
  849. { return DIAG_SIMILAR; }
  850. YY_BREAK
  851. case 29:
  852. YY_RULE_SETUP
  853. #line 133 "CascadeFileScanner.l"
  854. { return FOUR_BOXES; }
  855. YY_BREAK
  856. case 30:
  857. YY_RULE_SETUP
  858. #line 134 "CascadeFileScanner.l"
  859. { return FOUR_BOXES_SAME; }
  860. YY_BREAK
  861. case 31:
  862. YY_RULE_SETUP
  863. #line 135 "CascadeFileScanner.l"
  864. { return BRANCHES; }
  865. YY_BREAK
  866. case 32:
  867. YY_RULE_SETUP
  868. #line 136 "CascadeFileScanner.l"
  869. { return COMMON; }
  870. YY_BREAK
  871. case 33:
  872. YY_RULE_SETUP
  873. #line 137 "CascadeFileScanner.l"
  874. { return BRANCH; }
  875. YY_BREAK
  876. case 34:
  877. YY_RULE_SETUP
  878. #line 140 "CascadeFileScanner.l"
  879. { return DOUBLEQUOTE; }
  880. YY_BREAK
  881. case 35:
  882. YY_RULE_SETUP
  883. #line 141 "CascadeFileScanner.l"
  884. { return COMMA; }
  885. YY_BREAK
  886. case 36:
  887. YY_RULE_SETUP
  888. #line 142 "CascadeFileScanner.l"
  889. { return X_BY; }
  890. YY_BREAK
  891. case 37:
  892. YY_RULE_SETUP
  893. #line 143 "CascadeFileScanner.l"
  894. { return COLON; }
  895. YY_BREAK
  896. case 38:
  897. YY_RULE_SETUP
  898. #line 144 "CascadeFileScanner.l"
  899. { return OPEN_PAREN; }
  900. YY_BREAK
  901. case 39:
  902. YY_RULE_SETUP
  903. #line 145 "CascadeFileScanner.l"
  904. { return CLOSE_PAREN; }
  905. YY_BREAK
  906. case 40:
  907. YY_RULE_SETUP
  908. #line 146 "CascadeFileScanner.l"
  909. { return OPEN_BRACKET; }
  910. YY_BREAK
  911. case 41:
  912. YY_RULE_SETUP
  913. #line 147 "CascadeFileScanner.l"
  914. { return CLOSE_BRACKET; }
  915. YY_BREAK
  916. case 42:
  917. YY_RULE_SETUP
  918. #line 148 "CascadeFileScanner.l"
  919. { return ASTERIX; }
  920. YY_BREAK
  921. case 43:
  922. YY_RULE_SETUP
  923. #line 149 "CascadeFileScanner.l"
  924. { return LT; }
  925. YY_BREAK
  926. case 44:
  927. YY_RULE_SETUP
  928. #line 150 "CascadeFileScanner.l"
  929. { return GTEQ; }
  930. YY_BREAK
  931. case 45:
  932. YY_RULE_SETUP
  933. #line 151 "CascadeFileScanner.l"
  934. { return SLASH; }
  935. YY_BREAK
  936. case 46:
  937. YY_RULE_SETUP
  938. #line 153 "CascadeFileScanner.l"
  939. { yylval.fval = atof(yytext); return FP_NUMBER; }
  940. YY_BREAK
  941. case 47:
  942. YY_RULE_SETUP
  943. #line 154 "CascadeFileScanner.l"
  944. { yylval.ival = atoi(yytext); return INT_NUMBER; }
  945. YY_BREAK
  946. case 48:
  947. YY_RULE_SETUP
  948. #line 155 "CascadeFileScanner.l"
  949. { yyIDstring = string(yytext); yylval.sval = yytext; return NAME; }
  950. YY_BREAK
  951. case 49:
  952. YY_RULE_SETUP
  953. #line 157 "CascadeFileScanner.l"
  954. { return DOT; }
  955. YY_BREAK
  956. case 50:
  957. YY_RULE_SETUP
  958. #line 158 "CascadeFileScanner.l"
  959. { return MINUS; }
  960. YY_BREAK
  961. case 51:
  962. YY_RULE_SETUP
  963. #line 160 "CascadeFileScanner.l"
  964. { ; }
  965. YY_BREAK
  966. case 52:
  967. YY_RULE_SETUP
  968. #line 161 "CascadeFileScanner.l"
  969. { ; }
  970. YY_BREAK
  971. case 53:
  972. YY_RULE_SETUP
  973. #line 162 "CascadeFileScanner.l"
  974. { nextline(); }
  975. YY_BREAK
  976. case 54:
  977. YY_RULE_SETUP
  978. #line 163 "CascadeFileScanner.l"
  979. { nextline(); }
  980. YY_BREAK
  981. case 55:
  982. YY_RULE_SETUP
  983. #line 165 "CascadeFileScanner.l"
  984. { nextline(); } /*comment*/
  985. YY_BREAK
  986. case 56:
  987. YY_RULE_SETUP
  988. #line 166 "CascadeFileScanner.l"
  989. { nextline(); } /*comment*/
  990. YY_BREAK
  991. case 57:
  992. YY_RULE_SETUP
  993. #line 167 "CascadeFileScanner.l"
  994. { char buf[32]; sprintf(buf, "illegal token: ' '"); buf[16]=yytext[0]; yyerror(buf); }
  995. YY_BREAK
  996. case 58:
  997. YY_RULE_SETUP
  998. #line 169 "CascadeFileScanner.l"
  999. ECHO;
  1000. YY_BREAK
  1001. #line 1144 "CascadeFileScanner.c"
  1002. case YY_STATE_EOF(INITIAL):
  1003. yyterminate();
  1004. case YY_END_OF_BUFFER:
  1005. {
  1006. /* Amount of text matched not including the EOB char. */
  1007. int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
  1008. /* Undo the effects of YY_DO_BEFORE_ACTION. */
  1009. *yy_cp = yy_hold_char;
  1010. YY_RESTORE_YY_MORE_OFFSET
  1011. if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
  1012. {
  1013. /* We're scanning a new file or input source.  It's
  1014.  * possible that this happened because the user
  1015.  * just pointed yyin at a new source and called
  1016.  * yylex().  If so, then we have to assure
  1017.  * consistency between yy_current_buffer and our
  1018.  * globals.  Here is the right place to do so, because
  1019.  * this is the first action (other than possibly a
  1020.  * back-up) that will match for the new input source.
  1021.  */
  1022. yy_n_chars = yy_current_buffer->yy_n_chars;
  1023. yy_current_buffer->yy_input_file = yyin;
  1024. yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
  1025. }
  1026. /* Note that here we test for yy_c_buf_p "<=" to the position
  1027.  * of the first EOB in the buffer, since yy_c_buf_p will
  1028.  * already have been incremented past the NUL character
  1029.  * (since all states make transitions on EOB to the
  1030.  * end-of-buffer state).  Contrast this with the test
  1031.  * in input().
  1032.  */
  1033. if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
  1034. { /* This was really a NUL. */
  1035. yy_state_type yy_next_state;
  1036. yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
  1037. yy_current_state = yy_get_previous_state();
  1038. /* Okay, we're now positioned to make the NUL
  1039.  * transition.  We couldn't have
  1040.  * yy_get_previous_state() go ahead and do it
  1041.  * for us because it doesn't know how to deal
  1042.  * with the possibility of jamming (and we don't
  1043.  * want to build jamming into it because then it
  1044.  * will run more slowly).
  1045.  */
  1046. yy_next_state = yy_try_NUL_trans( yy_current_state );
  1047. yy_bp = yytext_ptr + YY_MORE_ADJ;
  1048. if ( yy_next_state )
  1049. {
  1050. /* Consume the NUL. */
  1051. yy_cp = ++yy_c_buf_p;
  1052. yy_current_state = yy_next_state;
  1053. goto yy_match;
  1054. }
  1055. else
  1056. {
  1057. yy_cp = yy_c_buf_p;
  1058. goto yy_find_action;
  1059. }
  1060. }
  1061. else switch ( yy_get_next_buffer() )
  1062. {
  1063. case EOB_ACT_END_OF_FILE:
  1064. {
  1065. yy_did_buffer_switch_on_eof = 0;
  1066. if ( yywrap() )
  1067. {
  1068. /* Note: because we've taken care in
  1069.  * yy_get_next_buffer() to have set up
  1070.  * yytext, we can now set up
  1071.  * yy_c_buf_p so that if some total
  1072.  * hoser (like flex itself) wants to
  1073.  * call the scanner after we return the
  1074.  * YY_NULL, it'll still work - another
  1075.  * YY_NULL will get returned.
  1076.  */
  1077. yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
  1078. yy_act = YY_STATE_EOF(YY_START);
  1079. goto do_action;
  1080. }
  1081. else
  1082. {
  1083. if ( ! yy_did_buffer_switch_on_eof )
  1084. YY_NEW_FILE;
  1085. }
  1086. break;
  1087. }
  1088. case EOB_ACT_CONTINUE_SCAN:
  1089. yy_c_buf_p =
  1090. yytext_ptr + yy_amount_of_matched_text;
  1091. yy_current_state = yy_get_previous_state();
  1092. yy_cp = yy_c_buf_p;
  1093. yy_bp = yytext_ptr + YY_MORE_ADJ;
  1094. goto yy_match;
  1095. case EOB_ACT_LAST_MATCH:
  1096. yy_c_buf_p =
  1097. &yy_current_buffer->yy_ch_buf[yy_n_chars];
  1098. yy_current_state = yy_get_previous_state();
  1099. yy_cp = yy_c_buf_p;
  1100. yy_bp = yytext_ptr + YY_MORE_ADJ;
  1101. goto yy_find_action;
  1102. }
  1103. break;
  1104. }
  1105. default:
  1106. YY_FATAL_ERROR(
  1107. "fatal flex scanner internal error--no action found" );
  1108. } /* end of action switch */
  1109. } /* end of scanning one token */
  1110. } /* end of yylex */
  1111. /* yy_get_next_buffer - try to read in a new buffer
  1112.  *
  1113.  * Returns a code representing an action:
  1114.  * EOB_ACT_LAST_MATCH -
  1115.  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
  1116.  * EOB_ACT_END_OF_FILE - end of file
  1117.  */
  1118. static int yy_get_next_buffer()
  1119. {
  1120. register char *dest = yy_current_buffer->yy_ch_buf;
  1121. register char *source = yytext_ptr;
  1122. register int number_to_move, i;
  1123. int ret_val;
  1124. if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
  1125. YY_FATAL_ERROR(
  1126. "fatal flex scanner internal error--end of buffer missed" );
  1127. if ( yy_current_buffer->yy_fill_buffer == 0 )
  1128. { /* Don't try to fill the buffer, so this is an EOF. */
  1129. if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
  1130. {
  1131. /* We matched a single character, the EOB, so
  1132.  * treat this as a final EOF.
  1133.  */
  1134. return EOB_ACT_END_OF_FILE;
  1135. }
  1136. else
  1137. {
  1138. /* We matched some text prior to the EOB, first
  1139.  * process it.
  1140.  */
  1141. return EOB_ACT_LAST_MATCH;
  1142. }
  1143. }
  1144. /* Try to read more data. */
  1145. /* First move last chars to start of buffer. */
  1146. number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
  1147. for ( i = 0; i < number_to_move; ++i )
  1148. *(dest++) = *(source++);
  1149. if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
  1150. /* don't do the read, it's not guaranteed to return an EOF,
  1151.  * just force an EOF
  1152.  */
  1153. yy_current_buffer->yy_n_chars = yy_n_chars = 0;
  1154. else
  1155. {
  1156. int num_to_read =
  1157. yy_current_buffer->yy_buf_size - number_to_move - 1;
  1158. while ( num_to_read <= 0 )
  1159. { /* Not enough room in the buffer - grow it. */
  1160. #ifdef YY_USES_REJECT
  1161. YY_FATAL_ERROR(
  1162. "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
  1163. #else
  1164. /* just a shorter name for the current buffer */
  1165. YY_BUFFER_STATE b = yy_current_buffer;
  1166. int yy_c_buf_p_offset =
  1167. (int) (yy_c_buf_p - b->yy_ch_buf);
  1168. if ( b->yy_is_our_buffer )
  1169. {
  1170. int new_size = b->yy_buf_size * 2;
  1171. if ( new_size <= 0 )
  1172. b->yy_buf_size += b->yy_buf_size / 8;
  1173. else
  1174. b->yy_buf_size *= 2;
  1175. b->yy_ch_buf = (char *)
  1176. /* Include room in for 2 EOB chars. */
  1177. yy_flex_realloc( (void *) b->yy_ch_buf,
  1178.  b->yy_buf_size + 2 );
  1179. }
  1180. else
  1181. /* Can't grow it, we don't own it. */
  1182. b->yy_ch_buf = 0;
  1183. if ( ! b->yy_ch_buf )
  1184. YY_FATAL_ERROR(
  1185. "fatal error - scanner input buffer overflow" );
  1186. yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
  1187. num_to_read = yy_current_buffer->yy_buf_size -
  1188. number_to_move - 1;
  1189. #endif
  1190. }
  1191. if ( num_to_read > YY_READ_BUF_SIZE )
  1192. num_to_read = YY_READ_BUF_SIZE;
  1193. /* Read in more data. */
  1194. YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
  1195. yy_n_chars, num_to_read );
  1196. yy_current_buffer->yy_n_chars = yy_n_chars;
  1197. }
  1198. if ( yy_n_chars == 0 )
  1199. {
  1200. if ( number_to_move == YY_MORE_ADJ )
  1201. {
  1202. ret_val = EOB_ACT_END_OF_FILE;
  1203. yyrestart( yyin );
  1204. }
  1205. else
  1206. {
  1207. ret_val = EOB_ACT_LAST_MATCH;
  1208. yy_current_buffer->yy_buffer_status =
  1209. YY_BUFFER_EOF_PENDING;
  1210. }
  1211. }
  1212. else
  1213. ret_val = EOB_ACT_CONTINUE_SCAN;
  1214. yy_n_chars += number_to_move;
  1215. yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
  1216. yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
  1217. yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
  1218. return ret_val;
  1219. }
  1220. /* yy_get_previous_state - get the state just before the EOB char was reached */
  1221. static yy_state_type yy_get_previous_state()
  1222. {
  1223. register yy_state_type yy_current_state;
  1224. register char *yy_cp;
  1225. yy_current_state = yy_start;
  1226. for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
  1227. {
  1228. register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
  1229. if ( yy_accept[yy_current_state] )
  1230. {
  1231. yy_last_accepting_state = yy_current_state;
  1232. yy_last_accepting_cpos = yy_cp;
  1233. }
  1234. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  1235. {
  1236. yy_current_state = (int) yy_def[yy_current_state];
  1237. if ( yy_current_state >= 250 )
  1238. yy_c = yy_meta[(unsigned int) yy_c];
  1239. }
  1240. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  1241. }
  1242. return yy_current_state;
  1243. }
  1244. /* yy_try_NUL_trans - try to make a transition on the NUL character
  1245.  *
  1246.  * synopsis
  1247.  * next_state = yy_try_NUL_trans( current_state );
  1248.  */
  1249. #ifdef YY_USE_PROTOS
  1250. static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
  1251. #else
  1252. static yy_state_type yy_try_NUL_trans( yy_current_state )
  1253. yy_state_type yy_current_state;
  1254. #endif
  1255. {
  1256. register int yy_is_jam;
  1257. register char *yy_cp = yy_c_buf_p;
  1258. register YY_CHAR yy_c = 1;
  1259. if ( yy_accept[yy_current_state] )
  1260. {
  1261. yy_last_accepting_state = yy_current_state;
  1262. yy_last_accepting_cpos = yy_cp;
  1263. }
  1264. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  1265. {
  1266. yy_current_state = (int) yy_def[yy_current_state];
  1267. if ( yy_current_state >= 250 )
  1268. yy_c = yy_meta[(unsigned int) yy_c];
  1269. }
  1270. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  1271. yy_is_jam = (yy_current_state == 249);
  1272. return yy_is_jam ? 0 : yy_current_state;
  1273. }
  1274. #ifndef YY_NO_UNPUT
  1275. #ifdef YY_USE_PROTOS
  1276. static void yyunput( int c, register char *yy_bp )
  1277. #else
  1278. static void yyunput( c, yy_bp )
  1279. int c;
  1280. register char *yy_bp;
  1281. #endif
  1282. {
  1283. register char *yy_cp = yy_c_buf_p;
  1284. /* undo effects of setting up yytext */
  1285. *yy_cp = yy_hold_char;
  1286. if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
  1287. { /* need to shift things up to make room */
  1288. /* +2 for EOB chars. */
  1289. register int number_to_move = yy_n_chars + 2;
  1290. register char *dest = &yy_current_buffer->yy_ch_buf[
  1291. yy_current_buffer->yy_buf_size + 2];
  1292. register char *source =
  1293. &yy_current_buffer->yy_ch_buf[number_to_move];
  1294. while ( source > yy_current_buffer->yy_ch_buf )
  1295. *--dest = *--source;
  1296. yy_cp += (int) (dest - source);
  1297. yy_bp += (int) (dest - source);
  1298. yy_current_buffer->yy_n_chars =
  1299. yy_n_chars = yy_current_buffer->yy_buf_size;
  1300. if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
  1301. YY_FATAL_ERROR( "flex scanner push-back overflow" );
  1302. }
  1303. *--yy_cp = (char) c;
  1304. yytext_ptr = yy_bp;
  1305. yy_hold_char = *yy_cp;
  1306. yy_c_buf_p = yy_cp;
  1307. }
  1308. #endif /* ifndef YY_NO_UNPUT */
  1309. #ifndef YY_NO_INPUT
  1310. #ifdef __cplusplus
  1311. static int yyinput()
  1312. #else
  1313. static int input()
  1314. #endif
  1315. {
  1316. int c;
  1317. *yy_c_buf_p = yy_hold_char;
  1318. if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
  1319. {
  1320. /* yy_c_buf_p now points to the character we want to return.
  1321.  * If this occurs *before* the EOB characters, then it's a
  1322.  * valid NUL; if not, then we've hit the end of the buffer.
  1323.  */
  1324. if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
  1325. /* This was really a NUL. */
  1326. *yy_c_buf_p = '';
  1327. else
  1328. { /* need more input */
  1329. int offset = yy_c_buf_p - yytext_ptr;
  1330. ++yy_c_buf_p;
  1331. switch ( yy_get_next_buffer() )
  1332. {
  1333. case EOB_ACT_LAST_MATCH:
  1334. /* This happens because yy_g_n_b()
  1335.  * sees that we've accumulated a
  1336.  * token and flags that we need to
  1337.  * try matching the token before
  1338.  * proceeding.  But for input(),
  1339.  * there's no matching to consider.
  1340.  * So convert the EOB_ACT_LAST_MATCH
  1341.  * to EOB_ACT_END_OF_FILE.
  1342.  */
  1343. /* Reset buffer status. */
  1344. yyrestart( yyin );
  1345. /* fall through */
  1346. case EOB_ACT_END_OF_FILE:
  1347. {
  1348. if ( yywrap() )
  1349. return EOF;
  1350. if ( ! yy_did_buffer_switch_on_eof )
  1351. YY_NEW_FILE;
  1352. #ifdef __cplusplus
  1353. return yyinput();
  1354. #else
  1355. return input();
  1356. #endif
  1357. }
  1358. case EOB_ACT_CONTINUE_SCAN:
  1359. yy_c_buf_p = yytext_ptr + offset;
  1360. break;
  1361. }
  1362. }
  1363. }
  1364. c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
  1365. *yy_c_buf_p = ''; /* preserve yytext */
  1366. yy_hold_char = *++yy_c_buf_p;
  1367. return c;
  1368. }
  1369. #endif /* YY_NO_INPUT */
  1370. #ifdef YY_USE_PROTOS
  1371. void yyrestart( FILE *input_file )
  1372. #else
  1373. void yyrestart( input_file )
  1374. FILE *input_file;
  1375. #endif
  1376. {
  1377. if ( ! yy_current_buffer )
  1378. yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
  1379. yy_init_buffer( yy_current_buffer, input_file );
  1380. yy_load_buffer_state();
  1381. }
  1382. #ifdef YY_USE_PROTOS
  1383. void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
  1384. #else
  1385. void yy_switch_to_buffer( new_buffer )
  1386. YY_BUFFER_STATE new_buffer;
  1387. #endif
  1388. {
  1389. if ( yy_current_buffer == new_buffer )
  1390. return;
  1391. if ( yy_current_buffer )
  1392. {
  1393. /* Flush out information for old buffer. */
  1394. *yy_c_buf_p = yy_hold_char;
  1395. yy_current_buffer->yy_buf_pos = yy_c_buf_p;
  1396. yy_current_buffer->yy_n_chars = yy_n_chars;
  1397. }
  1398. yy_current_buffer = new_buffer;
  1399. yy_load_buffer_state();
  1400. /* We don't actually know whether we did this switch during
  1401.  * EOF (yywrap()) processing, but the only time this flag
  1402.  * is looked at is after yywrap() is called, so it's safe
  1403.  * to go ahead and always set it.
  1404.  */
  1405. yy_did_buffer_switch_on_eof = 1;
  1406. }
  1407. #ifdef YY_USE_PROTOS
  1408. void yy_load_buffer_state( void )
  1409. #else
  1410. void yy_load_buffer_state()
  1411. #endif
  1412. {
  1413. yy_n_chars = yy_current_buffer->yy_n_chars;
  1414. yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
  1415. yyin = yy_current_buffer->yy_input_file;
  1416. yy_hold_char = *yy_c_buf_p;
  1417. }
  1418. #ifdef YY_USE_PROTOS
  1419. YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
  1420. #else
  1421. YY_BUFFER_STATE yy_create_buffer( file, size )
  1422. FILE *file;
  1423. int size;
  1424. #endif
  1425. {
  1426. YY_BUFFER_STATE b;
  1427. b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
  1428. if ( ! b )
  1429. YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
  1430. b->yy_buf_size = size;
  1431. /* yy_ch_buf has to be 2 characters longer than the size given because
  1432.  * we need to put in 2 end-of-buffer characters.
  1433.  */
  1434. b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
  1435. if ( ! b->yy_ch_buf )
  1436. YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
  1437. b->yy_is_our_buffer = 1;
  1438. yy_init_buffer( b, file );
  1439. return b;
  1440. }
  1441. #ifdef YY_USE_PROTOS
  1442. void yy_delete_buffer( YY_BUFFER_STATE b )
  1443. #else
  1444. void yy_delete_buffer( b )
  1445. YY_BUFFER_STATE b;
  1446. #endif
  1447. {
  1448. if ( ! b )
  1449. return;
  1450. if ( b == yy_current_buffer )
  1451. yy_current_buffer = (YY_BUFFER_STATE) 0;
  1452. if ( b->yy_is_our_buffer )
  1453. yy_flex_free( (void *) b->yy_ch_buf );
  1454. yy_flex_free( (void *) b );
  1455. }
  1456. #ifdef YY_USE_PROTOS
  1457. void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
  1458. #else
  1459. void yy_init_buffer( b, file )
  1460. YY_BUFFER_STATE b;
  1461. FILE *file;
  1462. #endif
  1463. {
  1464. yy_flush_buffer( b );
  1465. b->yy_input_file = file;
  1466. b->yy_fill_buffer = 1;
  1467. #if YY_ALWAYS_INTERACTIVE
  1468. b->yy_is_interactive = 1;
  1469. #else
  1470. #if YY_NEVER_INTERACTIVE
  1471. b->yy_is_interactive = 0;
  1472. #else
  1473. b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
  1474. #endif
  1475. #endif
  1476. }
  1477. #ifdef YY_USE_PROTOS
  1478. void yy_flush_buffer( YY_BUFFER_STATE b )
  1479. #else
  1480. void yy_flush_buffer( b )
  1481. YY_BUFFER_STATE b;
  1482. #endif
  1483. {
  1484. if ( ! b )
  1485. return;
  1486. b->yy_n_chars = 0;
  1487. /* We always need two end-of-buffer characters.  The first causes
  1488.  * a transition to the end-of-buffer state.  The second causes
  1489.  * a jam in that state.
  1490.  */
  1491. b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
  1492. b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
  1493. b->yy_buf_pos = &b->yy_ch_buf[0];
  1494. b->yy_at_bol = 1;
  1495. b->yy_buffer_status = YY_BUFFER_NEW;
  1496. if ( b == yy_current_buffer )
  1497. yy_load_buffer_state();
  1498. }
  1499. #ifndef YY_NO_SCAN_BUFFER
  1500. #ifdef YY_USE_PROTOS
  1501. YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
  1502. #else
  1503. YY_BUFFER_STATE yy_scan_buffer( base, size )
  1504. char *base;
  1505. yy_size_t size;
  1506. #endif
  1507. {
  1508. YY_BUFFER_STATE b;
  1509. if ( size < 2 ||
  1510.      base[size-2] != YY_END_OF_BUFFER_CHAR ||
  1511.      base[size-1] != YY_END_OF_BUFFER_CHAR )
  1512. /* They forgot to leave room for the EOB's. */
  1513. return 0;
  1514. b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
  1515. if ( ! b )
  1516. YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
  1517. b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
  1518. b->yy_buf_pos = b->yy_ch_buf = base;
  1519. b->yy_is_our_buffer = 0;
  1520. b->yy_input_file = 0;
  1521. b->yy_n_chars = b->yy_buf_size;
  1522. b->yy_is_interactive = 0;
  1523. b->yy_at_bol = 1;
  1524. b->yy_fill_buffer = 0;
  1525. b->yy_buffer_status = YY_BUFFER_NEW;
  1526. yy_switch_to_buffer( b );
  1527. return b;
  1528. }
  1529. #endif
  1530. #ifndef YY_NO_SCAN_STRING
  1531. #ifdef YY_USE_PROTOS
  1532. YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
  1533. #else
  1534. YY_BUFFER_STATE yy_scan_string( yy_str )
  1535. yyconst char *yy_str;
  1536. #endif
  1537. {
  1538. int len;
  1539. for ( len = 0; yy_str[len]; ++len )
  1540. ;
  1541. return yy_scan_bytes( yy_str, len );
  1542. }
  1543. #endif
  1544. #ifndef YY_NO_SCAN_BYTES
  1545. #ifdef YY_USE_PROTOS
  1546. YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
  1547. #else
  1548. YY_BUFFER_STATE yy_scan_bytes( bytes, len )
  1549. yyconst char *bytes;
  1550. int len;
  1551. #endif
  1552. {
  1553. YY_BUFFER_STATE b;
  1554. char *buf;
  1555. yy_size_t n;
  1556. int i;
  1557. /* Get memory for full buffer, including space for trailing EOB's. */
  1558. n = len + 2;
  1559. buf = (char *) yy_flex_alloc( n );
  1560. if ( ! buf )
  1561. YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
  1562. for ( i = 0; i < len; ++i )
  1563. buf[i] = bytes[i];
  1564. buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
  1565. b = yy_scan_buffer( buf, n );
  1566. if ( ! b )
  1567. YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
  1568. /* It's okay to grow etc. this buffer, and we should throw it
  1569.  * away when we're done.
  1570.  */
  1571. b->yy_is_our_buffer = 1;
  1572. return b;
  1573. }
  1574. #endif
  1575. #ifndef YY_NO_PUSH_STATE
  1576. #ifdef YY_USE_PROTOS
  1577. static void yy_push_state( int new_state )
  1578. #else
  1579. static void yy_push_state( new_state )
  1580. int new_state;
  1581. #endif
  1582. {
  1583. if ( yy_start_stack_ptr >= yy_start_stack_depth )
  1584. {
  1585. yy_size_t new_size;
  1586. yy_start_stack_depth += YY_START_STACK_INCR;
  1587. new_size = yy_start_stack_depth * sizeof( int );
  1588. if ( ! yy_start_stack )
  1589. yy_start_stack = (int *) yy_flex_alloc( new_size );
  1590. else
  1591. yy_start_stack = (int *) yy_flex_realloc(
  1592. (void *) yy_start_stack, new_size );
  1593. if ( ! yy_start_stack )
  1594. YY_FATAL_ERROR(
  1595. "out of memory expanding start-condition stack" );
  1596. }
  1597. yy_start_stack[yy_start_stack_ptr++] = YY_START;
  1598. BEGIN(new_state);
  1599. }
  1600. #endif
  1601. #ifndef YY_NO_POP_STATE
  1602. static void yy_pop_state()
  1603. {
  1604. if ( --yy_start_stack_ptr < 0 )
  1605. YY_FATAL_ERROR( "start-condition stack underflow" );
  1606. BEGIN(yy_start_stack[yy_start_stack_ptr]);
  1607. }
  1608. #endif
  1609. #ifndef YY_NO_TOP_STATE
  1610. static int yy_top_state()
  1611. {
  1612. return yy_start_stack[yy_start_stack_ptr - 1];
  1613. }
  1614. #endif
  1615. #ifndef YY_EXIT_FAILURE
  1616. #define YY_EXIT_FAILURE 2
  1617. #endif
  1618. #ifdef YY_USE_PROTOS
  1619. static void yy_fatal_error( yyconst char msg[] )
  1620. #else
  1621. static void yy_fatal_error( msg )
  1622. char msg[];
  1623. #endif
  1624. {
  1625. (void) fprintf( stderr, "%sn", msg );
  1626. exit( YY_EXIT_FAILURE );
  1627. }
  1628. /* Redefine yyless() so it works in section 3 code. */
  1629. #undef yyless
  1630. #define yyless(n) 
  1631. do 
  1632. /* Undo effects of setting up yytext. */ 
  1633. yytext[yyleng] = yy_hold_char; 
  1634. yy_c_buf_p = yytext + n; 
  1635. yy_hold_char = *yy_c_buf_p; 
  1636. *yy_c_buf_p = ''; 
  1637. yyleng = n; 
  1638. while ( 0 )
  1639. /* Internal utility routines. */
  1640. #ifndef yytext_ptr
  1641. #ifdef YY_USE_PROTOS
  1642. static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
  1643. #else
  1644. static void yy_flex_strncpy( s1, s2, n )
  1645. char *s1;
  1646. yyconst char *s2;
  1647. int n;
  1648. #endif
  1649. {
  1650. register int i;
  1651. for ( i = 0; i < n; ++i )
  1652. s1[i] = s2[i];
  1653. }
  1654. #endif
  1655. #ifdef YY_NEED_STRLEN
  1656. #ifdef YY_USE_PROTOS
  1657. static int yy_flex_strlen( yyconst char *s )
  1658. #else
  1659. static int yy_flex_strlen( s )
  1660. yyconst char *s;
  1661. #endif
  1662. {
  1663. register int n;
  1664. for ( n = 0; s[n]; ++n )
  1665. ;
  1666. return n;
  1667. }
  1668. #endif
  1669. #ifdef YY_USE_PROTOS
  1670. static void *yy_flex_alloc( yy_size_t size )
  1671. #else
  1672. static void *yy_flex_alloc( size )
  1673. yy_size_t size;
  1674. #endif
  1675. {
  1676. return (void *) malloc( size );
  1677. }
  1678. #ifdef YY_USE_PROTOS
  1679. static void *yy_flex_realloc( void *ptr, yy_size_t size )
  1680. #else
  1681. static void *yy_flex_realloc( ptr, size )
  1682. void *ptr;
  1683. yy_size_t size;
  1684. #endif
  1685. {
  1686. /* The cast to (char *) in the following accommodates both
  1687.  * implementations that use char* generic pointers, and those
  1688.  * that use void* generic pointers.  It works with the latter
  1689.  * because both ANSI C and C++ allow castless assignment from
  1690.  * any pointer type to void*, and deal with argument conversions
  1691.  * as though doing an assignment.
  1692.  */
  1693. return (void *) realloc( (char *) ptr, size );
  1694. }
  1695. #ifdef YY_USE_PROTOS
  1696. static void yy_flex_free( void *ptr )
  1697. #else
  1698. static void yy_flex_free( ptr )
  1699. void *ptr;
  1700. #endif
  1701. {
  1702. free( ptr );
  1703. }
  1704. #if YY_MAIN
  1705. int main()
  1706. {
  1707. yylex();
  1708. return 0;
  1709. }
  1710. #endif
  1711. #line 169 "CascadeFileScanner.l"