371 token t(f_lexer.next_token());
372 if(t.
tok() == token_t::TOK_EOF)
385 case token_t::TOK_REGEX:
389 f_validators.push_back(v);
391 t = f_lexer.next_token();
395 case token_t::TOK_IDENTIFIER:
399 t = f_lexer.next_token();
400 if(t.
tok() == token_t::TOK_OPEN_PARENTHESIS)
402 t = f_lexer.next_token();
403 if(t.
tok() != token_t::TOK_CLOSE_PARENTHESIS)
407 if(t.
tok() == token_t::TOK_INVALID)
411 if(t.
tok() != token_t::TOK_IDENTIFIER
412 && t.
tok() != token_t::TOK_STRING
413 && t.
tok() != token_t::TOK_REGEX)
415 cppthread::log << cppthread::log_level_t::error
416 <<
"validator(): expected a regex, an identifier or a string inside the () of a parameter. Remaining input: \""
424 t = f_lexer.next_token();
425 if(t.
tok() == token_t::TOK_CLOSE_PARENTHESIS)
430 if(t.
tok() == token_t::TOK_EOF)
432 cppthread::log << cppthread::log_level_t::error
433 <<
"validator(): parameter list must end with ')'. Remaining input: \""
440 if(t.
tok() != token_t::TOK_COMMA)
442 if(t.
tok() == token_t::TOK_INVALID)
446 cppthread::log << cppthread::log_level_t::error
447 <<
"validator(): parameters must be separated by ','. Remaining input: \""
455 t = f_lexer.next_token();
457 while(t.
tok() == token_t::TOK_COMMA);
460 t = f_lexer.next_token();
463 f_validators.push_back(v);
468 if(t.
tok() != token_t::TOK_INVALID)
470 cppthread::log << cppthread::log_level_t::error
471 <<
"validator(): unexpected token in validator definition;"
472 " expected an identifier. Remaining input: \""
481 if(t.
tok() == token_t::TOK_EOF)
486 if(t.
tok() != token_t::TOK_OR)
488 if(t.
tok() != token_t::TOK_INVALID)
490 cppthread::log << cppthread::log_level_t::error
491 <<
"validator(): validator definitions must be separated by '|'. Remaining input: \""
499 t = f_lexer.next_token();
501 snapdev::NOT_REACHED();