本文整理汇总了C++中TokenStream::atEof方法的典型用法代码示例。如果您正苦于以下问题:C++ TokenStream::atEof方法的具体用法?C++ TokenStream::atEof怎么用?C++ TokenStream::atEof使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TokenStream
的用法示例。
在下文中一共展示了TokenStream::atEof方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SyntaxError
SAWYER_EXPORT std::string
Grammar::evalArgument(TokenStream &tokens, ErrorLocation &eloc, bool requireRight) const {
std::string retval, data;
size_t depth = 0;
while (!tokens.atEof()) {
if (tokens.isa(TOK_LEFT)) {
++depth;
retval += tokens.lexeme();
tokens.consume();
} else if (tokens.isa(TOK_RIGHT)) {
if (0 == depth)
break;
--depth;
retval += tokens.lexeme();
tokens.consume();
} else if (tokens.isa(TOK_FUNCTION)) {
retval += evalFunction(tokens, eloc);
} else {
retval += tokens.lexeme();
tokens.consume();
}
}
if (requireRight) {
if (!tokens.isa(TOK_RIGHT))
throw SyntaxError("end-of-argument expected");
tokens.consume();
}
if (depth > 0)
throw SyntaxError("expected end-of-argument marker");
return retval;
}