from pathlib import Path from argparse import ArgumentParser import os from .parser import Parser def compile_jack(input_path: Path, extensions: list, verbose: bool): try: filenames = os.listdir(input_path) files = [Path(input_path / f) for f in filenames] jack_files = filter(lambda f: f.suffix == ".jack", files) except NotADirectoryError: jack_files = [Path(input_path)] except: # TODO: error return for input_fn in jack_files: parser = Parser(input_fn, extensions=extensions) parser.tokenize() parser.parse() if __name__ == "__main__": parser = ArgumentParser("hackc") parser.add_argument("-v", "--verbose", action="store_true", help="verbose mode") parser.add_argument( "-E", "--extension", metavar="extension", action="append", help="enable extension of standard Jack", ) parser.add_argument("input_path", help="Jack file or directory") args = parser.parse_args() compile_jack(Path(args.input_path), args.extension or [], args.verbose)