示例#1
0
void parameterlist(void){
	parameter();
	if(lookahead == ','){	
		match(',');
		parameterlist();
	}
}
示例#2
0
QList<LibraryElementInfo> SGLMathLib::libraryMembersInfo() const
{
	QString code = libCode();
	QList<LibraryElementInfo> res;
	int index = 0;
	QRegExp parameter("\\w*");
	QRegExp parameterlist(parameter.pattern() + "(\\s*,\\s*" + parameter.pattern() + ")*");
	QRegExp namespacelist(parameter.pattern() + "(\\s*\\.\\s*" + parameter.pattern() + ")*\\$?");
	QRegExp help("/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/");
	QRegExp exp("(" + help.pattern() + ")?" + "\\s*" + namespacelist.pattern() + "\\s*=\\s*function\\s*\\(" + parameterlist.pattern() + "\\)");
	int ii = 0;
	do
	{
		index = code.indexOf(exp,index) + exp.matchedLength();
		if (index >= 0)
		{
			QString fun = exp.cap();
			LibraryElementInfo mi; 
			int helpind = fun.indexOf(help);
			if (helpind >= 0)
			{
				mi.help = help.cap();
				mi.help.remove(QRegExp("\\*\\s+\\n"));
				fun.remove(help.cap());
			}
			fun.remove(QRegExp("\\s*")).remove("=").remove("function");
			mi.completename = fun;
			res << mi;
			++ii;
		}
	}while(index >= 0);
	return res;
}
示例#3
0
QRegExp MLScriptLanguage::joinedWordExpression() const
{
	//*\\*/(\\(\\w*\\))?
	QRegExp parameter("(\\w*|\\d*(\\.\\d+)*)");
	QRegExp parameterlist(parameter.pattern() + "(\\s*,\\s*" + parameter.pattern() + ")*");
	QRegExp name("([a-z]|[A-Z])+\\w*(\\(" + parameterlist.pattern() + "\\))?");
	QString st(name.pattern() + "(\\s*" + wordsjoiner.pattern() +"\\s*|\\s*" + wordsjoiner.pattern() +"\\s*"  + name.pattern() + ")*");
	return QRegExp(st);
	
}
示例#4
0
int Scenario::loadMapBuf(string mapn) {
    mapname=mapn;
    ifstream mapfile;
    string tmpline;
    string loadfile=config.datadir+mapname;

    mapfile.open(loadfile.c_str());
    if (mapfile) {
        cout << "Loading new map: " << loadfile << endl;
    } else {
        cout << "Map loading failed: " << loadfile << " not found!\n";
        return 2;
    }

    mapbuf.clear();

    /* We parse the parameters to add a name if it was missing
       This whole file reading looks much more complicated because
       of this (otherwise there would only be mapbuf.push_back(tmpline) */
    string cname;
    Uint16 x,y;
    ParameterMap parameters;
    bool header=true;
    std::map<string,Uint16> namecount;
    while (getline(mapfile,tmpline)) {
        if (header) {
            mapbuf.push_back(tmpline);
            std::istringstream tmpstream(tmpline);
            tmpstream >> cname;
            if (cname[0]=='#') {
                if (cname=="#ENDHEADER") header=false;
                continue;
            }
        } else {
            cname.erase();
            x=y=0;
            std::istringstream tmpstream(tmpline);
            tmpstream >> cname >> x >> y;

            if (cname.empty() || cname[0]=='#') {
                mapbuf.push_back(tmpline);
                continue;
            } else {
                namecount[cname]++;
            }

            string parameterlist((istreambuf_iterator<char>(tmpstream)), istreambuf_iterator<char>());
            parameters=getParameters(parameterlist);
            if (!hasParam(parameters,"name")) {
                if (parameters.empty()) tmpline+=" name="+cname+itos(namecount[cname]);
                else tmpline+=", name="+cname+itos(namecount[cname]);
            }
            mapbuf.push_back(tmpline);
        }
    }
示例#5
0
void parameters(void){
	if(lookahead == VOID)	
	match(VOID);
	else
	parameterlist();
}