Ejemplo n.º 1
0
    def __init__(self, comp_type, init):

        self.indent_modifier = [0, 0]

        name = init.get('name')
        block_type = 'class_methods'
        lines = init.get('_lines')

        statements = list()

        if init.get('import'):
            statements.append(init.get('import'))

        statements.append(
            Statement('definition',
                      block_type,
                      init={
                          'keyword': 'def',
                          'name': name,
                          'arguments': lines[0],
                      }))

        for line in lines[1:]:
            statements.append(
                Statement('line', block_type,
                          line='${indent}' + line.rstrip()))

        super(ClassMethodComponent,
              self).__init__(comp_type,
                             statements=statements,
                             outline_str='cls.' + name + ',')
Ejemplo n.º 2
0
    def create_outline(self):
        """Create the outline of the WorkChain."""
        block = Block('define_outline', 2)
        indent = 1

        block.add_statement(
            Statement('comment',
                      'define_outline',
                      init={'comment': 'spec.outline('}))

        for component in self._components:
            if component.type not in OUTLINE_COMPONENTS:
                # Component, that does not contribute to the outline.
                continue

            indent += component.indent_modifier[0]

            # Add the components outline string to the outline.
            block.add_statement(
                Statement('comment',
                          'define_outline',
                          indent=indent,
                          init={'comment': component.outline_str}))

            indent += component.indent_modifier[1]

        block.add_statement(
            Statement('comment', 'define_outline', init={'comment': ')'}))

        self.blocks['define_outline'] = block
Ejemplo n.º 3
0
def p_return(p):
    '''
    return_statement : RETURN
                     | RETURN expression
    '''
    if len(p) == 2:
        p[0] = Statement(StatementType.RETURN, p.lineno(1),
                         {'return_value': None})
    else:
        p[0] = Statement(StatementType.RETURN, p.lineno(1),
                         {'return_value': p[2]})
Ejemplo n.º 4
0
def p_class_instanciation(p):
    '''
    expression : NEW IDENT LP RP
               | NEW IDENT LP args RP
    '''
    if len(p) == 5:
        p[0] = Statement(StatementType.NEW_CLASS, p.lineno(1), {
            'class_name': p[2],
            'class_args': {}
        })
    else:
        p[0] = Statement(StatementType.NEW_CLASS, p.lineno(1), {
            'class_name': p[2],
            'class_args': p[4]
        })
Ejemplo n.º 5
0
def p_call_func(p):
    '''
    call_func : IDENT LP args RP
              | IDENT LP RP
    '''
    if len(p) == 5:
        p[0] = Statement(StatementType.FUNCTION_CALL, p.lineno(1), {
            'function_name': p[1],
            'args': p[3]
        })
    else:
        p[0] = Statement(StatementType.FUNCTION_CALL, p.lineno(1), {
            'function_name': p[1],
            'args': []
        })
Ejemplo n.º 6
0
def p_if_statement(p):
    '''
    if_statement : IF LP condition_statement RP block
                 | IF LP condition_statement RP block ELSE statement
    '''
    if len(p) == 6:
        p[0] = Statement(StatementType.IF, p.lineno(1), {
            'condition': p[3],
            'statementlist': p[5]
        })
    else:
        p[0] = Statement(StatementType.IF, p.lineno(1), {
            'condition': p[3],
            'statementlist': p[5],
            'else_statementlist': [p[7]]
        })
Ejemplo n.º 7
0
 def create_statement(self):
     """
     @rtype: Statement
     """
     self._putMessageId(protocol.CREATE)
     self._exchangeMessages()
     return Statement(self.getInt())
def main():
    while (True):
        line = input("db > ")
        if (line[0] == "."):
            command_value = do_meta_command(line)
            if (command_value == MetaCommands.META_COMMAND_SUCCESS):
                continue
            elif (command_value ==
                  MetaCommands.META_COMMAND_UNRECOGNIZED_COMMAND):
                print("Unrecognized command {0} .\n".format(line))
                continue
            elif (command_value == MetaCommands.META_COMMAND_EXIT):
                print("~Goodbye")
                sys.exit()

        statement = Statement()
        statement_value = prepare_statement(line, statement)

        if (statement_value == PreparedStatements.PREPARE_SUCCESS):
            break
        elif (statement_value ==
              PreparedStatements.PREPARE_UNRECOGNIZED_STATEMENT):
            print("Unrecognized keyword at start of {0} .\n".format(line))
            continue

    execute_statement(statement)
    print("Executed")
