# HG changeset patch # User John W. Eaton # Date 1361895784 18000 # Node ID 67f71e2a619033632fd2afd5c16497d724a9d80e # Parent 4f6c37cfbdcee1da9715575fbd546556cc06697b store pointer to current lexer in flex_stream_reader object * lex.ll (flex_stream_reader::lexer): New data member. (flex_stream_reader::flex_stream_reader): Initialize it. (flex_steram_reader::getc, flex_steram_reader::ungetc): Use it. (lexical_feedback::process_comment): Pass "this" to flex_stream_reader constructor. diff --git a/libinterp/parse-tree/lex.ll b/libinterp/parse-tree/lex.ll --- a/libinterp/parse-tree/lex.ll +++ b/libinterp/parse-tree/lex.ll @@ -1237,10 +1237,12 @@ flex_stream_reader : public stream_reader { public: - flex_stream_reader (char *buf_arg) : stream_reader (), buf (buf_arg) { } - - int getc (void) { return curr_lexer->text_yyinput (); } - int ungetc (int c) { curr_lexer->xunput (c, buf); return 0; } + flex_stream_reader (lexical_feedback *l, char *buf_arg) + : lexer (l), stream_reader (), buf (buf_arg) + { } + + int getc (void) { return lexer->text_yyinput (); } + int ungetc (int c) { lexer->xunput (c, buf); return 0; } private: @@ -1250,6 +1252,8 @@ flex_stream_reader& operator = (const flex_stream_reader&); + lexical_feedback *lexer; + char *buf; }; @@ -2253,7 +2257,7 @@ if (! help_buf.empty ()) help_txt = help_buf.top (); - flex_stream_reader flex_reader (yytext); + flex_stream_reader flex_reader (this, yytext); // process_comment is only supposed to be called when we are not // initially looking at a block comment.