Exemplo n.º 1
0
def block_while(deep_act,
                n_statements_min=10,
                n_statements_max=20,
                n_guard_statements_min=1,
                n_guard_statements_max=5,
                n_else_if_min=1,
                n_else_if_max=5,
                deep_max=5,
                case_values_min=-1000,
                case_values_max=1000):
    # Generalizar bucles while con más de una condición en la guarda, incrementos variables y variabilidad en la actualización de variables (incrementar parte derecha = decrementar parte izquierda) #
    var_one, val_one = variable(), integer()
    var_two, val_two = variable(), integer()
    declarations    = Utils.generate_random_declarator() + var_one + " = " + val_one + "\n" +\
        Utils.generate_random_declarator() + var_two + " = " + val_two + "\n"
    rel_op = choice([">", "<", ">=", "<=", "="])  #relational_operation()
    res             = Utils.low_up_string(" While ")+var_one+rel_op+var_two+"\n"+ \
        block(deep_act+1,n_statements_min,n_statements_max,n_guard_statements_min,
       n_guard_statements_max,n_else_if_min,n_else_if_max,deep_max,case_values_min,
       case_values_max)+"\n"

    if rel_op == ">": res += var_one + " -= 1\n"
    elif rel_op == "<": res += var_one + " += 1\n"
    elif rel_op == ">=": res += var_one + " -= 1\n"
    elif rel_op == "<=": res += var_one + " += 1\n"
    elif rel_op == "=": res += var_one + " += 1\n"
    elif rel_op == "<>":
        v_max = max(val_one, val_two)
        if v_max == val_one: res += var_one + " -= 1\n"
        else: res += var_two + " -= 1\n"
    res += Utils.low_up_string("\nWEnd\n")
    return declarations + res
Exemplo n.º 2
0
def assign(var, val):
    rnd = randint(0, 1)
    if rnd == 0:
        return Utils.generate_random_declarator() + var + " = " + val + "\n"
    else:
        return Utils.generate_random_declarator(
        ) + var + " = 0\n" + Utils.low_up_string(
            "Assign") + "('" + var + "','" + val.replace('"', "").replace(
                "'", "") + "')\n"
Exemplo n.º 3
0
def ternary_operation(n_guard_statements_min=1,n_guard_statements_max=3):
    res          = ""
    declarations = ""
    var          = variable()
    n_guard_statements = randint(min(n_guard_statements_min,n_guard_statements_max),
				 min(n_guard_statements_min,n_guard_statements_max))
    log_statements = logical_statements(n_guard_statements)
    logic_variables = ExtractKeywords.extract_variables(log_statements)
    res += Utils.generate_random_declarator()+var+"\n"
    for i in logic_variables: declarations += Utils.generate_random_declarator()+assign_by_var_name(i)+"\n"
    res         += var+" = (" + log_statements + ") ? " + value() + " : " + value()
    return declarations+res+"\n"
