def prefixes(self, tokens): Token.reset_all() found = list() matches_at = [[] for _ in range(len(tokens))] results = PatternMatchTrie.__find(self.root.next, tokens[0]) matches_at[0] = results for i in range(1, len(tokens)): for result in matches_at[i - 1]: if result.value: found.append(result.value) results = PatternMatchTrie.__find(result.next, tokens[i]) matches_at[i] += results return found + [node.value for node in matches_at[-1]]
def value(self): operands_values = [] for token in self._operands: try: operands_values.append(Token.resolve(token)) except AttributeError as _: raise AttributeError( "Result Variable cannot be resolved before operands") return reduce(self._operator, operands_values)
def reassemble(tokens): rendered_llvm = "" for i in range(len(tokens)): try: rendered_llvm += str(Token.resolve(tokens[i])) except AttributeError as e: raise ValueError( e, "Cannot resolve token: %s in: %s" % (tokens[i], str(tokens))) if tokens[i] != "\n" and i != (len(tokens) - 1) and tokens[i + 1] != ",": rendered_llvm += " " return rendered_llvm
def __init__(self, operation_list): Token.__init__(self) self._operator = operation_list[0] self._operands = operation_list[1:]
def result(token): try: print("Token value:", Token.resolve(token)) except AttributeError as _: print("Token value: unassigned")
def __init__(self): Token.__init__(self) self._value = None
Determines the equality of this snippet when compared to another snippet :param other: the other snippet :type: Snippet :return: True or False based off of equality. :rtype: bool """ pass if __name__ == "__main__": snip = Snippet(0, "%1 = alloca i32, align 4", 0) snip1 = Snippet(1, "%1 = alloca i32, align 5", 0) snip2 = Snippet(2, "%1 = alloca i32, align 6", 1) snip3 = Snippet(3, "%1 = alloca i32, align 7", 0) snip.add_connection(snip1) snip.add_connection(snip2) snip.add_connection(snip3) meta = snip.get_meta_tokens() print(snip.get_unrendered_swaps()) print(meta[0] == "%test") print(snip.get_rendered_swaps()) Token.reset_all() try: print(snip.get_rendered_swaps()) except AttributeError: print("All tokens were reset")