def main(argv=sys.argv): # LOL FIXING SUM BUGS YO. sys.setrecursionlimit(10000) (opts, args) = parse_options(argv) logging.setLogLevel(level=opts.loglevel) joosc_opts = JooscOptions(opts.stage, opts.include_stdlib == True, opts.print_stdlib == True, opts.directory_crawl == True, opts.clean_output == True) if opts.test: logging.info("TESTING %s" % (opts.test)) # TODO: Decide when to toggle verbose. Old method was insufficient. test.setup_and_run(opts.test, opts.show_errors == True, False, joosc_opts) return 0 if len(args) < 1: logging.info("Nothing to compile.") return 0 joosc(args, joosc_opts)
# Shift stack.append(a) node_stack.append(node.Node(a[0], a, [])) #logging.info("#PARSE SHIFT : %s" % (stack)) #logging.info("#NODE STACK : %s" % (node_stack)) # Accept return node.Node("ROOT", children=node_stack) if __name__ == "__main__": import scanner import pprint logging.setLogLevel("INFO") t = [("BOF", "BOF"), ("id", "fat"), ("EOF", "EOF")] z = read_parse_table("assignment_testcases/others/sample.lr1") parse_tree = parse(t, z) print(parse_tree) print("BFS List of all nodes:") pprint.pprint(list(parse_tree.bfs_iter())) print("List of all leafs:") pprint.pprint(parse_tree.leafs()) z = read_parse_table("grammar.lr1") with open("assignment_testcases/others/sample.java", 'r') as f: t = scanner.scan(f.read()) parse_tree = parse(t, z)
if token_label in ['StringLiteral', 'CharacterLiteral']: token_value = unescape_str(token_value[1:-1]) tokens.append(Token(token_label, token_value, pos, line)) else: logging.error("LEXER FAILURE: pos = %d, line = %d; next few chars:\n%s" % (pos, line, program[pos:pos+20].replace("\n", "\\n"))) sys.exit(42) tokens.append(Token('EOF', '', pos, line)) # End of file augmentation token. return tokens if __name__ == "__main__": import test def test_work(path): try: with open(path, 'r') as f: scan(f.read()) return 0 except SystemExit as e: return 1 logging.setLogLevel("NONE") ts = test.TestRunner("Scanner", test_work) ts.assignment = "a1" ts.re_expected = "LEXER_EXCEPTION" #ts.verbose = True ts.run()