Example #1
0
 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;
 }
Example #2
0
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;
}