void QTreeValidator::genVarArgTypeList(QueryData &queryData, std::vector<std::string>& decSynList, std::vector<DeclarationEntry*>& decList, std::vector<std::string>& decImplList)
{
    std::vector<DecType> varArgTypeList;
    std::vector<DeclarationEntry*>::const_iterator decIter = decList.begin();
    while (decIter != decList.end()) {
        DecType decType;
        DeclarationEntry *de = *decIter;
        switch (de->getDesignEntity()) {
            case DE_stmt:
                decType = STMT;
                break;
            case DE_assign:
                decType = ASSIGN;
                break;
            case DE_if:
                decType = IF;
                break;
            case DE_while:
                decType = WHILE;
                break;
            case DE_variable:
                decType = VAR;
                break;
            case DE_procedure:
                decType = PROC;
                break;
            case DE_constant:
                break;
            case DE_prog_line:
                decType = STMT;
                break;
            case DE_call:
                decType = CALL;
                break;
            default: ;
                assert(false);
        }
    
        if (de->getDesignEntity() == DE_constant) {
			decImplList.push_back(de->getSynonym());
		}
		else {
			decSynList.push_back(de->getSynonym());
			varArgTypeList.push_back(decType);
		}
        
        decIter++;
    }
    queryData.setVarDecTypeList(varArgTypeList);
}