Ejemplo n.º 9
0
    def __init__(self, ast_node, prog):
        self.ast_node = ast_node
        # Reference to the program
        self.prog = prog

        # Get the function properties
        name, params, localvars, statements = ast_node.children

        # The name of the function
        self.name = name.text

        # Dictionaries for variables and parameters
        self.params = {
            p.text: VecParam(p.text, i)
            for i, p in enumerate(params.children)
        }

        self.localvars = {
            v.text: LocalVar(v.text, i)
            for i, v in enumerate(localvars.children)
        }

        # Run statements
        self.statements = [Statement(s, self) for s in statements.children]

        self.before = FUNC_START_ASM
        self.after = FUNC_END_ASM
Ejemplo n.º 10
0
def p_loop_statement(p):
    '''
    loop_statement : LOOP LP condition_statement RP block
                   | LOOP LP IDENT COLON expression RP block
    '''
    if len(p) == 6:
        p[0] = Statement(StatementType.LOOP, p.lineno(1), {
            'condition': p[3],
            'statementlist': p[5]
        })
    else:
        p[0] = Statement(StatementType.LOOP, p.lineno(1), {
            'ident': p[3],
            'loop_count': p[5],
            'statementlist': p[7]
        })
Ejemplo n.º 11
0
    def get_clean_statement(self, worksheet):
        if self.statement_dirty:
            self.statement = Statement(self.tokenized.get_text(), worksheet)
            self.statement.chunk = self
            self.statement_dirty = False

        return self.statement
Ejemplo n.º 12
0
    def Replace(self):
        # Get the rule
        value = self.value_edit.currentText().strip()
        # Add it to the logs
        self.valueLog.AddRule(self.question, value)
        # Propagate rule
        self.ruleHeap.Propagate(self.question, value)
        # If solutions are found, add them to logs and propagate them
        solutions = self.ruleHeap.GetSolutions()
        for sol in solutions:
            sol_st = Statement(sol)
            if (sol_st.root.sign):
                val = "T"
            else:
                val = "F"
            if (sol_st.root.symbol.mask not in ["T", "F"]):
                self.valueLog.AddRule(sol_st.root.symbol.mask, val)
                self.ruleHeap.Propagate(sol_st.root.symbol.mask, val)
                self.reasoned.append(sol_st.root.symbol.mask)

        self.UpdateValueLog()
        self.UpdateRuleHeap()
        if (self.ruleHeap.IsSolved()):
            # Enter finished state
            if (self.valueLog.RuleExists(self.objective)):
                self.Explain()
            else:
                self.Fail()
        else:
            try:
                self.SetNextQuestion()
            except:
                self.Fail()
Ejemplo n.º 13
0
def p_define_class(p):
    '''
    define_class : CLASS IDENT LC newline define_class_properties newline define_methods newline RC
                 | CLASS IDENT LC newline define_methods newline RC
    '''
    if len(p) == 8:
        p[0] = Statement(StatementType.CLASS_DEFINE, p.lineno(1), {
            'class_name': p[2],
            'properties': [],
            'methods': p[5]
        })
    else:
        p[0] = Statement(StatementType.CLASS_DEFINE, p.lineno(1), {
            'class_name': p[2],
            'properties': p[5],
            'methods': p[7]
        })
Ejemplo n.º 14
0
def p_decrement(p):
    '''
    assign_statement : IDENT DECREMENT
    '''
    p[0] = Statement(StatementType.ASSIGN, p.lineno(1), {
        'variable_name': p[1],
        'type': 'decrement'
    })
Ejemplo n.º 15
0
def p_define_func(p):
    '''
    define_function : FUNCTION IDENT LP RP block
                    | FUNCTION IDENT LP define_function_args RP block
    '''
    if len(p) == 6:
        p[0] = Statement(StatementType.FUNCTION_DEFINE, p.lineno(1), {
            'function_name': p[2],
            'function_args': [],
            'statementlist': p[5]
        })
    else:
        p[0] = Statement(StatementType.FUNCTION_DEFINE, p.lineno(1), {
            'function_name': p[2],
            'function_args': p[4],
            'statementlist': p[6]
        })
