1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
#include "cgi.ih"
size_t CGIFSA::wordToken()
{
d_buffer.clear();
while (islower(d_in.peek())) // read all lowercase chars
d_buffer += d_in.get();
if (!d_buffer.size()) // if none read, return the next char
return charToken();
// look for a character class name
PairCPPFunP const *ret =
find_if(
s_charClass, s_charClassEnd,
[&](PairCPPFunP const &cClass)
{
return d_buffer == cClass.first;
}
);
if (ret == s_charClassEnd) // no character class found
return static_cast<unsigned char>(*d_buffer.rbegin());
d_setIdx = ret - s_charClass; // charclass found
return SET; // return `set found'
}
|