Exemplo n.º 4
0
def block_if(deep_act,
             n_statements_min=10,
             n_statements_max=20,
             n_guard_statements_min=1,
             n_guard_statements_max=5,
             n_else_if_min=1,
             n_else_if_max=5,
             deep_max=5,
             case_values_min=-1000,
             case_values_max=1000):
    res = Utils.low_up_string("If ")
    declarations = ""
    n_guard_statements = randint(
        min(n_guard_statements_min, n_guard_statements_max),
        max(n_guard_statements_min, n_guard_statements_max))
    log_statements = logical_statements(
        n_guard_statements) + Utils.low_up_string(" Then") + "\n"
    logic_variables = ExtractKeywords.extract_variables(log_statements)
    for i in logic_variables:
        declarations += Utils.generate_random_declarator(
        ) + assign_by_var_name(i) + "\n"
    res += log_statements
    res += block(deep_act + 1, n_statements_min, n_statements_max,
                 n_guard_statements_min, n_guard_statements_max, n_else_if_min,
                 n_else_if_max, deep_max, case_values_min,
                 case_values_max) + "\n"
    else_type = randint(0, 1)  # 0 -> Else if, 1 -> Else #
    if else_type == 0:
        n_else_if = randint(min(n_else_if_min, n_else_if_max),
                            max(n_else_if_min, n_else_if_max))
        for i in xrange(n_else_if):
            log_statements = logical_statements(
                randint(min(n_guard_statements_min, n_guard_statements_max),
                        max(n_guard_statements_min, n_guard_statements_max)))
            logic_variables = ExtractKeywords.extract_variables(log_statements)
            for i in logic_variables:
                declarations += Utils.generate_random_declarator(
                ) + assign_by_var_name(i) + "\n"
            res += Utils.low_up_string(
                "ElseIf ") + log_statements + Utils.low_up_string(
                    " Then\n") + block(
                        deep_act + 1, n_statements_min, n_statements_max,
                        n_guard_statements_min, n_guard_statements_max,
                        n_else_if_min, n_else_if_max, deep_max,
                        case_values_min, case_values_max) + "\n"
    res += Utils.low_up_string("Else ") + "\n" + block(
        deep_act + 1, n_statements_min, n_statements_max,
        n_guard_statements_min, n_guard_statements_max, n_else_if_min,
        n_else_if_max, deep_max, case_values_min, case_values_max) + "\n"
    res += Utils.low_up_string("EndIf") + "\n"
    return declarations + res
Exemplo n.º 5
0
def ternary_operation(n_guard_statements_min=1, n_guard_statements_max=3):
    res = ""
    declarations = ""
    var = variable()
    n_guard_statements = randint(
        min(n_guard_statements_min, n_guard_statements_max),
        min(n_guard_statements_min, n_guard_statements_max))
    log_statements = logical_statements(n_guard_statements)
    logic_variables = ExtractKeywords.extract_variables(log_statements)
    res += Utils.generate_random_declarator() + var + "\n"
    for i in logic_variables:
        declarations += Utils.generate_random_declarator(
        ) + assign_by_var_name(i) + "\n"
    res += var + " = (" + log_statements + ") ? " + value() + " : " + value()
    return declarations + res + "\n"
Exemplo n.º 6
0
def block_while(deep_act,n_statements_min=10,n_statements_max=20,n_guard_statements_min=1,n_guard_statements_max=5,n_else_if_min=1,n_else_if_max=5,deep_max=5,case_values_min=-1000,case_values_max=1000): 
    n_guard_statements = randint(min(n_guard_statements_min,n_guard_statements_max),
			        max(n_guard_statements_min,n_guard_statements_max))
    vars_one = []
    vars_two = []
    vals_one = []
    vals_two = []
    rel_ops  = []
    declarations = []
    for i in xrange(n_guard_statements):
	vars_one.append(variable())
	vars_two.append(variable())
	vals_one.append(integer(100,1000))
	vals_two.append(integer(100,1000))
	rel_ops.append(choice([">","<",">=","<=","="]))
	declarations.append(Utils.generate_random_declarator() + vars_one[i] + " = " + vals_one[i])
	declarations.append(Utils.generate_random_declarator() + vars_two[i] + " = " + vals_two[i])
    
    res      = Utils.low_up_string(" While ")
   
    for i in xrange(n_guard_statements):
	res += vars_one[i] + " " + rel_ops[i] + " "+ vars_two[i]
	if i<n_guard_statements-1: res += Utils.low_up_string(" Or ")
    
    res += "\n"
    
    res += block(deep_act+1,n_statements_min,n_statements_max,n_guard_statements_min,
			    n_guard_statements_max,n_else_if_min,n_else_if_max,deep_max,case_values_min,
			    case_values_max)+"\n"
			    
    
    for i in xrange(n_guard_statements):
	if rel_ops[i]==">":
	    if vals_one[i]>vals_two[i]: 
		res += choice([vars_one[i] + " -= 1\n", vars_two[i] + " += 1\n"])
	elif rel_ops[i]=="<":
	    if vals_one[i]<vals_two[i]:  res += choice([vars_one[i] + " += 1\n",vars_two[i] + " -= 1\n"])
	elif rel_ops[i]==">=":
	    if vals_one[i]>=vals_two[i]: 
		res += choice([vars_one[i] + " -= 1\n", vars_two[i] + " += 1\n"])
	elif rel_ops[i]=="<=":
	     if vals_one[i]<=vals_two[i]: res += choice([vars_one[i] + " += 1\n",vars_two[i] + " -= 1\n"])
	elif rel_ops[i]=="=":
	    if vals_one[i]==vals_two[i]: res += choice([vars_one[i] + " += 1\n",vars_two[i] + " -= 1\n" , 
							vars_one[i] + " -= 1\n",vars_two[i] + " += 1\n"])
			
    res += Utils.low_up_string("\nWEnd\n")
    return "\n".join(declarations)+"\n"+res