Ejemplo n.º 16
0
 def IsSolved(self):
     regex = "^[\w]+$"
     undef = []
     for rule in self.rules:
         rule_st = Statement(rule)
         if(rule_st.root.symbol.mask in ["T", "F"]):
             undef.append(rule)
     return len(undef) == len(self.rules)
Ejemplo n.º 17
0
def p_instance_method(p):
    '''
    call_func : IDENT DOT IDENT LP RP
              | IDENT DOT IDENT LP args RP
    '''
    if len(p) == 6:
        p[0] = Statement(StatementType.CALL_METHOD, p.lineno(1), {
            'variable_name': p[1],
            'method_name': p[3],
            'method_args': {}
        })
    else:
        p[0] = Statement(StatementType.CALL_METHOD, p.lineno(1), {
            'variable_name': p[1],
            'method_name': p[3],
            'method_args': p[5]
        })
Ejemplo n.º 18
0
def p_if_statement_else(p):
    '''
    if_statement : IF LP condition_statement RP block ELSE block
    '''
    p[0] = Statement(StatementType.IF, p.lineno(1), {
        'condition': p[3],
        'statementlist': p[5],
        'else_statementlist': p[7]
    })
Ejemplo n.º 19
0
def p_assign_statement(p):
    '''
    assign_statement : IDENT ASSIGN expression
    '''
    # variables[p[1]] = p[3]
    p[0] = Statement(StatementType.ASSIGN, p.lineno(1), {
        'variable_name': p[1],
        'expression': p[3]
    })
Ejemplo n.º 20
0
 def update_expression(self, cell_pos, attrib, expression, save=False):
     #cell = self.cell_dict[cell_pos]
     
     new_json = self.files[attrib].apply_statements(self.config, self.cell_dict, [Statement(attrib, [CellRange((cell_pos[0], cell_pos[0] + 1), (cell_pos[1], cell_pos[1] + 1))], Expression(expression))])
     #new_json = cell.update_expression(attrib, Expression(expression), self.config, self.cell_dict)
     new_json = {str(key)[1:-1]: value for key, value in new_json.items()}
   
     if save: self.files[attrib].write_to_file()
   
     self.data["cells"].update(new_json)
     return json.dumps(self.data)
def build_statements(fiscal_periods):

    statements = []

    for fiscal_period in fiscal_periods:

		for financial_statement in fiscal_period.Statement:

			header = financial_statement.FPHeader

			periodTypeCode = None
			periodTypeValue = None
			periodLength = None

			auditorNameCode = None
			auditorNameValue = None

			auditorOpinionCode = None
			auditorOpinionValue = None 

			sourceDate = None

			if hasattr(header, 'periodType'):
				periodTypeCode = header.periodType.Code
				periodTypeValue = header.periodType.Value
				periodLength = header.PeriodLength

			if hasattr(header, 'AuditorName'):
				auditorNameCode = header.AuditorName.Code
				auditorNameValue = header.AuditorName.Value

			if hasattr(header, 'AuditorOpinion'):
				auditorOpinionCode = header.AuditorOpinion.Code
				auditorOpinionValue = header.AuditorOpinion.Value				

			if hasattr(header.Source, 'Date'):
				sourceDate = header.Source.Date

			statement = Statement(fiscal_period.EndDate, fiscal_period.Type, 
								  fiscal_period.FiscalYear, 
								  financial_statement.Type,
								  periodTypeCode, periodTypeValue, periodLength, 
								  auditorNameCode, 
								  auditorNameValue,
								  header.Source.Value, sourceDate,
								  header.StatementDate,
								  header.UpdateType.Code, header.UpdateType.Value,
								  auditorOpinionCode, auditorOpinionValue, 
								  financial_statement.lineItem)
			statements.append(statement)

    return statements
Ejemplo n.º 22
0
 def GetSolutions(self):
     """Check for a ruleset that became a solution through Modus Tollens"""
     #
     # A rule is a solution if there is only one variable left in the rule
     #
     regex = "^[\w]+$"
     solutions = []
     for rule in self.rules:
         rule_st = Statement(rule)
         if(rule_st.root.symbol.code == "IDENTIFIER"): 
             if(rule_st.root.symbol.mask not in ["T", "F"]):
                 solutions.append(rule)
     return solutions
