Esempio n. 1
0
DisplayString::DisplayString(const QString & raw)
{
  _disp = Qt::escape(raw);

  // Match any CSPM open or close bracket. This is a little unclear here because
  // of all the backslashes, but matches (, [, [|, [[, [+, /+, { and their respective
  // closing brackets. |> also counts as a closing bracket ("[|a|>" is CSPM for
  // exception on events a). [> is also matched, and is a special case: neither
  // opening nor closing.
  QRegExp brackets(
    "(\\(|\\[>|\\[[\\[|+]?|/\\+|\\{|\\}|\\+\\\\|[\\]|+]?\\]|\\)|\\|>)");
  QStringList open;
  open << "(" << "[" << "{" << "[[" << "[|" << "[+" << "/+";
  QString span("<span class=\"brac%1\">%2</span>");
  int i = 0;
  int level = 0;
  while ((i = brackets.indexIn(_disp, i)) != -1)
  {
    QString m = brackets.capturedTexts()[0];
    bool isOpen = open.contains(m);
    if (!isOpen && m != "[&gt;") level--;

    _disp.replace(i, brackets.matchedLength(), span.arg(QString::number(level % 6), m));
    i += 27 + brackets.matchedLength(); // Length of QString span after args are replaced.

    if (isOpen) level++;
  }

  _disp.prepend(stylesheet);
}
Esempio n. 2
0
int main(int argc, char* argv[])
{
	if ( argc > 1)
	{
		std::string brackets( argv[1] );
		if ( checkBrackets(brackets) )
		{
			std::cout << "Check passed" << std::endl;
		}
		else
		{
			std::cout << "Check failed" << std::endl;
		}
	}

	return 0;
}
Esempio n. 3
0
// File Methods
bool IniReader::readFromFile(const std::string &filename)
{
	std::string line;
	std::ifstream file(filename);
	std::regex brackets("\\[.*\\]");
	std::string currentSection;

	if(file)
	{
		while(std::getline(file, line))
		{
			if(std::regex_match(line, brackets))
			{
				currentSection = line.substr(1, line.size()-2);
			}
			else if(!currentSection.empty())
			{
				std::vector<std::string> result = splitLine(line, '=');

				if(result.size() == 2)
				{
					iniContainer[currentSection][result[0]] = result[1];
				}
				else
				{
					// invalid entry
				}
			}
			else
			{
				// ini doesn't start with a section
			}
		}

		file.close();
		return true;
	}
	else
	{
		// file doesn't exist
		return false;
	}
}
Intervall parse(string input){
    Intervall result = Intervall(NAN);
    //string term((inputIntervall->text()).toStdString());
    string term=clearString(input);//Leerzeichen in term löschen
    if(term!=""){
        if(validChars(term)==false){//Überprüfung, ob term ungültige Zeichen enthält
            errorWindow("Nonvalid character!");
            return Intervall(NAN);
        }else if(brackets(term)==false){//Überprüfung, ob die Anzahl von "(" mit ")" in term übereinstimmt
            errorWindow("Can't match delimiters!");
            return Intervall(NAN);
        }else if(intervalBrackets(term)==false){//Überprüfung, ob die Anzahl von "[" mit "]" in term übereinstimmt
            errorWindow("Can't match interval delimiters!");
            return Intervall(NAN);
        }else {
            result=parseTermOfIntervals(term);//term parsen -> result
        }
    }
    return result;

}
int Funktion::parseFunction(string func){
    string::iterator it;
    func = clearString(func);
    func = multiplicationSign(func);
    if(func=="")
        return 0;
    if(brackets(func)==false){
        return 1;
    }
    if(Funktion::validChars(func)==false){
        return 2;
    }
    int brackets = 0;
    for(int i=0;i<2;i++){
        for(it=func.end();it>=func.begin();it--){
            if(*it=='(')
                brackets--;
            if(*it==')')
                brackets++;
            if(*it==binaryFunction[i].at(0) && brackets==0 && *(it-1)!='/' && *(it-1)!='*' && *(it-1)!='-' && *(it-1)!='+'){
                Funktion a;
                Funktion b;
                if(it==func.begin()){
                    string funca(it+1,func.end());
                    int retVal = a.parseFunction(funca);
                    if(retVal==0){
                        function->insert(function,i,"");
                        function->insertTree(function->right,a.getFunction());
                    }
                    return retVal;
                }
                else if(it==func.end()){
                    return 3;
                }
                else{
                    string funca(func.begin(),it);
                    string funcb(it+1,func.end());
                    int retVal1 = a.parseFunction(funca);
                    int retVal2 = b.parseFunction(funcb);
                    if(retVal1==0 && retVal2==0){
                        function->insert(function,i,"");
                        function->insertTree(function->left,a.getFunction());
                        function->insertTree(function->right,b.getFunction());
                        return 0;
                    }
                    if(retVal1==0)
                        return retVal2;
                    if(retVal2==0)
                        return retVal1;
                    return -1;
                }
            }
        }
    }
    for(int i=2;i<sizeof(binaryFunction)/sizeof(binaryFunction[0]);i++){
        for(it=func.end();it>=func.begin();it--){
            if(*it=='(')
                brackets--;
            if(*it==')')
                brackets++;
            if(*it==binaryFunction[i].at(0) && brackets==0){
                Funktion a;
                Funktion b;
                if(it==func.begin()){
                    return 3;
                }
                else if(it==func.end()){
                    return 3;
                }
                else{
                    string funca(func.begin(),it);
                    string funcb(it+1,func.end());
                    int retVal1 = a.parseFunction(funca);
                    int retVal2 = b.parseFunction(funcb);
                    if(retVal1==0 && retVal2==0){
                        function->insert(function,i,"");
                        function->insertTree(function->left,a.getFunction());
                        function->insertTree(function->right,b.getFunction());
                        return 0;
                    }
                    if(retVal1==0)
                        return retVal2;
                    if(retVal2==0)
                        return retVal1;
                    return -1;
                }
            }
        }
    }
    it = func.begin();
    for(int i=0;i<sizeof(unaryFunction)/sizeof(unaryFunction[0]);i++){
        if(string(it,it+unaryFunction[i].length())==unaryFunction[i] && brackets==0){
            Funktion a;
            string funca(func,unaryFunction[i].length());
            int retVal = a.parseFunction(funca);
            if(retVal==0){
                function->insert(function,i+sizeof(binaryFunction)/sizeof(binaryFunction[0]),"");
                function->insertTree(function->left,a.getFunction());
            }
            return retVal;
        }
    }
    if(*it=='('){
        Funktion a;
        string funca(func.begin()+1,func.end()-1);
        int retVal = a.parseFunction(funca);
        if(retVal==0)
            function->insertTree(function,a.getFunction());
        return retVal;
    }
    if(*it=='x'){
        function->insert(function,-4,"x");
        return 0;
    }
    function->insert(function,-3,func);
    return 0;
}