line = f.readline().strip() for p in productions: print(p) return productions def read_pif(): text = "" sequence = [] with open("pif.txt", "r")as f: line = f.readline().strip() while line != "": sequence.append(line) line = f.readline().strip() return sequence non_terminals, terminals, initial_state = read_part_grammar() # print(non_terminals) # print(terminals) # print(initial_state) productions = read_productions() g = Parser(non_terminals, terminals, productions, initial_state) g.canonical_collection() g.build_actions() sequence = read_pif() g.parse(sequence, g.parse_table) g.build_parse_tree() print('Parse tree:') g.tree_root.bfs()