lex.newick.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:40k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: lex.newick.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 18:09:27  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #include <ncbi_pch.hpp>
  10. #define yy_create_buffer newick_create_buffer
  11. #define yy_delete_buffer newick_delete_buffer
  12. #define yy_scan_buffer newick_scan_buffer
  13. #define yy_scan_string newick_scan_string
  14. #define yy_scan_bytes newick_scan_bytes
  15. #define yy_flex_debug newick_flex_debug
  16. #define yy_init_buffer newick_init_buffer
  17. #define yy_flush_buffer newick_flush_buffer
  18. #define yy_load_buffer_state newick_load_buffer_state
  19. #define yy_switch_to_buffer newick_switch_to_buffer
  20. #define yyin newickin
  21. #define yyleng newickleng
  22. #define yylex newicklex
  23. #define yyout newickout
  24. #define yyrestart newickrestart
  25. #define yytext newicktext
  26. #line 19 "lex.newick.cpp"
  27. /* A lexical scanner generated by flex */
  28. /* Scanner skeleton version:
  29.  * $Header: /src/NCBI/vault.ncbi/production/c++/src/algo/phy_tree/lex.newick.cpp,v 1000.1 2004/06/01 18:09:27 gouriano Exp $
  30.  */
  31. #define FLEX_SCANNER
  32. #define YY_FLEX_MAJOR_VERSION 2
  33. #define YY_FLEX_MINOR_VERSION 5
  34. #include <stdio.h>
  35. /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
  36. #ifdef c_plusplus
  37. #ifndef __cplusplus
  38. #define __cplusplus
  39. #endif
  40. #endif
  41. #ifdef __cplusplus
  42. #include <stdlib.h>
  43. /* Use prototypes in function declarations. */
  44. #define YY_USE_PROTOS
  45. /* The "const" storage-class-modifier is valid. */
  46. #define YY_USE_CONST
  47. #else /* ! __cplusplus */
  48. #if __STDC__
  49. #define YY_USE_PROTOS
  50. #define YY_USE_CONST
  51. #endif /* __STDC__ */
  52. #endif /* ! __cplusplus */
  53. #ifdef __TURBOC__
  54.  #pragma warn -rch
  55.  #pragma warn -use
  56. #include <io.h>
  57. #include <stdlib.h>
  58. #define YY_USE_CONST
  59. #define YY_USE_PROTOS
  60. #endif
  61. #ifdef YY_USE_CONST
  62. #define yyconst const
  63. #else
  64. #define yyconst
  65. #endif
  66. #ifdef YY_USE_PROTOS
  67. #define YY_PROTO(proto) proto
  68. #else
  69. #define YY_PROTO(proto) ()
  70. #endif
  71. /* Returned upon end-of-file. */
  72. #define YY_NULL 0
  73. /* Promotes a possibly negative, possibly signed char to an unsigned
  74.  * integer for use as an array index.  If the signed char is negative,
  75.  * we want to instead treat it as an 8-bit unsigned char, hence the
  76.  * double cast.
  77.  */
  78. #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
  79. /* Enter a start condition.  This macro really ought to take a parameter,
  80.  * but we do it the disgusting crufty way forced on us by the ()-less
  81.  * definition of BEGIN.
  82.  */
  83. #define BEGIN yy_start = 1 + 2 *
  84. /* Translate the current start state into a value that can be later handed
  85.  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  86.  * compatibility.
  87.  */
  88. #define YY_START ((yy_start - 1) / 2)
  89. #define YYSTATE YY_START
  90. /* Action number for EOF rule of a given start state. */
  91. #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  92. /* Special action meaning "start processing a new file". */
  93. #define YY_NEW_FILE yyrestart( yyin )
  94. #define YY_END_OF_BUFFER_CHAR 0
  95. /* Size of default input buffer. */
  96. #define YY_BUF_SIZE 16384
  97. typedef struct yy_buffer_state *YY_BUFFER_STATE;
  98. extern int yyleng;
  99. extern FILE *yyin, *yyout;
  100. #define EOB_ACT_CONTINUE_SCAN 0
  101. #define EOB_ACT_END_OF_FILE 1
  102. #define EOB_ACT_LAST_MATCH 2
  103. /* The funky do-while in the following #define is used to turn the definition
  104.  * int a single C statement (which needs a semi-colon terminator).  This
  105.  * avoids problems with code like:
  106.  *
  107.  *  if ( condition_holds )
  108.  * yyless( 5 );
  109.  * else
  110.  * do_something_else();
  111.  *
  112.  * Prior to using the do-while the compiler would get upset at the
  113.  * "else" because it interpreted the "if" statement as being all
  114.  * done when it reached the ';' after the yyless() call.
  115.  */
  116. /* Return all but the first 'n' matched characters back to the input stream. */
  117. #define yyless(n) 
  118. do 
  119. /* Undo effects of setting up yytext. */ 
  120. *yy_cp = yy_hold_char; 
  121. YY_RESTORE_YY_MORE_OFFSET 
  122. yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; 
  123. YY_DO_BEFORE_ACTION; /* set up yytext again */ 
  124. while ( 0 )
  125. #define unput(c) yyunput( c, yytext_ptr )
  126. /* The following is because we cannot portably get our hands on size_t
  127.  * (without autoconf's help, which isn't available because we want
  128.  * flex-generated scanners to compile on their own).
  129.  */
  130. typedef unsigned int yy_size_t;
  131. struct yy_buffer_state
  132. {
  133. FILE *yy_input_file;
  134. char *yy_ch_buf; /* input buffer */
  135. char *yy_buf_pos; /* current position in input buffer */
  136. /* Size of input buffer in bytes, not including room for EOB
  137.  * characters.
  138.  */
  139. yy_size_t yy_buf_size;
  140. /* Number of characters read into yy_ch_buf, not including EOB
  141.  * characters.
  142.  */
  143. int yy_n_chars;
  144. /* Whether we "own" the buffer - i.e., we know we created it,
  145.  * and can realloc() it to grow it, and should free() it to
  146.  * delete it.
  147.  */
  148. int yy_is_our_buffer;
  149. /* Whether this is an "interactive" input source; if so, and
  150.  * if we're using stdio for input, then we want to use getc()
  151.  * instead of fread(), to make sure we stop fetching input after
  152.  * each newline.
  153.  */
  154. int yy_is_interactive;
  155. /* Whether we're considered to be at the beginning of a line.
  156.  * If so, '^' rules will be active on the next match, otherwise
  157.  * not.
  158.  */
  159. int yy_at_bol;
  160. /* Whether to try to fill the input buffer when we reach the
  161.  * end of it.
  162.  */
  163. int yy_fill_buffer;
  164. int yy_buffer_status;
  165. #define YY_BUFFER_NEW 0
  166. #define YY_BUFFER_NORMAL 1
  167. /* When an EOF's been seen but there's still some text to process
  168.  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
  169.  * shouldn't try reading from the input source any more.  We might
  170.  * still have a bunch of tokens to match, though, because of
  171.  * possible backing-up.
  172.  *
  173.  * When we actually see the EOF, we change the status to "new"
  174.  * (via yyrestart()), so that the user can continue scanning by
  175.  * just pointing yyin at a new input file.
  176.  */
  177. #define YY_BUFFER_EOF_PENDING 2
  178. };
  179. static YY_BUFFER_STATE yy_current_buffer = 0;
  180. /* We provide macros for accessing buffer states in case in the
  181.  * future we want to put the buffer states in a more general
  182.  * "scanner state".
  183.  */
  184. #define YY_CURRENT_BUFFER yy_current_buffer
  185. /* yy_hold_char holds the character lost when yytext is formed. */
  186. static char yy_hold_char;
  187. static int yy_n_chars; /* number of characters read into yy_ch_buf */
  188. int yyleng;
  189. /* Points to current character in buffer. */
  190. static char *yy_c_buf_p = (char *) 0;
  191. static int yy_init = 1; /* whether we need to initialize */
  192. static int yy_start = 0; /* start state number */
  193. /* Flag which is used to allow yywrap()'s to do buffer switches
  194.  * instead of setting up a fresh yyin.  A bit of a hack ...
  195.  */
  196. static int yy_did_buffer_switch_on_eof;
  197. void yyrestart YY_PROTO(( FILE *input_file ));
  198. void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
  199. void yy_load_buffer_state YY_PROTO(( void ));
  200. YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
  201. void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
  202. void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
  203. void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
  204. #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
  205. YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
  206. YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
  207. YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
  208. static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
  209. static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
  210. static void yy_flex_free YY_PROTO(( void * ));
  211. #define yy_new_buffer yy_create_buffer
  212. #define yy_set_interactive(is_interactive) 
  213. if ( ! yy_current_buffer ) 
  214. yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); 
  215. yy_current_buffer->yy_is_interactive = is_interactive; 
  216. }
  217. #define yy_set_bol(at_bol) 
  218. if ( ! yy_current_buffer ) 
  219. yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); 
  220. yy_current_buffer->yy_at_bol = at_bol; 
  221. }
  222. #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
  223. #define yywrap() 1
  224. #define YY_SKIP_YYWRAP
  225. typedef unsigned char YY_CHAR;
  226. FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
  227. typedef int yy_state_type;
  228. extern char *yytext;
  229. #define yytext_ptr yytext
  230. static yy_state_type yy_get_previous_state YY_PROTO(( void ));
  231. static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
  232. static int yy_get_next_buffer YY_PROTO(( void ));
  233. static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
  234. /* Done after the current pattern has been matched and before the
  235.  * corresponding action - sets up yytext.
  236.  */
  237. #define YY_DO_BEFORE_ACTION 
  238. yytext_ptr = yy_bp; 
  239. yyleng = (int) (yy_cp - yy_bp); 
  240. yy_hold_char = *yy_cp; 
  241. *yy_cp = ''; 
  242. yy_c_buf_p = yy_cp;
  243. #define YY_NUM_RULES 7
  244. #define YY_END_OF_BUFFER 8
  245. static yyconst short int yy_accept[26] =
  246.     {   0,
  247.         4,    4,    4,    4,    8,    3,    2,    2,    6,    6,
  248.         5,    3,    3,    1,    3,    0,    4,    3,    1,    1,
  249.         0,    3,    3,    1,    0
  250.     } ;
  251. static yyconst int yy_ec[256] =
  252.     {   0,
  253.         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
  254.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  255.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  256.         1,    2,    1,    1,    1,    1,    1,    1,    4,    5,
  257.         5,    1,    6,    5,    6,    7,    1,    8,    8,    8,
  258.         8,    8,    8,    8,    8,    8,    8,    9,    5,    1,
  259.         1,    1,    1,    1,    1,    1,    1,    1,   10,    1,
  260.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  261.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  262.         5,    1,    5,    1,    1,    1,    1,    1,    1,    1,
  263.        10,    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,    1,    1,    1,    1,    1,
  274.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  275.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  276.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  277.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  278.         1,    1,    1,    1,    1
  279.     } ;
  280. static yyconst int yy_meta[11] =
  281.     {   0,
  282.         1,    2,    2,    2,    2,    1,    1,    1,    2,    1
  283.     } ;
  284. static yyconst short int yy_base[28] =
  285.     {   0,
  286.         0,    0,    5,    0,   28,    0,   29,   29,   23,   29,
  287.        29,    7,   18,    0,    0,   21,   20,    0,    0,   13,
  288.        18,   10,   13,    0,   29,   16,   18
  289.     } ;
  290. static yyconst short int yy_def[28] =
  291.     {   0,
  292.        25,    1,    1,    3,   25,   26,   25,   25,   27,   25,
  293.        25,   26,   26,   12,   26,   27,   25,   13,   12,   13,
  294.        27,   13,   13,   23,    0,   25,   25
  295.     } ;
  296. static yyconst short int yy_nxt[40] =
  297.     {   0,
  298.         6,    7,    8,    9,   10,    6,    6,    6,   11,    6,
  299.        12,   13,   14,   18,   19,   23,   15,   24,   16,   16,
  300.        24,   17,   22,   21,   17,   20,   17,   25,    5,   25,
  301.        25,   25,   25,   25,   25,   25,   25,   25,   25
  302.     } ;
  303. static yyconst short int yy_chk[40] =
  304.     {   0,
  305.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  306.         3,    3,    3,   12,   12,   22,   26,   22,   27,   27,
  307.        23,   21,   20,   17,   16,   13,    9,    5,   25,   25,
  308.        25,   25,   25,   25,   25,   25,   25,   25,   25
  309.     } ;
  310. static yy_state_type yy_last_accepting_state;
  311. static char *yy_last_accepting_cpos;
  312. /* The intent behind this definition is that it'll catch
  313.  * any uses of REJECT which flex missed.
  314.  */
  315. #define REJECT reject_used_but_not_detected
  316. #define yymore() yymore_used_but_not_detected
  317. #define YY_MORE_ADJ 0
  318. #define YY_RESTORE_YY_MORE_OFFSET
  319. char *yytext;
  320. #line 1 "newick.lpp"
  321. #define INITIAL 0
  322. /*  $Id: lex.newick.cpp,v 1000.1 2004/06/01 18:09:27 gouriano Exp $
  323.  * ===========================================================================
  324.  *
  325.  *                            PUBLIC DOMAIN NOTICE
  326.  *               National Center for Biotechnology Information
  327.  *
  328.  *  This software/database is a "United States Government Work" under the
  329.  *  terms of the United States Copyright Act.  It was written as part of
  330.  *  the author's official duties as a United States Government employee and
  331.  *  thus cannot be copyrighted.  This software/database is freely available
  332.  *  to the public for use. The National Library of Medicine and the U.S.
  333.  *  Government have not placed any restriction on its use or reproduction.
  334.  *
  335.  *  Although all reasonable efforts have been taken to ensure the accuracy
  336.  *  and reliability of the software and data, the NLM and the U.S.
  337.  *  Government do not and cannot warrant the performance or results that
  338.  *  may be obtained by using this software or data. The NLM and the U.S.
  339.  *  Government disclaim all warranties, express or implied, including
  340.  *  warranties of performance, merchantability or fitness for any particular
  341.  *  purpose.
  342.  *
  343.  *  Please cite the author in any work or product based on this material.
  344.  *
  345.  * ===========================================================================
  346.  *
  347.  * Authors:  Josh Cherry
  348.  *
  349.  * File Description:  flex lexer for Newick format phylogenetic trees
  350.  *
  351.  */
  352. /*
  353.  * Meant to be used in conjunction with bison parser defined
  354.  * by newick.ypp.  Generate code using (essentially)
  355.  *   flex -olex.newick.cpp newick.lpp
  356.  *   bison -d -p newick newick.ypp
  357.  * The line '#include <unistd.h>' must be removed from the flex-generated
  358.  * code for it to compile on some platforms.
  359.  */
  360. #line 44 "newick.lpp"
  361. #include <string.h>
  362. #include <util/stream_utils.hpp>
  363. #include <algo/phy_tree/phy_node.hpp>
  364. USING_SCOPE(ncbi);
  365. #include "newick.tab.hpp"
  366. static string g_Buffer;
  367. // input from a stream
  368. extern CNcbiIstream *g_NewickIstr;
  369. #define YY_INPUT(buf, result, max_size) 
  370.     result = CStreamUtils::Readsome(*g_NewickIstr, buf, max_size); 
  371.     if (result == 0 && !*g_NewickIstr) { 
  372.         result = YY_NULL; 
  373.     } 
  374. }
  375. #define YY_NEVER_INTERACTIVE 1
  376. #define EXPECT_NUM 1
  377. #line 458 "lex.newick.cpp"
  378. /* Macros after this point can all be overridden by user definitions in
  379.  * section 1.
  380.  */
  381. #ifndef YY_SKIP_YYWRAP
  382. #ifdef __cplusplus
  383. extern "C" int yywrap YY_PROTO(( void ));
  384. #else
  385. extern int yywrap YY_PROTO(( void ));
  386. #endif
  387. #endif
  388. #ifndef YY_NO_UNPUT
  389. static void yyunput YY_PROTO(( int c, char *buf_ptr ));
  390. #endif
  391. #ifndef yytext_ptr
  392. static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
  393. #endif
  394. #ifdef YY_NEED_STRLEN
  395. static int yy_flex_strlen YY_PROTO(( yyconst char * ));
  396. #endif
  397. #ifndef YY_NO_INPUT
  398. #ifdef __cplusplus
  399. static int yyinput YY_PROTO(( void ));
  400. #else
  401. static int input YY_PROTO(( void ));
  402. #endif
  403. #endif
  404. #if YY_STACK_USED
  405. static int yy_start_stack_ptr = 0;
  406. static int yy_start_stack_depth = 0;
  407. static int *yy_start_stack = 0;
  408. #ifndef YY_NO_PUSH_STATE
  409. static void yy_push_state YY_PROTO(( int new_state ));
  410. #endif
  411. #ifndef YY_NO_POP_STATE
  412. static void yy_pop_state YY_PROTO(( void ));
  413. #endif
  414. #ifndef YY_NO_TOP_STATE
  415. static int yy_top_state YY_PROTO(( void ));
  416. #endif
  417. #else
  418. #define YY_NO_PUSH_STATE 1
  419. #define YY_NO_POP_STATE 1
  420. #define YY_NO_TOP_STATE 1
  421. #endif
  422. #ifdef YY_MALLOC_DECL
  423. YY_MALLOC_DECL
  424. #else
  425. #if __STDC__
  426. #ifndef __cplusplus
  427. #include <stdlib.h>
  428. #endif
  429. #else
  430. /* Just try to get by without declaring the routines.  This will fail
  431.  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
  432.  * or sizeof(void*) != sizeof(int).
  433.  */
  434. #endif
  435. #endif
  436. /* Amount of stuff to slurp up with each read. */
  437. #ifndef YY_READ_BUF_SIZE
  438. #define YY_READ_BUF_SIZE 8192
  439. #endif
  440. /* Copy whatever the last rule matched to the standard output. */
  441. #ifndef ECHO
  442. /* This used to be an fputs(), but since the string might contain NUL's,
  443.  * we now use fwrite().
  444.  */
  445. #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
  446. #endif
  447. /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
  448.  * is returned in "result".
  449.  */
  450. #ifndef YY_INPUT
  451. #define YY_INPUT(buf,result,max_size) 
  452. if ( yy_current_buffer->yy_is_interactive ) 
  453. int c = '*', n; 
  454. for ( n = 0; n < max_size && 
  455.      (c = getc( yyin )) != EOF && c != 'n'; ++n ) 
  456. buf[n] = (char) c; 
  457. if ( c == 'n' ) 
  458. buf[n++] = (char) c; 
  459. if ( c == EOF && ferror( yyin ) ) 
  460. YY_FATAL_ERROR( "input in flex scanner failed" ); 
  461. result = n; 
  462. else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) 
  463.   && ferror( yyin ) ) 
  464. YY_FATAL_ERROR( "input in flex scanner failed" );
  465. #endif
  466. /* No semi-colon after return; correct usage is to write "yyterminate();" -
  467.  * we don't want an extra ';' after the "return" because that will cause
  468.  * some compilers to complain about unreachable statements.
  469.  */
  470. #ifndef yyterminate
  471. #define yyterminate() return YY_NULL
  472. #endif
  473. /* Number of entries by which start-condition stack grows. */
  474. #ifndef YY_START_STACK_INCR
  475. #define YY_START_STACK_INCR 25
  476. #endif
  477. /* Report a fatal error. */
  478. #ifndef YY_FATAL_ERROR
  479. #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
  480. #endif
  481. /* Default declaration of generated scanner - a define so the user can
  482.  * easily add parameters.
  483.  */
  484. #ifndef YY_DECL
  485. #define YY_DECL int yylex YY_PROTO(( void ))
  486. #endif
  487. /* Code executed at the beginning of each rule, after yytext and yyleng
  488.  * have been set up.
  489.  */
  490. #ifndef YY_USER_ACTION
  491. #define YY_USER_ACTION
  492. #endif
  493. /* Code executed at the end of each rule. */
  494. #ifndef YY_BREAK
  495. #define YY_BREAK break;
  496. #endif
  497. #define YY_RULE_SETUP 
  498. YY_USER_ACTION
  499. YY_DECL
  500. {
  501. register yy_state_type yy_current_state;
  502. register char *yy_cp, *yy_bp;
  503. register int yy_act;
  504. #line 72 "newick.lpp"
  505. #line 612 "lex.newick.cpp"
  506. if ( yy_init )
  507. {
  508. yy_init = 0;
  509. #ifdef YY_USER_INIT
  510. YY_USER_INIT;
  511. #endif
  512. if ( ! yy_start )
  513. yy_start = 1; /* first start state */
  514. if ( ! yyin )
  515. yyin = stdin;
  516. if ( ! yyout )
  517. yyout = stdout;
  518. if ( ! yy_current_buffer )
  519. yy_current_buffer =
  520. yy_create_buffer( yyin, YY_BUF_SIZE );
  521. yy_load_buffer_state();
  522. }
  523. while ( 1 ) /* loops until end-of-file is reached */
  524. {
  525. yy_cp = yy_c_buf_p;
  526. /* Support of yytext. */
  527. *yy_cp = yy_hold_char;
  528. /* yy_bp points to the position in yy_ch_buf of the start of
  529.  * the current run.
  530.  */
  531. yy_bp = yy_cp;
  532. yy_current_state = yy_start;
  533. yy_match:
  534. do
  535. {
  536. register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
  537. if ( yy_accept[yy_current_state] )
  538. {
  539. yy_last_accepting_state = yy_current_state;
  540. yy_last_accepting_cpos = yy_cp;
  541. }
  542. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  543. {
  544. yy_current_state = (int) yy_def[yy_current_state];
  545. if ( yy_current_state >= 26 )
  546. yy_c = yy_meta[(unsigned int) yy_c];
  547. }
  548. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  549. ++yy_cp;
  550. }
  551. while ( yy_base[yy_current_state] != 29 );
  552. yy_find_action:
  553. yy_act = yy_accept[yy_current_state];
  554. if ( yy_act == 0 )
  555. { /* have to back up */
  556. yy_cp = yy_last_accepting_cpos;
  557. yy_current_state = yy_last_accepting_state;
  558. yy_act = yy_accept[yy_current_state];
  559. }
  560. YY_DO_BEFORE_ACTION;
  561. do_action: /* This label is used only to access EOF actions. */
  562. switch ( yy_act )
  563. { /* beginning of action switch */
  564. case 0: /* must back up */
  565. /* undo the effects of YY_DO_BEFORE_ACTION */
  566. *yy_cp = yy_hold_char;
  567. yy_cp = yy_last_accepting_cpos;
  568. yy_current_state = yy_last_accepting_state;
  569. goto yy_find_action;
  570. case 1:
  571. YY_RULE_SETUP
  572. #line 74 "newick.lpp"
  573. {
  574.     newicklval.dblval = atof(yytext);
  575.     BEGIN 0;
  576.     return NUM;
  577. }
  578. YY_BREAK
  579. case 2:
  580. YY_RULE_SETUP
  581. #line 80 "newick.lpp"
  582. ;
  583. YY_BREAK
  584. case 3:
  585. YY_RULE_SETUP
  586. #line 82 "newick.lpp"
  587. {
  588.     g_Buffer = yytext;
  589.     for (unsigned int i = 0;  i < g_Buffer.size();  ++i) {
  590.         if (g_Buffer[i] == '_') {
  591.             g_Buffer[i] = ' ';
  592.         }
  593.     }
  594.     newicklval.strval = const_cast<char *>(g_Buffer.c_str());
  595.     return LABEL;
  596. }
  597. YY_BREAK
  598. case 4:
  599. YY_RULE_SETUP
  600. #line 93 "newick.lpp"
  601. {
  602.     g_Buffer.erase();
  603.     g_Buffer.reserve(strlen(yytext));
  604.     for (unsigned int i = 1;  i < strlen(yytext) - 1; ++ i) {
  605.         g_Buffer += yytext[i];
  606.         if (yytext[i] == ''') {
  607.             ++i;
  608.         }
  609.     }
  610.     newicklval.strval = const_cast<char *>(g_Buffer.c_str());
  611.     return LABEL;
  612. }
  613. YY_BREAK
  614. case 5:
  615. YY_RULE_SETUP
  616. #line 106 "newick.lpp"
  617. {
  618.     BEGIN EXPECT_NUM;
  619.     return ':';
  620. }
  621. YY_BREAK
  622. case 6:
  623. YY_RULE_SETUP
  624. #line 111 "newick.lpp"
  625. return yytext[0];
  626. YY_BREAK
  627. case 7:
  628. YY_RULE_SETUP
  629. #line 113 "newick.lpp"
  630. ECHO;
  631. YY_BREAK
  632. #line 757 "lex.newick.cpp"
  633. case YY_STATE_EOF(INITIAL):
  634. case YY_STATE_EOF(EXPECT_NUM):
  635. yyterminate();
  636. case YY_END_OF_BUFFER:
  637. {
  638. /* Amount of text matched not including the EOB char. */
  639. int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
  640. /* Undo the effects of YY_DO_BEFORE_ACTION. */
  641. *yy_cp = yy_hold_char;
  642. YY_RESTORE_YY_MORE_OFFSET
  643. if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
  644. {
  645. /* We're scanning a new file or input source.  It's
  646.  * possible that this happened because the user
  647.  * just pointed yyin at a new source and called
  648.  * yylex().  If so, then we have to assure
  649.  * consistency between yy_current_buffer and our
  650.  * globals.  Here is the right place to do so, because
  651.  * this is the first action (other than possibly a
  652.  * back-up) that will match for the new input source.
  653.  */
  654. yy_n_chars = yy_current_buffer->yy_n_chars;
  655. yy_current_buffer->yy_input_file = yyin;
  656. yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
  657. }
  658. /* Note that here we test for yy_c_buf_p "<=" to the position
  659.  * of the first EOB in the buffer, since yy_c_buf_p will
  660.  * already have been incremented past the NUL character
  661.  * (since all states make transitions on EOB to the
  662.  * end-of-buffer state).  Contrast this with the test
  663.  * in input().
  664.  */
  665. if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
  666. { /* This was really a NUL. */
  667. yy_state_type yy_next_state;
  668. yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
  669. yy_current_state = yy_get_previous_state();
  670. /* Okay, we're now positioned to make the NUL
  671.  * transition.  We couldn't have
  672.  * yy_get_previous_state() go ahead and do it
  673.  * for us because it doesn't know how to deal
  674.  * with the possibility of jamming (and we don't
  675.  * want to build jamming into it because then it
  676.  * will run more slowly).
  677.  */
  678. yy_next_state = yy_try_NUL_trans( yy_current_state );
  679. yy_bp = yytext_ptr + YY_MORE_ADJ;
  680. if ( yy_next_state )
  681. {
  682. /* Consume the NUL. */
  683. yy_cp = ++yy_c_buf_p;
  684. yy_current_state = yy_next_state;
  685. goto yy_match;
  686. }
  687. else
  688. {
  689. yy_cp = yy_c_buf_p;
  690. goto yy_find_action;
  691. }
  692. }
  693. else switch ( yy_get_next_buffer() )
  694. {
  695. case EOB_ACT_END_OF_FILE:
  696. {
  697. yy_did_buffer_switch_on_eof = 0;
  698. if ( yywrap() )
  699. {
  700. /* Note: because we've taken care in
  701.  * yy_get_next_buffer() to have set up
  702.  * yytext, we can now set up
  703.  * yy_c_buf_p so that if some total
  704.  * hoser (like flex itself) wants to
  705.  * call the scanner after we return the
  706.  * YY_NULL, it'll still work - another
  707.  * YY_NULL will get returned.
  708.  */
  709. yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
  710. yy_act = YY_STATE_EOF(YY_START);
  711. goto do_action;
  712. }
  713. else
  714. {
  715. if ( ! yy_did_buffer_switch_on_eof )
  716. YY_NEW_FILE;
  717. }
  718. break;
  719. }
  720. case EOB_ACT_CONTINUE_SCAN:
  721. yy_c_buf_p =
  722. yytext_ptr + yy_amount_of_matched_text;
  723. yy_current_state = yy_get_previous_state();
  724. yy_cp = yy_c_buf_p;
  725. yy_bp = yytext_ptr + YY_MORE_ADJ;
  726. goto yy_match;
  727. case EOB_ACT_LAST_MATCH:
  728. yy_c_buf_p =
  729. &yy_current_buffer->yy_ch_buf[yy_n_chars];
  730. yy_current_state = yy_get_previous_state();
  731. yy_cp = yy_c_buf_p;
  732. yy_bp = yytext_ptr + YY_MORE_ADJ;
  733. goto yy_find_action;
  734. }
  735. break;
  736. }
  737. default:
  738. YY_FATAL_ERROR(
  739. "fatal flex scanner internal error--no action found" );
  740. } /* end of action switch */
  741. } /* end of scanning one token */
  742. } /* end of yylex */
  743. /* yy_get_next_buffer - try to read in a new buffer
  744.  *
  745.  * Returns a code representing an action:
  746.  * EOB_ACT_LAST_MATCH -
  747.  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
  748.  * EOB_ACT_END_OF_FILE - end of file
  749.  */
  750. static int yy_get_next_buffer()
  751. {
  752. register char *dest = yy_current_buffer->yy_ch_buf;
  753. register char *source = yytext_ptr;
  754. register int number_to_move, i;
  755. int ret_val;
  756. if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
  757. YY_FATAL_ERROR(
  758. "fatal flex scanner internal error--end of buffer missed" );
  759. if ( yy_current_buffer->yy_fill_buffer == 0 )
  760. { /* Don't try to fill the buffer, so this is an EOF. */
  761. if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
  762. {
  763. /* We matched a single character, the EOB, so
  764.  * treat this as a final EOF.
  765.  */
  766. return EOB_ACT_END_OF_FILE;
  767. }
  768. else
  769. {
  770. /* We matched some text prior to the EOB, first
  771.  * process it.
  772.  */
  773. return EOB_ACT_LAST_MATCH;
  774. }
  775. }
  776. /* Try to read more data. */
  777. /* First move last chars to start of buffer. */
  778. number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
  779. for ( i = 0; i < number_to_move; ++i )
  780. *(dest++) = *(source++);
  781. if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
  782. /* don't do the read, it's not guaranteed to return an EOF,
  783.  * just force an EOF
  784.  */
  785. yy_current_buffer->yy_n_chars = yy_n_chars = 0;
  786. else
  787. {
  788. int num_to_read =
  789. yy_current_buffer->yy_buf_size - number_to_move - 1;
  790. while ( num_to_read <= 0 )
  791. { /* Not enough room in the buffer - grow it. */
  792. #ifdef YY_USES_REJECT
  793. YY_FATAL_ERROR(
  794. "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
  795. #else
  796. /* just a shorter name for the current buffer */
  797. YY_BUFFER_STATE b = yy_current_buffer;
  798. int yy_c_buf_p_offset =
  799. (int) (yy_c_buf_p - b->yy_ch_buf);
  800. if ( b->yy_is_our_buffer )
  801. {
  802. int new_size = b->yy_buf_size * 2;
  803. if ( new_size <= 0 )
  804. b->yy_buf_size += b->yy_buf_size / 8;
  805. else
  806. b->yy_buf_size *= 2;
  807. b->yy_ch_buf = (char *)
  808. /* Include room in for 2 EOB chars. */
  809. yy_flex_realloc( (void *) b->yy_ch_buf,
  810.  b->yy_buf_size + 2 );
  811. }
  812. else
  813. /* Can't grow it, we don't own it. */
  814. b->yy_ch_buf = 0;
  815. if ( ! b->yy_ch_buf )
  816. YY_FATAL_ERROR(
  817. "fatal error - scanner input buffer overflow" );
  818. yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
  819. num_to_read = yy_current_buffer->yy_buf_size -
  820. number_to_move - 1;
  821. #endif
  822. }
  823. if ( num_to_read > YY_READ_BUF_SIZE )
  824. num_to_read = YY_READ_BUF_SIZE;
  825. /* Read in more data. */
  826. YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
  827. yy_n_chars, num_to_read );
  828. yy_current_buffer->yy_n_chars = yy_n_chars;
  829. }
  830. if ( yy_n_chars == 0 )
  831. {
  832. if ( number_to_move == YY_MORE_ADJ )
  833. {
  834. ret_val = EOB_ACT_END_OF_FILE;
  835. yyrestart( yyin );
  836. }
  837. else
  838. {
  839. ret_val = EOB_ACT_LAST_MATCH;
  840. yy_current_buffer->yy_buffer_status =
  841. YY_BUFFER_EOF_PENDING;
  842. }
  843. }
  844. else
  845. ret_val = EOB_ACT_CONTINUE_SCAN;
  846. yy_n_chars += number_to_move;
  847. yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
  848. yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
  849. yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
  850. return ret_val;
  851. }
  852. /* yy_get_previous_state - get the state just before the EOB char was reached */
  853. static yy_state_type yy_get_previous_state()
  854. {
  855. register yy_state_type yy_current_state;
  856. register char *yy_cp;
  857. yy_current_state = yy_start;
  858. for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
  859. {
  860. register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
  861. if ( yy_accept[yy_current_state] )
  862. {
  863. yy_last_accepting_state = yy_current_state;
  864. yy_last_accepting_cpos = yy_cp;
  865. }
  866. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  867. {
  868. yy_current_state = (int) yy_def[yy_current_state];
  869. if ( yy_current_state >= 26 )
  870. yy_c = yy_meta[(unsigned int) yy_c];
  871. }
  872. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  873. }
  874. return yy_current_state;
  875. }
  876. /* yy_try_NUL_trans - try to make a transition on the NUL character
  877.  *
  878.  * synopsis
  879.  * next_state = yy_try_NUL_trans( current_state );
  880.  */
  881. #ifdef YY_USE_PROTOS
  882. static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
  883. #else
  884. static yy_state_type yy_try_NUL_trans( yy_current_state )
  885. yy_state_type yy_current_state;
  886. #endif
  887. {
  888. register int yy_is_jam;
  889. register char *yy_cp = yy_c_buf_p;
  890. register YY_CHAR yy_c = 1;
  891. if ( yy_accept[yy_current_state] )
  892. {
  893. yy_last_accepting_state = yy_current_state;
  894. yy_last_accepting_cpos = yy_cp;
  895. }
  896. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  897. {
  898. yy_current_state = (int) yy_def[yy_current_state];
  899. if ( yy_current_state >= 26 )
  900. yy_c = yy_meta[(unsigned int) yy_c];
  901. }
  902. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  903. yy_is_jam = (yy_current_state == 25);
  904. return yy_is_jam ? 0 : yy_current_state;
  905. }
  906. #ifndef YY_NO_UNPUT
  907. #ifdef YY_USE_PROTOS
  908. static void yyunput( int c, register char *yy_bp )
  909. #else
  910. static void yyunput( c, yy_bp )
  911. int c;
  912. register char *yy_bp;
  913. #endif
  914. {
  915. register char *yy_cp = yy_c_buf_p;
  916. /* undo effects of setting up yytext */
  917. *yy_cp = yy_hold_char;
  918. if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
  919. { /* need to shift things up to make room */
  920. /* +2 for EOB chars. */
  921. register int number_to_move = yy_n_chars + 2;
  922. register char *dest = &yy_current_buffer->yy_ch_buf[
  923. yy_current_buffer->yy_buf_size + 2];
  924. register char *source =
  925. &yy_current_buffer->yy_ch_buf[number_to_move];
  926. while ( source > yy_current_buffer->yy_ch_buf )
  927. *--dest = *--source;
  928. yy_cp += (int) (dest - source);
  929. yy_bp += (int) (dest - source);
  930. yy_current_buffer->yy_n_chars =
  931. yy_n_chars = yy_current_buffer->yy_buf_size;
  932. if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
  933. YY_FATAL_ERROR( "flex scanner push-back overflow" );
  934. }
  935. *--yy_cp = (char) c;
  936. yytext_ptr = yy_bp;
  937. yy_hold_char = *yy_cp;
  938. yy_c_buf_p = yy_cp;
  939. }
  940. #endif /* ifndef YY_NO_UNPUT */
  941. #ifdef __cplusplus
  942. static int yyinput()
  943. #else
  944. static int input()
  945. #endif
  946. {
  947. int c;
  948. *yy_c_buf_p = yy_hold_char;
  949. if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
  950. {
  951. /* yy_c_buf_p now points to the character we want to return.
  952.  * If this occurs *before* the EOB characters, then it's a
  953.  * valid NUL; if not, then we've hit the end of the buffer.
  954.  */
  955. if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
  956. /* This was really a NUL. */
  957. *yy_c_buf_p = '';
  958. else
  959. { /* need more input */
  960. int offset = yy_c_buf_p - yytext_ptr;
  961. ++yy_c_buf_p;
  962. switch ( yy_get_next_buffer() )
  963. {
  964. case EOB_ACT_LAST_MATCH:
  965. /* This happens because yy_g_n_b()
  966.  * sees that we've accumulated a
  967.  * token and flags that we need to
  968.  * try matching the token before
  969.  * proceeding.  But for input(),
  970.  * there's no matching to consider.
  971.  * So convert the EOB_ACT_LAST_MATCH
  972.  * to EOB_ACT_END_OF_FILE.
  973.  */
  974. /* Reset buffer status. */
  975. yyrestart( yyin );
  976. /* fall through */
  977. case EOB_ACT_END_OF_FILE:
  978. {
  979. if ( yywrap() )
  980. return EOF;
  981. if ( ! yy_did_buffer_switch_on_eof )
  982. YY_NEW_FILE;
  983. #ifdef __cplusplus
  984. return yyinput();
  985. #else
  986. return input();
  987. #endif
  988. }
  989. case EOB_ACT_CONTINUE_SCAN:
  990. yy_c_buf_p = yytext_ptr + offset;
  991. break;
  992. }
  993. }
  994. }
  995. c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
  996. *yy_c_buf_p = ''; /* preserve yytext */
  997. yy_hold_char = *++yy_c_buf_p;
  998. return c;
  999. }
  1000. #ifdef YY_USE_PROTOS
  1001. void yyrestart( FILE *input_file )
  1002. #else
  1003. void yyrestart( input_file )
  1004. FILE *input_file;
  1005. #endif
  1006. {
  1007. if ( ! yy_current_buffer )
  1008. yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
  1009. yy_init_buffer( yy_current_buffer, input_file );
  1010. yy_load_buffer_state();
  1011. }
  1012. #ifdef YY_USE_PROTOS
  1013. void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
  1014. #else
  1015. void yy_switch_to_buffer( new_buffer )
  1016. YY_BUFFER_STATE new_buffer;
  1017. #endif
  1018. {
  1019. if ( yy_current_buffer == new_buffer )
  1020. return;
  1021. if ( yy_current_buffer )
  1022. {
  1023. /* Flush out information for old buffer. */
  1024. *yy_c_buf_p = yy_hold_char;
  1025. yy_current_buffer->yy_buf_pos = yy_c_buf_p;
  1026. yy_current_buffer->yy_n_chars = yy_n_chars;
  1027. }
  1028. yy_current_buffer = new_buffer;
  1029. yy_load_buffer_state();
  1030. /* We don't actually know whether we did this switch during
  1031.  * EOF (yywrap()) processing, but the only time this flag
  1032.  * is looked at is after yywrap() is called, so it's safe
  1033.  * to go ahead and always set it.
  1034.  */
  1035. yy_did_buffer_switch_on_eof = 1;
  1036. }
  1037. #ifdef YY_USE_PROTOS
  1038. void yy_load_buffer_state( void )
  1039. #else
  1040. void yy_load_buffer_state()
  1041. #endif
  1042. {
  1043. yy_n_chars = yy_current_buffer->yy_n_chars;
  1044. yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
  1045. yyin = yy_current_buffer->yy_input_file;
  1046. yy_hold_char = *yy_c_buf_p;
  1047. }
  1048. #ifdef YY_USE_PROTOS
  1049. YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
  1050. #else
  1051. YY_BUFFER_STATE yy_create_buffer( file, size )
  1052. FILE *file;
  1053. int size;
  1054. #endif
  1055. {
  1056. YY_BUFFER_STATE b;
  1057. b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
  1058. if ( ! b )
  1059. YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
  1060. b->yy_buf_size = size;
  1061. /* yy_ch_buf has to be 2 characters longer than the size given because
  1062.  * we need to put in 2 end-of-buffer characters.
  1063.  */
  1064. b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
  1065. if ( ! b->yy_ch_buf )
  1066. YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
  1067. b->yy_is_our_buffer = 1;
  1068. yy_init_buffer( b, file );
  1069. return b;
  1070. }
  1071. #ifdef YY_USE_PROTOS
  1072. void yy_delete_buffer( YY_BUFFER_STATE b )
  1073. #else
  1074. void yy_delete_buffer( b )
  1075. YY_BUFFER_STATE b;
  1076. #endif
  1077. {
  1078. if ( ! b )
  1079. return;
  1080. if ( b == yy_current_buffer )
  1081. yy_current_buffer = (YY_BUFFER_STATE) 0;
  1082. if ( b->yy_is_our_buffer )
  1083. yy_flex_free( (void *) b->yy_ch_buf );
  1084. yy_flex_free( (void *) b );
  1085. }
  1086. #ifndef YY_ALWAYS_INTERACTIVE
  1087. #ifndef YY_NEVER_INTERACTIVE
  1088. extern int isatty YY_PROTO(( int ));
  1089. #endif
  1090. #endif
  1091. #ifdef YY_USE_PROTOS
  1092. void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
  1093. #else
  1094. void yy_init_buffer( b, file )
  1095. YY_BUFFER_STATE b;
  1096. FILE *file;
  1097. #endif
  1098. {
  1099. yy_flush_buffer( b );
  1100. b->yy_input_file = file;
  1101. b->yy_fill_buffer = 1;
  1102. #if YY_ALWAYS_INTERACTIVE
  1103. b->yy_is_interactive = 1;
  1104. #else
  1105. #if YY_NEVER_INTERACTIVE
  1106. b->yy_is_interactive = 0;
  1107. #else
  1108. b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
  1109. #endif
  1110. #endif
  1111. }
  1112. #ifdef YY_USE_PROTOS
  1113. void yy_flush_buffer( YY_BUFFER_STATE b )
  1114. #else
  1115. void yy_flush_buffer( b )
  1116. YY_BUFFER_STATE b;
  1117. #endif
  1118. {
  1119. if ( ! b )
  1120. return;
  1121. b->yy_n_chars = 0;
  1122. /* We always need two end-of-buffer characters.  The first causes
  1123.  * a transition to the end-of-buffer state.  The second causes
  1124.  * a jam in that state.
  1125.  */
  1126. b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
  1127. b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
  1128. b->yy_buf_pos = &b->yy_ch_buf[0];
  1129. b->yy_at_bol = 1;
  1130. b->yy_buffer_status = YY_BUFFER_NEW;
  1131. if ( b == yy_current_buffer )
  1132. yy_load_buffer_state();
  1133. }
  1134. #ifndef YY_NO_SCAN_BUFFER
  1135. #ifdef YY_USE_PROTOS
  1136. YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
  1137. #else
  1138. YY_BUFFER_STATE yy_scan_buffer( base, size )
  1139. char *base;
  1140. yy_size_t size;
  1141. #endif
  1142. {
  1143. YY_BUFFER_STATE b;
  1144. if ( size < 2 ||
  1145.      base[size-2] != YY_END_OF_BUFFER_CHAR ||
  1146.      base[size-1] != YY_END_OF_BUFFER_CHAR )
  1147. /* They forgot to leave room for the EOB's. */
  1148. return 0;
  1149. b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
  1150. if ( ! b )
  1151. YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
  1152. b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
  1153. b->yy_buf_pos = b->yy_ch_buf = base;
  1154. b->yy_is_our_buffer = 0;
  1155. b->yy_input_file = 0;
  1156. b->yy_n_chars = b->yy_buf_size;
  1157. b->yy_is_interactive = 0;
  1158. b->yy_at_bol = 1;
  1159. b->yy_fill_buffer = 0;
  1160. b->yy_buffer_status = YY_BUFFER_NEW;
  1161. yy_switch_to_buffer( b );
  1162. return b;
  1163. }
  1164. #endif
  1165. #ifndef YY_NO_SCAN_STRING
  1166. #ifdef YY_USE_PROTOS
  1167. YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
  1168. #else
  1169. YY_BUFFER_STATE yy_scan_string( yy_str )
  1170. yyconst char *yy_str;
  1171. #endif
  1172. {
  1173. int len;
  1174. for ( len = 0; yy_str[len]; ++len )
  1175. ;
  1176. return yy_scan_bytes( yy_str, len );
  1177. }
  1178. #endif
  1179. #ifndef YY_NO_SCAN_BYTES
  1180. #ifdef YY_USE_PROTOS
  1181. YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
  1182. #else
  1183. YY_BUFFER_STATE yy_scan_bytes( bytes, len )
  1184. yyconst char *bytes;
  1185. int len;
  1186. #endif
  1187. {
  1188. YY_BUFFER_STATE b;
  1189. char *buf;
  1190. yy_size_t n;
  1191. int i;
  1192. /* Get memory for full buffer, including space for trailing EOB's. */
  1193. n = len + 2;
  1194. buf = (char *) yy_flex_alloc( n );
  1195. if ( ! buf )
  1196. YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
  1197. for ( i = 0; i < len; ++i )
  1198. buf[i] = bytes[i];
  1199. buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
  1200. b = yy_scan_buffer( buf, n );
  1201. if ( ! b )
  1202. YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
  1203. /* It's okay to grow etc. this buffer, and we should throw it
  1204.  * away when we're done.
  1205.  */
  1206. b->yy_is_our_buffer = 1;
  1207. return b;
  1208. }
  1209. #endif
  1210. #ifndef YY_NO_PUSH_STATE
  1211. #ifdef YY_USE_PROTOS
  1212. static void yy_push_state( int new_state )
  1213. #else
  1214. static void yy_push_state( new_state )
  1215. int new_state;
  1216. #endif
  1217. {
  1218. if ( yy_start_stack_ptr >= yy_start_stack_depth )
  1219. {
  1220. yy_size_t new_size;
  1221. yy_start_stack_depth += YY_START_STACK_INCR;
  1222. new_size = yy_start_stack_depth * sizeof( int );
  1223. if ( ! yy_start_stack )
  1224. yy_start_stack = (int *) yy_flex_alloc( new_size );
  1225. else
  1226. yy_start_stack = (int *) yy_flex_realloc(
  1227. (void *) yy_start_stack, new_size );
  1228. if ( ! yy_start_stack )
  1229. YY_FATAL_ERROR(
  1230. "out of memory expanding start-condition stack" );
  1231. }
  1232. yy_start_stack[yy_start_stack_ptr++] = YY_START;
  1233. BEGIN(new_state);
  1234. }
  1235. #endif
  1236. #ifndef YY_NO_POP_STATE
  1237. static void yy_pop_state()
  1238. {
  1239. if ( --yy_start_stack_ptr < 0 )
  1240. YY_FATAL_ERROR( "start-condition stack underflow" );
  1241. BEGIN(yy_start_stack[yy_start_stack_ptr]);
  1242. }
  1243. #endif
  1244. #ifndef YY_NO_TOP_STATE
  1245. static int yy_top_state()
  1246. {
  1247. return yy_start_stack[yy_start_stack_ptr - 1];
  1248. }
  1249. #endif
  1250. #ifndef YY_EXIT_FAILURE
  1251. #define YY_EXIT_FAILURE 2
  1252. #endif
  1253. #ifdef YY_USE_PROTOS
  1254. static void yy_fatal_error( yyconst char msg[] )
  1255. #else
  1256. static void yy_fatal_error( msg )
  1257. char msg[];
  1258. #endif
  1259. {
  1260. (void) fprintf( stderr, "%sn", msg );
  1261. exit( YY_EXIT_FAILURE );
  1262. }
  1263. /* Redefine yyless() so it works in section 3 code. */
  1264. #undef yyless
  1265. #define yyless(n) 
  1266. do 
  1267. /* Undo effects of setting up yytext. */ 
  1268. yytext[yyleng] = yy_hold_char; 
  1269. yy_c_buf_p = yytext + n; 
  1270. yy_hold_char = *yy_c_buf_p; 
  1271. *yy_c_buf_p = ''; 
  1272. yyleng = n; 
  1273. while ( 0 )
  1274. /* Internal utility routines. */
  1275. #ifndef yytext_ptr
  1276. #ifdef YY_USE_PROTOS
  1277. static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
  1278. #else
  1279. static void yy_flex_strncpy( s1, s2, n )
  1280. char *s1;
  1281. yyconst char *s2;
  1282. int n;
  1283. #endif
  1284. {
  1285. register int i;
  1286. for ( i = 0; i < n; ++i )
  1287. s1[i] = s2[i];
  1288. }
  1289. #endif
  1290. #ifdef YY_NEED_STRLEN
  1291. #ifdef YY_USE_PROTOS
  1292. static int yy_flex_strlen( yyconst char *s )
  1293. #else
  1294. static int yy_flex_strlen( s )
  1295. yyconst char *s;
  1296. #endif
  1297. {
  1298. register int n;
  1299. for ( n = 0; s[n]; ++n )
  1300. ;
  1301. return n;
  1302. }
  1303. #endif
  1304. #ifdef YY_USE_PROTOS
  1305. static void *yy_flex_alloc( yy_size_t size )
  1306. #else
  1307. static void *yy_flex_alloc( size )
  1308. yy_size_t size;
  1309. #endif
  1310. {
  1311. return (void *) malloc( size );
  1312. }
  1313. #ifdef YY_USE_PROTOS
  1314. static void *yy_flex_realloc( void *ptr, yy_size_t size )
  1315. #else
  1316. static void *yy_flex_realloc( ptr, size )
  1317. void *ptr;
  1318. yy_size_t size;
  1319. #endif
  1320. {
  1321. /* The cast to (char *) in the following accommodates both
  1322.  * implementations that use char* generic pointers, and those
  1323.  * that use void* generic pointers.  It works with the latter
  1324.  * because both ANSI C and C++ allow castless assignment from
  1325.  * any pointer type to void*, and deal with argument conversions
  1326.  * as though doing an assignment.
  1327.  */
  1328. return (void *) realloc( (char *) ptr, size );
  1329. }
  1330. #ifdef YY_USE_PROTOS
  1331. static void yy_flex_free( void *ptr )
  1332. #else
  1333. static void yy_flex_free( ptr )
  1334. void *ptr;
  1335. #endif
  1336. {
  1337. free( ptr );
  1338. }
  1339. #if YY_MAIN
  1340. int main()
  1341. {
  1342. yylex();
  1343. return 0;
  1344. }
  1345. #endif
  1346. #line 113 "newick.lpp"
  1347. // Reset the lexer: discard input buffer and enter initial state
  1348. void newick_flex_reset(void)
  1349. {
  1350.    newickrestart(0);  // flush flex buffer
  1351.    BEGIN 0;
  1352. }
  1353. /*
  1354.  * ===========================================================================
  1355.  * $Log: lex.newick.cpp,v $
  1356.  * Revision 1000.1  2004/06/01 18:09:27  gouriano
  1357.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5
  1358.  *
  1359.  * Revision 1.2  2004/02/11 22:18:16  ucko
  1360.  * erase() strings rather than clear()ing them for older compilers' sake.
  1361.  *
  1362.  * Revision 1.1  2004/02/11 17:40:53  jcherry
  1363.  * Initial version
  1364.  *
  1365.  * ===========================================================================
  1366.  */