def process(self, tokens, scope):
while True:<EOL><INDENT>tokens = list(utility.flatten(tokens))<EOL>done = True<EOL>if any(t for t in tokens if hasattr(t, '<STR_LIT>')):<EOL><INDENT>tokens = [<EOL>t.parse(scope) if hasattr(t, '<STR_LIT>') else t<EOL>for t in tokens<EOL>]<EOL>done = False<EOL><DEDENT>if any(<EOL>t for t in tokens<EOL>if (utility.is_variable(t)) or str(type(t)) ==<EOL>"<STR_LIT>"):<EOL><INDENT>tokens = self.replace_variables(tokens, scope)<EOL>done = False<EOL><DEDENT>if done:<EOL><INDENT>break<EOL><DEDENT><DEDENT>return tokens<EOL>
Process tokenslist, flattening and parsing it
        args:
            tokens (list): tokenlist
            scope (Scope): Current scope
        returns:
            list