bool Read() { bool result = false; EatSpace(); if (index < length) { result = true; char c = Current(); if (IsAlpha(c) || c == '_') ParseIdentifier(); else if (IsDigit(c)) ParseIntegerLiteral(); else if (c == '"') ParseStringLiteral(); else if (c == '\'') ParseCodePointLiteral(); else if (IsSymbol(c)) ParseSymbols(); else result = false; } return result; }
static void ParseConfig (void) /* Parse the config file */ { static const IdentTok BlockNames [] = { { "MEMORY", CFGTOK_MEMORY }, { "FILES", CFGTOK_FILES }, { "SEGMENTS", CFGTOK_SEGMENTS }, { "FORMATS", CFGTOK_FORMATS }, { "FEATURES", CFGTOK_FEATURES }, { "SYMBOLS", CFGTOK_SYMBOLS }, }; cfgtok_t BlockTok; do { /* Read the block ident */ CfgSpecialToken (BlockNames, ENTRY_COUNT (BlockNames), "Block identifier"); BlockTok = CfgTok; CfgNextTok (); /* Expected a curly brace */ CfgConsume (CFGTOK_LCURLY, "`{' expected"); /* Read the block */ switch (BlockTok) { case CFGTOK_MEMORY: ParseMemory (); break; case CFGTOK_FILES: ParseFiles (); break; case CFGTOK_SEGMENTS: ParseSegments (); break; case CFGTOK_FORMATS: ParseFormats (); break; case CFGTOK_FEATURES: ParseFeatures (); break; case CFGTOK_SYMBOLS: ParseSymbols (); break; default: FAIL ("Unexpected block token"); } /* Skip closing brace */ CfgConsume (CFGTOK_RCURLY, "`}' expected"); } while (CfgTok != CFGTOK_EOF); }
bool RBSParseXML::ParseRBS(xml::XMLElement*elem,RuleBasedSystem*rbs) { core::stringc attrName; core::stringc elemName; xml::XMLAttribute*attr; bool isGlobal=false; attr=elem->getAttribute(mT("name")); if(attr){ rbs->SetName(attr->value); } attr=elem->getAttribute(mT("isglobal")); if(attr){ isGlobal= core::StringConverter::toBool(attr->value); } if(isGlobal){ RBSManager::getInstance().AddRBS(rbs); } xml::XMLElement* e; e=elem->getSubElement(mT("attachedrbs")); if(e){ ParseAttachedRBSs(e,rbs); } e=elem->getSubElement(mT("symbols")); if(!e){ gLogManager.log(mT("Couldn't find Symbols tag."),ELL_WARNING); }else { ParseSymbols(e,rbs); } e=elem->getSubElement(mT("rules")); if(!e){ gLogManager.log(mT("Couldn't find Rules tag."),ELL_WARNING); }else { ParseRules(e,rbs); } return true; }