Exemplo n.º 7
0
def block_switch(deep_act,
                 n_statements_min=10,
                 n_statements_max=20,
                 n_guard_statements_min=1,
                 n_guard_statements_max=5,
                 n_else_if_min=1,
                 n_else_if_max=5,
                 deep_max=5,
                 case_values_min=-1000,
                 case_values_max=1000):
    v = variable()
    declaration = Utils.generate_random_declarator() + assign_by_var_name(
        v) + "\n"
    n_cases = randint(min(n_else_if_min, n_else_if_max),
                      max(n_else_if_min, n_else_if_max))
    res = Utils.low_up_string("Switch ") + v + "\n"
    for i in xrange(n_cases):
        a, b = integer(min(case_values_min, case_values_max),
                       max(case_values_min, case_values_max)), integer(
                           min(case_values_min, case_values_max),
                           max(case_values_min, case_values_max))
        a, b = min(a, b), max(a, b)
        res += Utils.low_up_string(
            "Case ") + a + Utils.low_up_string(" To ") + b + "\n" + block(
                deep_act, n_statements_min, n_statements_max,
                n_guard_statements_min, n_guard_statements_max, n_else_if_min,
                n_else_if_max, deep_max, case_values_min, case_values_max)
        res += "\nCase Else\n" + block(
            deep_act, n_statements_min, n_statements_max,
            n_guard_statements_min, n_guard_statements_max, n_else_if_min,
            n_else_if_max, deep_max, case_values_min, case_values_max)
    res += Utils.low_up_string("\nEndSwitch\n")
    return declaration + res
Exemplo n.º 8
0
def block_for(deep_act,
              n_statements_min=10,
              n_statements_max=20,
              n_guard_statements_min=1,
              n_guard_statements_max=5,
              n_else_if_min=1,
              n_else_if_max=5,
              deep_max=5,
              case_values_min=-1000,
              case_values_max=1000):
    a, b = integer(), integer()
    a, b = min(a, b), max(a, b)
    v = variable()
    declaration = Utils.generate_random_declarator() + assign_by_var_name(
        v) + "\n\n"
    res = Utils.low_up_string("For ") + assign_full(
        v, a) + Utils.low_up_string(" To ") + b
    rnd_step = randint(0, 1)
    if rnd_step == 1:
        res += Utils.low_up_string(" Step ") + str(randint(1, 10)) + " \n"
    else:
        res += "\n"
    res += block(deep_act + 1, n_statements_min, n_statements_max,
                 n_guard_statements_min, n_guard_statements_max, n_else_if_min,
                 n_else_if_max, deep_max, case_values_min,
                 case_values_max) + Utils.low_up_string("\n Next\n")
    return declaration + res
Exemplo n.º 9
0
def block_with(deep_act,n_statements_min=10,n_statements_max=20,n_guard_statements_min=1,n_guard_statements_max=5,n_else_if_min=1,n_else_if_max=5,deep_max=5,case_values_min=-1000,case_values_max=1000):
    v           = variable()
    declaration = Utils.generate_random_declarator()+v+' = ObjCreate("shell.application") \n'
    res 	= Utils.low_up_string(" With ") + v + "\n" + \
		  block(deep_act+1,n_statements_min,n_statements_max,n_guard_statements_min,
			n_guard_statements_max,n_else_if_min,n_else_if_max,deep_max,case_values_min,
			case_values_max)+Utils.low_up_string("\n EndWith\n")
    return declaration+res
