Пример #1
0
const std::vector<bool> &Module::getFunctionParameterModifiables(const std::string &name) const
{
    const Module* handlerModule = functionHandler(name);
    if(handlerModule == nullptr)
        return emptyParameterModifiables;

    return handlerModule->doGetFunctionParameterModifiables(name);
}
Пример #2
0
const std::vector<Variant> &Module::getFunctionParameterDefaults(const std::string &name) const
{
    const Module* handlerModule = functionHandler(name);
    if(handlerModule == nullptr)
        return emptyParameterDefaults;

    return handlerModule->doGetFunctionParameterDefaults(name);
}
Пример #3
0
Variable Module::executeFunction(const std::string &name, const Variable &params, const Module &fromModule) const
{
    const Module* handlerModule = functionHandler(name);
    if(handlerModule == nullptr)
        return Variable();

    return handlerModule->doExecuteFunction(name, params, fromModule);
}
Пример #4
0
doVector* statmentOp(tree& symbolTable, tree& localVar, funcS& funcTable){
	doVector* ifStatments;
	ifStatments = new doVector(20);// 20 default starting capacity
	opNode exp;
        read_next_token();
	if(String (next_token()) == "nufed"){return 0;}
	doVector::statment loop;
        while(String (next_token()) != "fi" || String(next_token()) != "od" || String (next_token()) != "nufed"){
		String next(next_token());
                if(next == "output"){
                        loop.c = output;
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
                        ifStatments->push_back(loop);
                }else if(next == "set"){
                        loop.c = set;
                        read_next_token();
                        loop.text = String (next_token());
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
                        ifStatments->push_back(loop);
                }else if(next == "var"){
                        loop.c = var;
                        read_next_token();
                        loop.text = String (next_token());
                        loop.text = String (next_token());
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
                        ifStatments->push_back(loop);
                }else if(next == "text"){
                        loop.c = text;
                        read_next_token();
                        loop.text = String (next_token());
                        ifStatments->push_back(loop);
                }else if(next == "do"){
                        loop.c = dos;
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
			loop.block = statmentOp(symbolTable, localVar, funcTable);
                        ifStatments->push_back(loop);
		}else if(next == "else"){
			loop.c = elses;
			loop.block = elseStatmentOp(symbolTable, localVar, funcTable);
			ifStatments->push_back(loop);
		}else if(next == "if"){
			loop.c = ifs;
		        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
			loop.block = statmentOp(symbolTable, localVar, funcTable);
                        ifStatments->push_back(loop);
		}else if(next  == "call"){
			loop.c = call;
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
			ifStatments->push_back(loop);				
		}else if(next == "return"){
			loop.c = returns;
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
			ifStatments->push_back(loop);		
		}else if(next == "defun"){
			loop.c = func;
			peek_next_token();
			loop.text = String (next_token());
			ifStatments->push_back(loop);
			functionHandler(symbolTable, tempFunc);
		}
		peek_next_token();
		if(String (next_token()) == "fi" || String (next_token()) == "od" || String (next_token()) == "nufed" || next_token_type == END){  read_next_token(); break;}else{
        	read_next_token();
		}	
        }
	return ifStatments;
}
Пример #5
0
doVector* elseStatmentOp(tree& symbolTable, tree& localVar, funcS& funcTable){
	doVector* ifStatments;
	ifStatments = new doVector(20);// 20 default starting capacity
	opNode exp;
        read_next_token();
	doVector::statment loop;// temporary place holder of the elements to be pushed to the vector
        while(String (next_token()) != "fi"){
		String next(next_token());
                if(next == "output"){
                        loop.c = output;
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
                        ifStatments->push_back(loop);
                }else if(next == "set"){
                        loop.c = set;
                        read_next_token();
                        loop.text = String (next_token());
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
                        ifStatments->push_back(loop);
                }else if(next == "var"){
                        loop.c = var;
                        read_next_token();
                        loop.text = String (next_token());
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
                        ifStatments->push_back(loop);
                }else if(next == "text"){
                        loop.c = text;
                        read_next_token();
                        loop.text = String (next_token());
                        ifStatments->push_back(loop);
                }else if(next == "do"){
                        loop.c = dos;
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
			loop.block = statmentOp(symbolTable, localVar, funcTable);
                        ifStatments->push_back(loop);
		}else if(next == "else"){
			loop.c = elses;
			loop.block = statmentOp(symbolTable, localVar, funcTable);
			ifStatments->push_back(loop);
		}else if(next == "if"){
			loop.c = ifs;
		        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
			loop.block = statmentOp(symbolTable, localVar, funcTable);
                        ifStatments->push_back(loop);
			loop.c = call;
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
			ifStatments->push_back(loop);				
		}else if(next == "return"){
			loop.c = returns;
                        exp.parseOperateTemp(String (next_token()), 0,  symbolTable, loop.operate);
			ifStatments->push_back(loop);		
		}else if(next == "defun"){
			loop.c = func;
			peek_next_token();
			loop.text = String (next_token());
			ifStatments->push_back(loop);
			functionHandler(symbolTable, tempFunc);
		}
		peek_next_token();
		if(String (next_token()) == "fi"){  break;}else{
        		read_next_token();
		}	
        }
	return ifStatments;
}