Opened 10 years ago
#7822 new Bugs
waveidl sample does not use the IDL lexer, but the default lexer
Reported by: | Owned by: | Hartmut Kaiser | |
---|---|---|---|
Milestone: | To Be Determined | Component: | wave |
Version: | Boost 1.52.0 | Severity: | Problem |
Keywords: | waveidl, sample | Cc: |
Description
Dear Boost developpers,
The waveidl sample from the wave lib does not use the included IDL lexer. Instead it uses the default cpp lexer. This can be easily tested by setting a breakpoint in the scan function in idl_re.cpp. The reason is that it is explicitly set up like this in the lex_iterator constructor. The #if 0 branch below is the original code, the #else branch is modified to use the IDL lexer.
template <typename IteratorT> lex_iterator(IteratorT const &first, IteratorT const &last,
typename TokenT::position_type const &pos, boost::wave::language_support language)
: base_type(
functor_data_type(
unique_functor_type(),
#if 0
cpplexer::lex_input_interface_generator<TokenT>
::new_lexer(first, last, pos, language)
#else
boost::wave::idllexer::new_lexer_gen< std::string::iterator>::new_lexer( first, last, pos, language )
#endif
)
)
{}
Now if I do the above modification, the preprocessor stops after the first include file with this warning:
"warning: last line of file ends without a newline"
Somehow the function which checks if there is a return from an include always returns false.
Btw.: What I want to achieve is a preprocessor for Verilog-A, which is a simplified variant of a C preprocessor with ` instaed of #. It should be easy, but I cannot get it to work.
Thanks & best regards,
Michael