Exemplo n.º 10
0
def block_if(deep_act,n_statements_min=10,n_statements_max=20,n_guard_statements_min=1,n_guard_statements_max=5,n_else_if_min=1,n_else_if_max=5,deep_max=5,case_values_min=-1000,case_values_max=1000): 
    res = Utils.low_up_string("If ")
    declarations = ""
    n_guard_statements = randint(min(n_guard_statements_min,n_guard_statements_max),max(n_guard_statements_min,n_guard_statements_max))
    log_statements = logical_statements(n_guard_statements) + Utils.low_up_string(" Then")+"\n"
    logic_variables = ExtractKeywords.extract_variables(log_statements)
    for i in logic_variables: declarations += Utils.generate_random_declarator()+assign_by_var_name(i)+"\n"
    res += log_statements
    res += block(deep_act+1,n_statements_min,n_statements_max,n_guard_statements_min,n_guard_statements_max,n_else_if_min,n_else_if_max,deep_max,case_values_min,case_values_max)+"\n"
    else_type = randint(0,1) # 0 -> Else if, 1 -> Else #
    if else_type==0: 
	n_else_if = randint(min(n_else_if_min,n_else_if_max),max(n_else_if_min,n_else_if_max))
	for i in xrange(n_else_if):	    
	    log_statements = logical_statements(randint(min(n_guard_statements_min,n_guard_statements_max),max(n_guard_statements_min,n_guard_statements_max)))
	    logic_variables = ExtractKeywords.extract_variables(log_statements)
	    for i in logic_variables: declarations += Utils.generate_random_declarator()+assign_by_var_name(i)+"\n"
	    res += Utils.low_up_string("ElseIf ")+log_statements+Utils.low_up_string(" Then\n")+block(deep_act+1,n_statements_min,n_statements_max,n_guard_statements_min,n_guard_statements_max,n_else_if_min,n_else_if_max,deep_max,case_values_min,case_values_max)+"\n"
    res += Utils.low_up_string("Else ")+"\n"+block(deep_act+1,n_statements_min,n_statements_max,n_guard_statements_min,n_guard_statements_max,n_else_if_min,n_else_if_max,deep_max,case_values_min,case_values_max)+"\n"
    res += Utils.low_up_string("EndIf")+"\n"
    return declarations+res
Exemplo n.º 11
0
def block_switch(deep_act,n_statements_min=10,n_statements_max=20,n_guard_statements_min=1,n_guard_statements_max=5,n_else_if_min=1,n_else_if_max=5,deep_max=5,case_values_min=-1000,case_values_max=1000): 
    v = variable()
    declaration = Utils.generate_random_declarator()+assign_by_var_name(v)+"\n"
    n_cases = randint(min(n_else_if_min,n_else_if_max),max(n_else_if_min,n_else_if_max))
    res = Utils.low_up_string("Switch ")+v+"\n" 
    for i in xrange(n_cases):
	a,b = integer(min(case_values_min,case_values_max),max(case_values_min,case_values_max)),integer(min(case_values_min,case_values_max),max(case_values_min,case_values_max))
	a,b = min(a,b),max(a,b)
	res += Utils.low_up_string("Case ")+a+Utils.low_up_string(" To ")+b+"\n"+block(deep_act,n_statements_min,n_statements_max,n_guard_statements_min,n_guard_statements_max,n_else_if_min,n_else_if_max,deep_max,case_values_min,case_values_max)
	res += "\nCase Else\n"+block(deep_act,n_statements_min,n_statements_max,n_guard_statements_min,n_guard_statements_max,n_else_if_min,n_else_if_max,deep_max,case_values_min,case_values_max)
    res += Utils.low_up_string("\nEndSwitch\n")
    return declaration+res
