本文整理汇总了C++中TokenT::get_position方法的典型用法代码示例。如果您正苦于以下问题:C++ TokenT::get_position方法的具体用法?C++ TokenT::get_position怎么用?C++ TokenT::get_position使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TokenT
的用法示例。
在下文中一共展示了TokenT::get_position方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parse
BOOST_WAVE_CHLITGRAMMAR_GEN_INLINE
unsigned int
chlit_grammar_gen<TokenT>::evaluate(TokenT const &token)
{
using namespace boost::spirit;
chlit_grammar g;
boost::uint32_t result = 0;
typename TokenT::string_type const &token_val = token.get_value();
parse_info<typename TokenT::string_type::const_iterator> hit =
parse(token_val.begin(), token_val.end(), g[spirit_assign_actor(result)]);
if (!hit.hit) {
BOOST_WAVE_THROW(preprocess_exception, ill_formed_character_literal,
token_val.c_str(), token.get_position());
}
else {
// range check
if ('L' == token_val[0]) {
// recognised wide character
if (g.overflow ||
result > (unsigned long)(std::numeric_limits<wchar_t>::max)())
{
// out of range
BOOST_WAVE_THROW(preprocess_exception,
character_literal_out_of_range,
token_val.c_str(), token.get_position());
}
}
else {
// recognised narrow ('normal') character
if (g.overflow ||
result > (unsigned long)(std::numeric_limits<unsigned char>::max)())
{
// out of range
BOOST_WAVE_THROW(preprocess_exception,
character_literal_out_of_range,
token_val.c_str(), token.get_position());
}
}
}
return result;
}
示例2: output
bool
expanding_object_like_macro(ContextT const& ctx,
TokenT const ¯odef, ContainerT const &definition,
TokenT const ¯ocall)
{
if (enabled_macro_counting())
count_invocation(macrodef.get_value().c_str());
if (!enabled_macro_tracing())
return false;
#endif
if (0 == get_level()) {
// output header line
BOOST_WAVE_OSSTREAM stream;
stream
<< macrocall.get_position() << ": "
<< macrocall.get_value() << std::endl;
output(BOOST_WAVE_GETSTRING(stream));
increment_level();
}
// output definition reference
{
BOOST_WAVE_OSSTREAM stream;
stream
<< macrodef.get_position() << ": see macro definition: "
<< macrodef.get_value() << std::endl;
output(BOOST_WAVE_GETSTRING(stream));
}
open_trace_body();
#if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS == 0
return false;
#endif
}
示例3: defined
void
detected_pragma_once(ContextT const& ctx, TokenT const& pragma_token,
std::string filename)
{
using boost::wave::util::impl::escape_lit;
#if defined(BOOST_WINDOWS)
filename = replace_slashes(filename);
#endif
BOOST_WAVETEST_OSSTREAM strm;
strm << "20: " << repr(pragma_token.get_position()) << ": "
<< pragma_token.get_value() << ": "
<< escape_lit(filename) << std::endl;
hooks_trace += BOOST_WAVETEST_GETSTRING(strm);
}
示例4: g
BOOST_WAVE_INTLITGRAMMAR_GEN_INLINE
uint_literal_type
intlit_grammar_gen<TokenT>::evaluate(TokenT const &token,
bool &is_unsigned)
{
using namespace boost::spirit::classic;
intlit_grammar g(is_unsigned);
uint_literal_type result = 0;
typename TokenT::string_type const &token_val = token.get_value();
parse_info<typename TokenT::string_type::const_iterator> hit =
parse(token_val.begin(), token_val.end(), g[spirit_assign_actor(result)]);
if (!hit.hit) {
BOOST_WAVE_THROW(preprocess_exception, ill_formed_integer_literal,
token_val.c_str(), token.get_position());
}
return result;
}