本文整理汇总了C++中ScannerT::at_end方法的典型用法代码示例。如果您正苦于以下问题:C++ ScannerT::at_end方法的具体用法?C++ ScannerT::at_end怎么用?C++ ScannerT::at_end使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ScannerT
的用法示例。
在下文中一共展示了ScannerT::at_end方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: operator
int operator()(ScannerT const& scan, result_t& result) const {
if (scan.at_end()) {
return -1;
}
filePos = scan.first->filePos;
return 0;
}
示例2: find
search_info find(ScannerT const& scan) const
{
search_info result = { 0, 0 };
if (scan.at_end()) {
return result;
}
typedef typename ScannerT::iterator_t iterator_t;
node_ptr np = root;
CharT ch = *scan;
iterator_t latest = scan.first;
std::size_t length = 0;
while (np)
{
if (ch < np->value) // => go left!
{
np = np->left;
}
else if (ch == np->value) // => go middle!
{
++scan;
++length;
// Found a potential match.
if (np->data.get())
{
result.data = np->data.get();
result.length = length;
latest = scan.first;
}
if (scan.at_end()) break;
ch = *scan;
np = np->middle;
}
else // (ch > np->value) => go right!
{
np = np->right;
}
}
scan.first = latest;
return result;
}
示例3: operator
int
operator()(ScannerT const& scan, result_t& /*result*/) const
{
if (scan.at_end()) {
if (eol_msg) {
file_position fpos = scan.first.get_position();
cerr << fpos << eol_msg << endl;
}
} else {
if (msg) {
file_position fpos = scan.first.get_position();
cerr << fpos << msg << endl;
}
}
return -1; // Fail.
}
示例4: parse
typename ScannerT::match_t parse(ScannerT& scan) const
{
if(scan.at_end(scan))
{
return scan.no_match();
}
typename ScannerT::iter_t const tmp(scan.first);
typedef typename ScannerT::match_t match_t;
if(tester.test(*scan))
{
scan.advance();
return scan.create_match();
}
scan.first = tmp;
return scan.no_match();
}
示例5: parse
typename ScannerT::match_t parse(ScannerT& scan) const
{
if(scan.at_end(scan))
{
return scan.no_match();
}
typename ScannerT::iter_t tmp(scan.first);
typedef typename ScannerT::match_t match_t;
if(match_t ma = this->left().parse(scan))
{
if(match_t mb = this->right().parse(scan))
{
scan.concat_match(ma, mb);
return ma;
}
}
scan.first = tmp;
return scan.no_match();
}