本文整理汇总了C++中skipWhitespace函数的典型用法代码示例。如果您正苦于以下问题:C++ skipWhitespace函数的具体用法?C++ skipWhitespace怎么用?C++ skipWhitespace使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了skipWhitespace函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: parseFile
void
parseFile(FILE *file)
{
char *line, c;
int len, lineNumber;
line = malloc(MAXLINE+1);
lineNumber = 1;
skipWhitespace(file);
while (!feof(file)) {
c = peekf(file);
if (c == '#' || c == '/') {
len = getLineThru(file, line, '\n', MAXLINE);
if (c == '#')
fprintf(ofile, line);
} else {
len = getLineThru(file, line, ';', MAXLINE);
parseLine(line);
}
skipWhitespace(file);
}
free(line);
}
开发者ID:aosm,项目名称:boot,代码行数:25,代码来源:sig.c
示例2: name
/**
* Throws: std::invalid_argument upon invalid argument
* and other std::exceptions's from string methods.
*/
Http::Cookie::Cookie(const char *cookieStr)
: name(), value()
{
const char *ptr;
bool parsed = false;
ptr = cookieStr;
while (isToken(*ptr)) {
ptr += 1;
}
if (ptr > cookieStr) {
name.append(cookieStr, ptr - cookieStr);
ptr = skipWhitespace(ptr);
if ('=' == *ptr) {
const char *startPtr;
ptr = skipWhitespace(ptr + 1);
startPtr = ptr;
while (*ptr && ';' != *ptr) {
ptr += 1;
}
if (ptr > startPtr) {
value.append(startPtr, ptr - startPtr);
parsed = true;
}
}
}
if (! parsed) {
throw std::invalid_argument(cookieStr);
}
}
开发者ID:JonathanFu,项目名称:OpenAM-1,代码行数:37,代码来源:http.cpp
示例3: skipWhitespace
bool CssParser::parseBlock (TokenList* tokens) {
if (tokenizer->getTokenType() != Token::BRACKET_OPEN)
return false;
tokens->push(tokenizer->getToken()->clone());
tokenizer->readNextToken();
skipWhitespace();
while (true) {
if (!(parseAny(tokens) || parseBlock(tokens))) {
if (tokenizer->getTokenType() == Token::ATKEYWORD) {
tokens->push(tokenizer->getToken()->clone());
tokenizer->readNextToken();
parseWhitespace(tokens);
} else if (tokenizer->getTokenType() == Token::DELIMITER) {
tokens->push(tokenizer->getToken()->clone());
tokenizer->readNextToken();
skipWhitespace();
} else
break;
}
}
if (tokenizer->getTokenType() != Token::BRACKET_CLOSED) {
throw new ParseException(tokenizer->getToken()->str,
"end of block ('}')");
}
tokens->push(tokenizer->getToken()->clone());
tokenizer->readNextToken();
skipWhitespace();
return true;
}
开发者ID:smalyshev,项目名称:clessc,代码行数:32,代码来源:CssParser.cpp
示例4: skipWhitespace
ObjectPtr Object::fromJson(std::istream& is) {
int next_ch = skipWhitespace(is);
if (next_ch == -1)
throw runtime_error(
"JsonXObject::read(): Premature end of file");
if (next_ch != '{')
throw runtime_error(
"Character '{' expected. Got: '" +
to_string(static_cast<char>(next_ch)) + "'");
unique_ptr<ObjectValue> pv{ new ObjectValue() };
readChar(is);;
next_ch = skipWhitespace(is);
if (next_ch != '}') {
while (true) {
string key{ String::fromJsonRaw(is) };
next_ch = skipWhitespace(is);
if (next_ch != ':')
throw runtime_error(
"Expected ':'. Got: '" +
to_string(static_cast<char>(next_ch)) + "'");
readChar(is);
pv.get()->push_back(ObjectEntry{ key, Value::fromJson(is) });
next_ch = skipWhitespace(is);
if (next_ch == '}')
break;
if (next_ch != ',')
throw runtime_error(
"Expected ',' or '}'. Got: '" +
to_string(static_cast<char>(next_ch)) + "'");
readChar(is);
} // end while //
}
readChar(is);
return Object::make(pv);
}
开发者ID:df9ry,项目名称:libJsonX,代码行数:35,代码来源:Deserialize.cpp
示例5: skipWhitespace
bool LessParser::parseVariable (TokenList &value) {
if (tokenizer->getTokenType() != Token::COLON)
return false;
tokenizer->readNextToken();
skipWhitespace();
if (parseValue(value) == false || value.size() == 0) {
throw new ParseException(tokenizer->getToken(),
"value for variable",
tokenizer->getLineNumber(),
tokenizer->getColumn(),
tokenizer->getSource());
}
if (tokenizer->getTokenType() != Token::DELIMITER) {
throw new ParseException(tokenizer->getToken(),
"delimiter (';') at end of @-rule",
tokenizer->getLineNumber(),
tokenizer->getColumn(),
tokenizer->getSource());
}
tokenizer->readNextToken();
skipWhitespace();
return true;
}
开发者ID:trav-c,项目名称:clessc,代码行数:26,代码来源:LessParser.cpp
示例6: skipWhitespace
/**
* Checks if the cursor is at a valid type cast expression, after encountering
* a left parenthesis. If it is, determine the signedness and bit width of the
* type cast. If not, move the cursor back to the left parenthesis.
*
* @param[out] isSigned: the signedness of the resulting typecast
* @param[out] bitWidth: the bit width of the resulting typecast
*
* @return: if the typecast expression is valid
*/
bool
MacroScanner::validTypeCast(bool *isSigned, size_t *bitWidth)
{
char const *const savedCursor = _cursor;
if (!atSymbol(LPAREN)) {
return false;
}
skipWhitespace();
const char *start = _cursor;
const char *end = start;
while (isalpha(*_cursor)) {
do {
_cursor += 1;
} while (('_' == *_cursor) || isalnum(*_cursor));
end = _cursor;
skipWhitespace();
}
if (!atSymbol(RPAREN)) {
_cursor = savedCursor;
return false;
}
return Type::isStandardType(start, (size_t)(end - start), isSigned, bitWidth);
}
开发者ID:LinHu2016,项目名称:omr,代码行数:41,代码来源:Macro.cpp
示例7: parser
byte parser(
char *message,
byte length,
bytecode_t *bytecode) {
byte errorCode = 0;
byte position = 0;
skipWhitespace(message, length, & position);
command_t *command;
errorCode = parseCommand(message, length, & position, & command);
if (errorCode == 0) {
skipWhitespace(message, length, & position);
errorCode =
(command->parser)(message, length, & position, command, bytecode);
if (errorCode == 0) {
skipWhitespace(message, length, & position);
}
}
return(errorCode);
}
开发者ID:dunk8888,项目名称:Cube4,代码行数:27,代码来源:parser.cpp
示例8: parseCommandSphere
byte parseCommandSphere(
char *message,
byte length,
byte *position,
command_t *command,
bytecode_t *bytecode) {
byte positionX1;
byte positionY1;
byte positionZ1;
byte size;
byte errorCode = 0;
bytecode->executer = command->executer;
skipWhitespace(message, length, position);
errorCode = parsePosition(message, length, position, & positionX1, & positionY1, & positionZ1);
skipWhitespace(message, length, position);
errorCode = parseOffset(message, length, position, & size);
skipWhitespace(message, length, position);
errorCode = parseRGB(message, length, position, & bytecode->u.lit.colorFrom);
skipWhitespace(message, length, position);
errorCode = parseRGB(message, length, position, & bytecode->u.lit.colorTo);
if (errorCode) {
errorCode = 0;
bytecode->u.lit.colorTo = BLACK;
}
if (errorCode == 0) cubeSphere( positionX1, positionY1, positionZ1, size, bytecode->u.lit.colorFrom, bytecode->u.lit.colorTo);
return(errorCode);
};
开发者ID:dunk8888,项目名称:Cube4,代码行数:31,代码来源:parser.cpp
示例9: parseCommandMoveplane
byte parseCommandMoveplane(
char *message,
byte length,
byte *position,
command_t *command,
bytecode_t *bytecode) {
byte axis;
byte offset;
byte destination;
rgb_t rgb;
byte errorCode = 0;
bytecode->executer = command->executer;
skipWhitespace(message, length, position);
errorCode = parseAxis(message, length, position, & axis);
skipWhitespace(message, length, position);
errorCode = parseOffset(message, length, position, & offset);
skipWhitespace(message, length, position);
errorCode = parseOffset(message, length, position, & destination);
skipWhitespace(message, length, position);
errorCode = parseRGB(message, length, position, & rgb);
if (errorCode == 0) cubeMoveplane(axis, offset, destination, rgb);
return(errorCode);
};
开发者ID:dunk8888,项目名称:Cube4,代码行数:27,代码来源:parser.cpp
示例10: parseCommandLine
byte parseCommandLine(
char *message,
byte length,
byte *position,
command_t *command,
bytecode_t *bytecode) {
byte positionX1;
byte positionY1;
byte positionZ1;
byte positionX2;
byte positionY2;
byte positionZ2;
byte errorCode = 0;
bytecode->executer = command->executer;
skipWhitespace(message, length, position);
errorCode = parsePosition(message, length, position, & positionX1, & positionY1, & positionZ1);
skipWhitespace(message, length, position);
errorCode = parsePosition(message, length, position, & positionX2, & positionY2, & positionZ2);
skipWhitespace(message, length, position);
errorCode = parseRGB(message, length, position, & bytecode->u.lit.colorFrom);
if (errorCode == 0) cubeLine( positionX1, positionY1, positionZ1, positionX2, positionY2, positionZ2, bytecode->u.lit.colorFrom);
return(errorCode);
};
开发者ID:dunk8888,项目名称:Cube4,代码行数:27,代码来源:parser.cpp
示例11: skipWhitespace
int Parser::getNextToken()
{
int saveIndex = m_index;
skipWhitespace();
if (isdigit(nextChar())) {
// At this point we know that there is a valid number in the
// string. The only question now, is whether it is an int or a
// float.
parseInt(&m_intVal);
skipWhitespace();
if (nextChar() == '.') {
m_index = saveIndex;
// No need to check since we already know it is correct.
(void) parseSimpleFloat(&m_floatVal);
m_nextToken = FLOAT_TOKEN;
} else {
m_nextToken = INT_TOKEN;
}
} else if (nextChar() != -1) {
// Any character.
m_nextToken = nextChar();
getNextChar();
} else {
// End of string.
m_nextToken = -1;
}
return m_nextToken;
}
开发者ID:Anumittal,项目名称:Kalzium,代码行数:33,代码来源:parser.cpp
示例12: skipWhitespace
void InText::readString(std::string& value, PhysicalInStream& stream)
{
value = "";
skipWhitespace(stream);
bool containsSpaces = theChar == '"';
if(containsSpaces && !isEof(stream))
nextChar(stream);
while(!isEof(stream) && (containsSpaces || !isWhitespace()) && (!containsSpaces || theChar != '"'))
{
if(theChar == '\\')
{
nextChar(stream);
if(theChar == 'n')
theChar = '\n';
else if(theChar == 'r')
theChar = '\r';
else if(theChar == 't')
theChar = '\t';
}
value += theChar;
if(!isEof(stream))
nextChar(stream);
}
if(containsSpaces && !isEof(stream))
nextChar(stream);
skipWhitespace(stream);
}
开发者ID:Yanzqing,项目名称:BHumanCodeRelease,代码行数:27,代码来源:InStreams.cpp
示例13: SCPI_Input
/**
* Interface to the application. Adds data to system buffer and try to search
* command line termination. If the termination is found or if len=0, command
* parser is called.
*
* @param context
* @param data - data to process
* @param len - length of data
* @return
*/
int SCPI_Input(scpi_t * context, const char * data, size_t len) {
int result = 0;
const char * cmd_term;
if (len == 0) {
context->buffer.data[context->buffer.position] = 0;
result = SCPI_Parse(context, context->buffer.data, context->buffer.position);
context->buffer.position = 0;
} else {
size_t buffer_free;
int ws;
buffer_free = context->buffer.length - context->buffer.position;
if (len > (buffer_free - 1)) {
return -1;
}
memcpy(&context->buffer.data[context->buffer.position], data, len);
context->buffer.position += len;
context->buffer.data[context->buffer.position] = 0;
ws = skipWhitespace(context->buffer.data, context->buffer.position);
cmd_term = cmdlineTerminator(context->buffer.data + ws, context->buffer.position - ws);
while (cmd_term != NULL) {
int curr_len = cmd_term - context->buffer.data;
result = SCPI_Parse(context, context->buffer.data + ws, curr_len - ws);
memmove(context->buffer.data, cmd_term, context->buffer.position - curr_len);
context->buffer.position -= curr_len;
ws = skipWhitespace(context->buffer.data, context->buffer.position);
cmd_term = cmdlineTerminator(context->buffer.data + ws, context->buffer.position - ws);
}
}
return result;
}
开发者ID:WCP52,项目名称:gpha,代码行数:43,代码来源:parser.c
示例14: findProxyClient
AtomListPtr
findProxyClient(char *line)
{
AtomListPtr alv;
AtomPtr name, value;
int i=0;
alv = makeAtomList(NULL, 0);
if(alv == NULL) {
do_log(L_ERROR, "couldn't allocate atom list.\n");
return NULL;
}
while(1) {
i = parseAtom1(line, i, &value,1);
//if(i < 0) goto syntax;
if(!value) {
do_log(L_ERROR, "couldn't allocate atom.\n");
return NULL;
}
//printf("%s\n",value->string);
atomListCons(value, alv);
i = skipWhitespace(line, i);
if(line[i] == '\n' || line[i] == '\0' || line[i] == '#')
break;
if(line[i] != ',') {
destroyAtomList(alv);
//goto syntax;
}
i = skipWhitespace(line, i + 1);
}
return alv;
}
开发者ID:bigbadnad,项目名称:socialproxy,代码行数:31,代码来源:social.c
示例15: skipWhitespace
bool ValueProcessor::validateCondition(const TokenList &value,
const ValueScope &scope,
bool defaultVal) const {
TokenList::const_iterator i = value.begin();
TokenList::const_iterator end = value.end();
bool negate = false;
bool ret;
skipWhitespace(i, end);
if (*i == "not") {
negate = true;
i++;
}
ret = validateValue(i, end, scope, defaultVal);
skipWhitespace(i, end);
while (ret == true && i != value.end() && *i == "and") {
i++;
skipWhitespace(i, end);
ret = validateValue(i, end, scope, defaultVal);
skipWhitespace(i, end);
}
return negate ? !ret : ret;
}
开发者ID:BramvdKroef,项目名称:clessc,代码行数:31,代码来源:ValueProcessor.cpp
示例16: next
Dictionary<Base, Base> *Reader::parseObject()
{
next(); // {
auto object = make<Dictionary<Base, Base>>();
while (this->more() && current() != kObjectEnd) {
skipWhitespace();
auto key = parseExpression();
skipWhitespace();
if(current() == kObjectKeyValueSeparator) {
next();
skipWhitespace();
} else {
fail(String::Builder() << "expected ':', got '" << current() << "'.");
}
auto value = parseExpression();
object->set(key, value);
skipWhitespace();
if(current() == kStatementSeparator)
next();
skipWhitespace();
}
requireCondition(more(), str("expected '}', got end of file."));
requireCondition(current() == kObjectEnd, (String::Builder() << "expected '}', got '" << current() << "'."));
next(); // }
return object;
}
开发者ID:decarbonization,项目名称:gfx,代码行数:35,代码来源:json.cpp
示例17: skipWhitespace
std::string Context::getCommand(bool skipNewlines) {
const char * esdat = script->data;
skipWhitespace(skipNewlines);
std::string word;
// now take chars until it finds a space or unused char
for(; pos != script->size && !isWhitespace(esdat[pos]); pos++) {
char c = esdat[pos];
if(c == '"') {
ScriptParserWarning << "unexpected '\"' in command name";
} else if(c == '~') {
ScriptParserWarning << "unexpected '~' in command name";
} else if(c == '\n') {
break;
} else if(c == '/' && pos + 1 != script->size && esdat[pos + 1] == '/') {
pos = std::find(esdat + pos + 2, esdat + script->size, '\n') - esdat;
if(!word.empty()) {
break;
}
skipWhitespace(skipNewlines), pos--;
} else {
word.push_back(c);
}
}
return word;
}
开发者ID:nemyax,项目名称:ArxLibertatis,代码行数:31,代码来源:ScriptUtils.cpp
示例18: skipWhitespace
/** Reads XML tags from an input file. */
void Parser::parse() {
Tag tag;
// Read and process tags
tags.clear();
skipWhitespace();
try {
while (file) {
if (character != '<') {
throw BasicException("[Parser] Tags must start with '<'.");
} else if (match("<!--")) {
skip("-->");
} else {
tag = create(findTag());
tag.setFilename(filename);
tag.setLine(lineNumber);
tags.push_back(tag);
}
skipWhitespace();
}
file.close();
} catch (BasicException e) {
file.close();
BasicException ex;
ex << Tag::toLocation(filename, lineNumber) << e.what();
throw ex;
}
}
开发者ID:adbrown85,项目名称:edo-old,代码行数:30,代码来源:Parser.cpp
示例19: Settings_Load
// ---------------------------------------------------------------------------
int Settings_Load(char* file) {
if(settings != NULL) Settings_Unload();
settings = (SettingsFile*)malloc(sizeof(SettingsFile));
settings->category = NULL;
settings->cats = 0;
FILE* f = fopen(file, "r");
if(f == NULL) return 0;
char buffer[256];
char* line;
int current_cat = -1;
while(fgets(buffer, 256, f) != NULL) {
line = trim(&buffer[0]);
if(strlen(line) == 0) continue; // blank line
if(line[0] == '#') continue; // just a comment
// new category
if(line[0] == '[') {
line++;
line[strlen(line) - 1] = 0;
char* cat_name = (char*)malloc(sizeof(char) * (1 + strlen(line)));
strcpy(cat_name, line);
addCategory(cat_name);
current_cat = settings->cats - 1;
//printf("Cat: %s\r\n", line);
}
// new value
else {
// value without category -> error
if(current_cat == -1) {
fclose(f);
return 0;
}
// get key and value
char* ptr = strtok(line, "=");
if(ptr == NULL) {
fclose(f);
return 0;
}
ptr = skipWhitespace(ptr);
char* key = (char*)malloc(sizeof(char) * (1 + strlen(ptr)));
strcpy(key, ptr);
key = trim(key);
ptr = strtok(NULL, "\1");
//ptr += strlen(ptr) + 1;
if(ptr == NULL) {
fclose(f);
return 0;
}
ptr = skipWhitespace(ptr);
char* value = (char*)malloc(sizeof(char) * (1 + strlen(ptr)));
strcpy(value, ptr);
value = trim(value);
addValue(current_cat, key, value);
printf(" -> %s: %s\r\n", key, value);
}
}
fclose(f);
return 1;
}
开发者ID:An00bIS47,项目名称:gbMon2,代码行数:59,代码来源:settings.c
示例20: switch
bool CssParser::parseAny (TokenList* tokens) {
switch(tokenizer->getTokenType()) {
case Token::NUMBER:
case Token::PERCENTAGE:
case Token::DIMENSION:
case Token::STRING:
case Token::URL:
case Token::HASH:
case Token::UNICODE_RANGE:
case Token::INCLUDES:
case Token::DASHMATCH:
case Token::COLON:
case Token::OTHER:
tokens->push(tokenizer->getToken()->clone());
tokenizer->readNextToken();
break;
case Token::PAREN_OPEN:
tokens->push(tokenizer->getToken()->clone());
tokenizer->readNextToken();
skipWhitespace();
while (parseAny(tokens) || parseUnused(tokens)) {}
if (tokenizer->getTokenType() != Token::PAREN_CLOSED) {
throw new ParseException(tokenizer->getToken()->str,
"closing parenthesis (')')");
}
tokens->push(tokenizer->getToken()->clone());
tokenizer->readNextToken();
break;
case Token::IDENTIFIER:
tokens->push(tokenizer->getToken()->clone());
tokenizer->readNextToken();
break;
case Token::BRACE_OPEN:
tokens->push(tokenizer->getToken()->clone());
tokenizer->readNextToken();
skipWhitespace();
while (parseAny(tokens) || parseUnused(tokens)) {}
if (tokenizer->getTokenType() != Token::BRACE_CLOSED) {
throw new ParseException(tokenizer->getToken()->str,
"closing brace (']')");
}
tokens->push(tokenizer->getToken()->clone());
tokenizer->readNextToken();
break;
default:
return false;
}
parseWhitespace(tokens);
return true;
}
开发者ID:smalyshev,项目名称:clessc,代码行数:56,代码来源:CssParser.cpp
注:本文中的skipWhitespace函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论