Exemplo n.º 1
0
def evaluate(line, mode):
    global _do_block
    global _looking_for_end_bracket
    global _record_lines
    global _lines
    global _same_string

    if line == "quit": return 1
    sline = line.split(" ")

    sline = _convert_to_values(1, sline)
    sline = Arithmetic.do_arithmetic_statements(sline)
    sline = IfElse.do_boolean_expressions(sline)
    sline = _booleans_to_ints(sline)

    # Checking if the line is both from a file and an if statement
    if mode:
        if _is_if_statement_true(sline) or _is_else_if_statement_true(sline, _same_string) or _is_else_statement_true(sline, _same_string):
            _do_block = True
            _same_string = True
        elif _is_start_bracket(sline):
            _record_lines = True
            _looking_for_end_bracket = True
        elif _looking_for_end_bracket and _is_end_bracket(sline):
            _record_lines = False
            _looking_for_end_bracket = False
            if _do_block: IfElse.perform_block_statement(_lines, mode)
            _lines = []
            _do_block = False
        elif _record_lines:
            _lines.append(line)
            return 0
        elif _is_else_if_statement(sline) or _is_else_statement(sline) or _do_block:
            pass
        else:
            _same_string = False

    # Checking if the line is a variable set statement
    if _is_variable_set_statement(sline):
        val = Variable.variable_set_statement(sline)
        if val: return val

    # Checking if the line is a print statement
    if _is_print_statement(sline):
        val = Print.print_statement(sline)
        if val: return val
    
    return 0