Exemple #1
0
    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]]
Exemple #2
0
 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)
Exemple #3
0
 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
Exemple #4
0
 def __init__(self, operation_list):
     Token.__init__(self)
     self._operator = operation_list[0]
     self._operands = operation_list[1:]
Exemple #5
0
 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
Exemple #7
0
        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")