diff options
Diffstat (limited to 'usr.bin/lex/skel.c')
-rw-r--r-- | usr.bin/lex/skel.c | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/usr.bin/lex/skel.c b/usr.bin/lex/skel.c index adf710fc21fa..3354600fae25 100644 --- a/usr.bin/lex/skel.c +++ b/usr.bin/lex/skel.c @@ -6,7 +6,7 @@ const char *skel[] = { "/* A lexical scanner generated by flex */", "", "/* Scanner skeleton version:", - " * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.89 96/05/25 21:02:21 vern Exp $", + " * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $", " */", "", "#define FLEX_SCANNER", @@ -255,7 +255,7 @@ const char *skel[] = { "#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )", "", "YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));", - "YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str ));", + "YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));", "YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));", "%*", "", @@ -788,7 +788,7 @@ const char *skel[] = { " /* don't do the read, it's not guaranteed to return an EOF,", " * just force an EOF", " */", - " yy_n_chars = 0;", + " yy_current_buffer->yy_n_chars = yy_n_chars = 0;", "", " else", " {", @@ -843,6 +843,8 @@ const char *skel[] = { " /* Read in more data. */", " YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),", " yy_n_chars, num_to_read );", + "", + " yy_current_buffer->yy_n_chars = yy_n_chars;", " }", "", " if ( yy_n_chars == 0 )", @@ -952,7 +954,8 @@ const char *skel[] = { "", " yy_cp += (int) (dest - source);", " yy_bp += (int) (dest - source);", - " yy_n_chars = yy_current_buffer->yy_buf_size;", + " yy_current_buffer->yy_n_chars =", + " yy_n_chars = yy_current_buffer->yy_buf_size;", "", " if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )", " YY_FATAL_ERROR( \"flex scanner push-back overflow\" );", @@ -1002,13 +1005,26 @@ const char *skel[] = { "", " switch ( yy_get_next_buffer() )", " {", + " case EOB_ACT_LAST_MATCH:", + " /* This happens because yy_g_n_b()", + " * sees that we've accumulated a", + " * token and flags that we need to", + " * try matching the token before", + " * proceeding. But for input(),", + " * there's no matching to consider.", + " * So convert the EOB_ACT_LAST_MATCH", + " * to EOB_ACT_END_OF_FILE.", + " */", + "", + " /* Reset buffer status. */", + " yyrestart( yyin );", + "", + " /* fall through */", + "", " case EOB_ACT_END_OF_FILE:", " {", " if ( yywrap() )", - " {", - " yy_c_buf_p = yytext_ptr + offset;", " return EOF;", - " }", "", " if ( ! yy_did_buffer_switch_on_eof )", " YY_NEW_FILE;", @@ -1022,15 +1038,6 @@ const char *skel[] = { " case EOB_ACT_CONTINUE_SCAN:", " yy_c_buf_p = yytext_ptr + offset;", " break;", - "", - " case EOB_ACT_LAST_MATCH:", - "#ifdef __cplusplus", - " YY_FATAL_ERROR(", - " \"unexpected last match in yyinput()\" );", - "#else", - " YY_FATAL_ERROR(", - " \"unexpected last match in input()\" );", - "#endif", " }", " }", " }", @@ -1228,6 +1235,9 @@ const char *skel[] = { "void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b )", "%*", " {", + " if ( ! b )", + " return;", + "", " b->yy_n_chars = 0;", "", " /* We always need two end-of-buffer characters. The first causes", @@ -1291,17 +1301,17 @@ const char *skel[] = { "#ifndef YY_NO_SCAN_STRING", "%-", "#ifdef YY_USE_PROTOS", - "YY_BUFFER_STATE yy_scan_string( yyconst char *str )", + "YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )", "#else", - "YY_BUFFER_STATE yy_scan_string( str )", - "yyconst char *str;", + "YY_BUFFER_STATE yy_scan_string( yy_str )", + "yyconst char *yy_str;", "#endif", " {", " int len;", - " for ( len = 0; str[len]; ++len )", + " for ( len = 0; yy_str[len]; ++len )", " ;", "", - " return yy_scan_bytes( str, len );", + " return yy_scan_bytes( yy_str, len );", " }", "%*", "#endif", |