cli.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:jtc 作者: jwilk-archive 项目源码 文件源码
def main(args):
    try:
        (opts, args) = getopt(args, 'o:TPX')
    except GetoptError:
        usage()
    if len(args) != 1:
        usage()

    from tokenizer import Tokenizer
    from parser import Parser
    from error import JtError
    import context
    from os.path import abspath

    filename = abspath(args[0])
    stdin = file(filename, 'r')
    target = 'P'
    stdout = sys.stdout
    for (ok, ov) in opts:
        if ok in ('-T', '-P', '-X'):
            target = ok[1]
        elif ok == '-o':
            stdout = file(ov, 'w')
    contents = stdin.read()
    tokenizer = Tokenizer()
    tokenizer.build()
    tokenizer.input(contents)
    parser = Parser(tokenizer)
    result_tree = None
    try:
        result_tree = parser.parse()
    except JtError, error:
        failure(error)
    context.add_pdf(result_tree)
    ok = context.inspect(result_tree)
    ok &= context.validate(result_tree)
    if target == 'T':
        print >>stdout, result_tree
    if not ok:
        failure()
    result_tree.filename = filename

    if target != 'T':
        if stdout.isatty():
            failure('Prevented from printing binary garbage to the terminal.')
        if target == 'P':
            result_tree.compile_pyc(stdout)
        elif target == 'X':
            result_tree.compile_x86(stdout)
        else:
            raise NotImplementedError()

# vim:ts=4 sts=4 sw=4 et
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号