Exemplo n.º 12
0
def block_for(deep_act,n_statements_min=10,n_statements_max=20,n_guard_statements_min=1,n_guard_statements_max=5,n_else_if_min=1,n_else_if_max=5,deep_max=5,case_values_min=-1000,case_values_max=1000): 
    a,b = integer(),integer()
    a,b = min(a,b),max(a,b)
    v   = variable()
    declaration = Utils.generate_random_declarator()+assign_by_var_name(v)+"\n\n"
    res = Utils.low_up_string("For ")+assign_full(v,a)+Utils.low_up_string(" To ")+b
    rnd_step = randint(0,1)
    if rnd_step==1:    
	res += Utils.low_up_string(" Step ")+str(randint(1,10))+" \n"
    else:              res += "\n"
    res += block(deep_act+1,n_statements_min,n_statements_max,n_guard_statements_min,
	         n_guard_statements_max,n_else_if_min,n_else_if_max,deep_max,case_values_min,
	         case_values_max)+Utils.low_up_string("\n Next\n")
    return declaration+res
Exemplo n.º 13
0
def add_hardcoded_funcs(obj,add_calls=False,functions=Globals.defined_new_functions,arity=Globals.arity_new_functions,n_funcs_min=3,n_funcs_max=5):
    n_funcs = randint(min(n_funcs_min,n_funcs_max),max(n_funcs_min,n_funcs_max))
    shuffle(hp.HARDCODED_PROGRAMS)
    funcs   = hp.HARDCODED_PROGRAMS[:n_funcs]
    for i in xrange(n_funcs):
	function_code   = funcs[i]()
	obj.insert(0,function_code+"\n\n")
	if add_calls:
	    arity           = Globals.arity_new_functions[-1]
	    identifier      = Globals.defined_new_functions[-1]
	    params          = ",".join([g.value() for i in xrange(arity)])
	    obj.insert(0,Utils.low_up_string(Utils.generate_random_declarator()) + \
		       g.variable() + " = " + identifier + "("+params+")\n\n")
    return obj
Exemplo n.º 14
0
def block_with(deep_act,
               n_statements_min=10,
               n_statements_max=20,
               n_guard_statements_min=1,
               n_guard_statements_max=5,
               n_else_if_min=1,
               n_else_if_max=5,
               deep_max=5,
               case_values_min=-1000,
               case_values_max=1000):
    v = variable()
    declaration = Utils.generate_random_declarator(
    ) + v + ' = ObjCreate("shell.application") \n'
    res  = Utils.low_up_string(" With ") + v + "\n" + \
    block(deep_act+1,n_statements_min,n_statements_max,n_guard_statements_min,
    n_guard_statements_max,n_else_if_min,n_else_if_max,deep_max,case_values_min,
    case_values_max)+Utils.low_up_string("\n EndWith\n")
    return declaration + res
Exemplo n.º 15
0
def block_while(deep_act,
                n_statements_min=10,
                n_statements_max=20,
                n_guard_statements_min=1,
                n_guard_statements_max=5,
                n_else_if_min=1,
                n_else_if_max=5,
                deep_max=5,
                case_values_min=-1000,
                case_values_max=1000):
    n_guard_statements = randint(
        min(n_guard_statements_min, n_guard_statements_max),
        max(n_guard_statements_min, n_guard_statements_max))
    log_statements, declarations = logical_statements(n_guard_statements), ""
    logic_variables = ExtractKeywords.extract_variables(log_statements)
    relational_operators = ExtractKeywords.extract_relational_operators(
        log_statements)
    const_values = ExtractKeywords.extract_integer(log_statements)
    for i in logic_variables:
        declarations += Utils.generate_random_declarator(
        ) + assign_by_var_name(i) + "\n"
    res = declarations + Utils.low_up_string("\nWhile ") + log_statements
    return res  # Acabar #
Exemplo n.º 16
0
def assign(var,val):
    rnd = randint(0,1)
    if rnd==0: return Utils.generate_random_declarator()+var+" = "+val+"\n"
    else:      return Utils.generate_random_declarator()+var+" = 0\n"+Utils.low_up_string("Assign")+"('"+var+"','"+val.replace('"',"").replace("'","")+"')\n"