Untitled

 avatar
unknown
plain_text
5 months ago
2.8 kB
3
Indexable
    def update_parent_statements_with_else(self,df):
        else_rows = df[df['Keywords'] == 'ELSE']

        for index, row in else_rows.iterrows():
            conditional_seq = str(int(float(row['Conditional_Seq'])))

            parent_row_index = df[df['Sequence'] == conditional_seq].index

            if not parent_row_index.empty:

                parent_statement = df.at[parent_row_index[0], 'Statement'].strip()

                if 'IF' in parent_statement and 'NOT' not in parent_statement:
                    parts = parent_statement.split()
                    if parts[0] == 'IF':
                        parts.insert(1, 'NOT')  # Insert NOT after IF
                        df.at[parent_row_index[0], 'Statement'] = ' '.join(parts)

        df = df[df['Keywords'] != 'ELSE'].reset_index(drop=True)
        
        return df
    
    def get_code_intended(self, df):
        indentation_level = 0
        result = []
        if_stack = []
        evaluate_stack = []
        when_found = 0

        for index, row in df.iterrows():
            statement = row['Statement']
            keyword = row['Keywords']
            
            if 'EVALUATE' in keyword and 'END-EVALUATE' not in statement:
                result.append(f"{str(row['Sequence']).zfill(6)}    {'    ' * indentation_level}{statement}")
                indentation_level += 1
                evaluate_stack.append(row['Sequence'])
            
            elif 'WHEN' in keyword:
                result.append(f"{str(row['Sequence']).zfill(6)}    {'    ' * indentation_level}{statement}")
                indentation_level += 1
                when_found += 1
            
            elif 'IF' in keyword and 'END-IF' not in statement:
                result.append(f"{str(row['Sequence']).zfill(6)}    {'    ' * indentation_level}{statement}")
                indentation_level += 1
                if_stack.append(row['Sequence'])
            
            elif 'END' in keyword and 'END-IF' in statement:
                if if_stack:
                    if_stack.pop()
                indentation_level -= 1
                result.append(f"{str(row['Sequence']).zfill(6)}    {'    ' * indentation_level}{statement}")
            
            elif 'END' in keyword and 'END-EVALUATE' in statement:
                if evaluate_stack and when_found !=0:
                  evaluate_stack.pop()
                  indentation_level -= 2
                elif evaluate_stack and when_found ==0:
                  evaluate_stack.pop()
                  indentation_level -= 1
                result.append(f"{str(row['Sequence']).zfill(6)}    {'    ' * indentation_level}{statement}")
            
            else:
                result.append(f"{str(row['Sequence']).zfill(6)}    {'    ' * indentation_level}{statement}")
                
        return result
Editor is loading...
Leave a Comment