Ejemplo n.º 23
0
    def __init__(self, block_type, indent_level, init=None):

        self._type = block_type
        self._indent_level = indent_level

        self._statements = []

        # Add all the statements already contained in init.
        if init is None:
            init = []

        for statement_type, value in init:
            statement = Statement(statement_type, block_type, init=value)
            self.add_statement(statement)
Ejemplo n.º 24
0
def p_expression(p):
    '''
    expression : term
               | expression ADD term
               | expression SUB term
    '''
    if len(p) == 4:
        p[0] = Statement(StatementType.EXPRESSION, p.lineno(2), {
            'left': p[1],
            'right': p[3],
            'op': p[2]
        })
    else:
        p[0] = p[1]
Ejemplo n.º 25
0
def p_term(p):
    '''
    term : primary_expression
         | term MUL primary_expression
         | term DIV primary_expression
    '''
    if len(p) == 4:
        p[0] = Statement(StatementType.EXPRESSION, p.linno(2), {
            'left': p[1],
            'right': p[3],
            'op': p[2]
        })
    else:
        p[0] = p[1]
Ejemplo n.º 26
0
    def parse(self):
        with open(self.path, 'r') as file:
            text = file.read()

        statements = []
        matches = re.findall(
            r"^([^(\|=)]*)=((\s*\|((\s\s*..*(\n|))*))|([^\n\|]*))", text,
            re.MULTILINE)

        for match in matches:
            statements.append(
                Statement(self.attrib, File.parse_cell_ranges(match[0]),
                          Expression(match[3].strip() or match[1].strip())))

        self.statements = statements
Ejemplo n.º 27
0
    def _find_control_flow(self, cursor, arg_parser):
        if not isinstance(cursor, clang.cindex.Cursor):
            return []

        # find first compound of function and get child control flow
        start_stmt_cursor = [
            c for c in cursor.get_children()
            if c.kind in util.dct_alias_compound_stmt
        ]
        if len(start_stmt_cursor) != 1:
            print("Error, cannot find stmt child into function %s" % self)
            return None
        return Statement(start_stmt_cursor[0],
                         arg_parser=arg_parser,
                         count_stmt=self.lst_cfg,
                         method_obj=self,
                         param_decl=[a for a in cursor.get_children()][:-1])
Ejemplo n.º 28
0
def read_statement_csv(path: str) -> Statement:
    """
    Get Statement object from Revolut statement path
    :param path: path of Revolut statement
    :type path: str
    :return: statement object
    :rtype: Statement
    """
    transactions = []
    tr_dict = csv.DictReader(io.StringIO(get_csv_normalized(path)),
                             delimiter=',')
    for el in tr_dict:
        transaction = Transaction(el)
        transactions.append(transaction)

    transactions.reverse()

    statement = Statement(transactions[0].currency, transactions)
    return statement
Ejemplo n.º 29
0
    def __init__(self, comp_type, init):

        arguments = []
        # Assemble the string, that will be passed as an argument
        # in spec.item(...).
        for item in ['name', 'valid_type']:
            if item in init:
                arguments.append('{0}={1}'.format(item, init.get(item)))

        inputs = {'item_type': comp_type, 'arguments': ', '.join(arguments)}
        block_type = 'define_' + comp_type + 's'

        statements = []
        if init.get('import'):
            statements.append(inputs.get('import'))

        statements.append(Statement('spec_item', block_type, init=inputs))

        super(IOComponent, self).__init__(comp_type, statements=statements)
Ejemplo n.º 30
0
 def __init__(self):
     self.app = QtWidgets.QApplication(sys.argv)
     self.main_window = QtWidgets.QWidget()
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self.main_window)
     self.main_window.setWindowIcon(QIcon('./system_files/图标.png'))
     self.main_window.setFont(QFont("Microsoft YaHei", 9))
     self.set_bace_url()
     self.connect()
     self.ui.pushButton.setEnabled(False)
     # 创建声明
     self.statement = Statement('news_output_word')
     if not self.statement.check_pd:
         exit()
     if self.statement.accept:
         self.main_window.show()
     else:
         self.statement.ui.pushButton.clicked.connect(self.main_window.show)
     sys.exit(self.app.exec_())