flex: unnamed-faq-68

 
 unnamed-faq-68
 ==============
 
      To: "Bart Niswonger" <NISWONGR@almaden.ibm.com>
      Subject: Re: flex 2.5: c++ scanners & start conditions
      In-reply-to: Your message of Tue, 06 Jan 1998 10:34:21 PST.
      Date: Tue, 06 Jan 1998 19:19:30 PST
      From: Vern Paxson <vern>
      
      > The problem is that when I do this (using %option c++) start
      > conditions seem to not apply.
      
      The BEGIN macro modifies the yy_start variable.  For C scanners, this
      is a static with scope visible through the whole file.  For C++ scanners,
      it's a member variable, so it only has visible scope within a member
      function.  Your lexbegin() routine is not a member function when you
      build a C++ scanner, so it's not modifying the correct yy_start.  The
      diagnostic that indicates this is that you found you needed to add
      a declaration of yy_start in order to get your scanner to compile when
      using C++; instead, the correct fix is to make lexbegin() a member
      function (by deriving from yyFlexLexer).
      
      		Vern