Пример #1
0
void Semantics::setMatchMode(){

	Tokenizer tknzr = Tokenizer(this->ElementId,"-");
	this->ElementId = tknzr.nextToken();
	string str= tknzr.currToken();
	if(str.empty() || ((!isdigit(str[0])) && (str[0] != '-') && (str[0] != '+'))) this->MatchMode=false ;
   	char * p ;
   	strtol(str.c_str(), &p, 10) ;
   	this->MatchMode = (*p == 0) ;

   	while(tknzr.hasMoreTokens()){
   		this->SemanticsId = tknzr.nextToken();
   		break;
   	}
}
Пример #2
0
void Semantics::setGmshCommand(const string& Command){

	int nofTokens = 0;
	string Gcommand = "", essiTag="";
	Tokenizer inpString = Tokenizer(Command," {,;}()");
	nofTokens = inpString.countTokens()-1;
	this->NofGmshVariables = nofTokens-1;
	Gcommand = Gcommand + inpString.nextToken() + "{ ";
	essiTag = essiTag + inpString.currToken() + "{";
	
	for( int i=0 ;i<nofTokens-1; i++){

		string variable= this->delSpaces(inpString.nextToken());
		
		vector<string>::iterator it;
		it = find(this->VarList.begin(),this->VarList.end(),variable);
		
		if (it != this->VarList.end()) 
 			*it = "variable";

		Gcommand = Gcommand +variable+" ,";
		essiTag = essiTag + " ,";
	}

	string variable= this->delSpaces(inpString.nextToken());

	if(variable.compare("")){
		this->NofGmshVariables++;
	}

	vector<string>::iterator it;
	it = find(this->VarList.begin(),this->VarList.end(),variable);
	if (it != this->VarList.end()) 
 		*it = "variable";
 	
	Gcommand = Gcommand +variable + " }";
	essiTag = essiTag + " }"+to_string(this->NofGmshVariables);
	
	// cout << Gcommand << endl;
	// cout << essiTag << endl;
	this->GmshCommand= Gcommand;
	this->setEssiTag(essiTag);

}
Пример #3
0
void Mapping::mapFile() {

    fstream mapFile(this->FileName, fstream::in);
    string line;

    while(getline(mapFile,line)) {

        Tokenizer str = Tokenizer(line,"#  \t\v\n\r\f");
        if(!delSpaces(str.nextToken()).compare("ELEMENT_ID"))
            break;
    }

    while(getline(mapFile,line)) {

        string strLine = delSpaces(line);
        Tokenizer str = Tokenizer(line,"#  \t\v\n\r\f\"");

        if(!str.nextToken().compare("ENDELEMENT_ID"))
            break;
        if(!str.currToken().substr(0,2).compare("//"))
            continue;
        if(delSpaces(str.currToken()).length()==0)
            continue;

        string elementDes="";
        string elementId = "";

        elementId = elementId + str.currToken();
        elementDes= elementDes + str.nextToken();
        str.setDelimiter("\"");
        elementDes= elementDes + str.nextToken();

        this->ElementMap.insert(pair<string,string>(elementId,elementDes));
    }

    while(getline(mapFile,line)) {

        Tokenizer str = Tokenizer(line,"#  \t\v\n\r\f");
        if(!delSpaces(str.nextToken()).compare("ESSI_TAGS"))
            break;
    }

    while(getline(mapFile,line)) {

        Tokenizer str = Tokenizer(line,"#  \t\v\n\r\f");
        if(!delSpaces(str.nextToken()).compare("ENDESSI_TAGS"))
            break;
        if(!delSpaces(str.currToken()).substr(0,2).compare("//"))
            continue;
        if(delSpaces(str.currToken()).length()==0)
            continue;

        this->EssiTagList.insert(str.currToken());
    }

    while(getline(mapFile,line)) {

        string Id, GmshCommandList, EssiCommand="";
        Tokenizer str = Tokenizer(line,"!  \t\v\n\r\f");

        if(!delSpaces(str.nextToken()).substr(0,2).compare("//"))
            continue;
        if(delSpaces(str.currToken()).length()==0)
            continue;

        Id = str.currToken();
        str.setDelimiter("<>");

        if(delSpaces(str.nextToken()).length()==0)
            GmshCommandList = delSpaces(str.nextToken());
        else
            GmshCommandList = delSpaces(str.currToken());

        str.setDelimiter("  \t\v\n\r\f");

        EssiCommand= EssiCommand + delSpaces(str.nextToken())+" ";
        str.setDelimiter("<>");
        EssiCommand= EssiCommand + str.nextToken();

        this->makeFunction(Id, GmshCommandList,EssiCommand);
    }

    mapFile.close();
}
Пример #4
0
void Semantics::setEssiCommand(const string& Command){

	int nofTokens = 0;
	Tokenizer inpString = Tokenizer(Command," ") ;
	string Ecommand = "";
	string Fcommand = ""; // Filtered Command with spaces

	while( inpString.hasMoreTokens()){
		Fcommand = Fcommand + inpString.nextToken()+" ";
	}

	inpString.set(Fcommand,"{}");
	nofTokens = inpString.countTokens()-1;

	string prevTag = "variable";

	while(inpString.hasMoreTokens() && nofTokens-->0){

		string variable;
		Tokenizer Var = Tokenizer(inpString.nextToken(),"#()= ,");

		if(!(inpString.currToken()).compare(";")) break;                        // Termination Condition with ";"
		if((inpString.currToken()).back()=='\\'){							   // Escape sequence "\\"
			Ecommand = Ecommand + inpString.currToken().substr(0,inpString.currToken().length()-1) +Fcommand.substr(inpString.currIndex()-1,1);
			continue;					   
		}

		Ecommand = Ecommand + inpString.currToken() + "$";

		Var.setMode(1);
		Var.setcurrPos(inpString.currToken().length()-1);
		string currTag = (Var.nextToken());

		if (currTag.length()<=1)
			variable = prevTag; 		
		else{
			variable = currTag;
			prevTag= currTag;
		}

		set<string>::iterator it = this->EssiTagList.find(variable);
		if (it != this->EssiTagList.end()) {

			map<string,int>::iterator it = this->TagList.find(variable);

			if (it != this->TagList.end()){
				it->second=it->second+1;
				variable = variable + "#" +to_string(it->second);
			}
			else{
				this->TagList.insert(pair<string,int>(variable,1));
				variable = variable + "#1";
			}

			this->NofTagVariables++;
		}

		this->VarList.push_back(variable);
		this->EssiVarList.push_back(variable);
		// inpString.setDelimiter("{}#()=");
	}

	Ecommand = Ecommand+inpString.nextToken();

	this->EssiCommand = Ecommand;

	this->NofEssiVariables = this->VarList.size();
}