[antlr-interest] Multiple lexers (c++ code gen.)

marcschellens m_schellens at hotmail.com
Thu Nov 20 07:08:23 PST 2003


Somehow the switch between two lexers seems not to work:

setup is like this:

    TokenStreamSelector selector;
    
    FMTLexer   lexer( istr);
    lexer.SetSelector( selector);
    
    CFMTLexer  cLexer( lexer.getInputState());
    cLexer.SetSelector( selector);

    lexer.SetCLexer( cLexer);

    selector.select( &lexer);

    FMTParser  parser( selector);

    parser.initializeASTFactory( FMTNodeFactory);
    parser.setASTFactory( &FMTNodeFactory );
   
    parser.format( 1);

And usage:

in FMTLexer (switch to CFMTLexer):

CSTRING!
	: 'c' '\"' { cLexer->DoubleQuotes( true); selector->push(cLexer);}
    | 'c' '\'' { cLexer->DoubleQuotes( false); selector->push( cLexer);}
	;	

cLexer is CFMTLexer* (private member in lexer).

Do I make an obvious mistake?
thanks,
marc

in CFMTLexer (switch back)

protected
ENDSTR1
    : ('\"') => '\"' 
    | { selector->pop();}
    ;






 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 




More information about the antlr-interest mailing list