def main(): print_menu() cmd = input(">") if cmd == "1": parser = Parser("gr1.txt") seq = read_seq("seq.txt") parser.create_the_nightmare_table() parsing = parser.parse(seq, ["eps", "S"]) if len(parsing) == 0: print("amu ii bai") elif type(parsing[0]) == type("mno"): print("amu ii bai si incepe la tokenul:") print(parsing.reverse()) else: tree = ParseTree(parser.ll1, parsing, parser.productions) print(str(tree)) if cmd == "2": parser = Parser("grammar-ioana.txt") out = read_pif("PIFU_BUN2.txt") # print(out) parser.create_the_nightmare_table() parsing = parser.parse(out, ["eps", "START"]) print(parsing) if len(parsing) == 0: print("amu ii bai") elif type(parsing[0]) == type("mno"): print("amu ii bai si incepe la tokenul:") parsing.reverse() print(parsing) else: tree = ParseTree(parser.ll1, parsing, parser.productions) print(str(tree))
stack.append(prunc) self.nodes.append(prunc) self.crt += len(list_of_rhs) + 1 index += 1 def __str__(self): string = "" for node in self.nodes: substring = "" substring += str(node.index) + " " + str(node.val) + " " + str( node.parent) + " " + str(node.soeur) + "\n" string += substring return string if __name__ == "__main__": parser = Parser("grammar-ioana.txt") parser.create_the_nightmare_table() parsing = parser.parse(['eps', 'intConst', '+', 'intConst'], ['eps', 'START']) print(parsing) parsing = parser.parse( ['eps', '}', ';', 'intConst', '<-', 'id', '{', 'main_body'], ['eps', 'START']) print(parsing) tree = ParseTree(parser.ll1, parsing, parser.productions) print(str(tree))