diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2019-09-09 20:36:13 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-09 20:36:13 (GMT) |
commit | 832e8640086ac4fa547c055a72929879cc5a963a (patch) | |
tree | a53bf8e8b0b8982eb1c1fbe6b858a426f3284c24 /Lib | |
parent | b9f65f01fd761da7799f36d29b54518399d3458e (diff) | |
download | cpython-832e8640086ac4fa547c055a72929879cc5a963a.zip cpython-832e8640086ac4fa547c055a72929879cc5a963a.tar.gz cpython-832e8640086ac4fa547c055a72929879cc5a963a.tar.bz2 |
bpo-38049: Add command-line interface for the ast module. (GH-15724)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/ast.py | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -550,3 +550,27 @@ _const_node_type_names = { bytes: 'Bytes', type(...): 'Ellipsis', } + + +def main(): + import argparse + + parser = argparse.ArgumentParser(prog='python -m ast') + parser.add_argument('infile', type=argparse.FileType(mode='rb'), nargs='?', + default='-', + help='the file to parse; defaults to stdin') + parser.add_argument('-m', '--mode', default='exec', + choices=('exec', 'single', 'eval', 'func_type'), + help='specify what kind of code must be parsed') + parser.add_argument('-a', '--include-attributes', action='store_true', + help='include attributes such as line numbers and ' + 'column offsets') + args = parser.parse_args() + + with args.infile as infile: + source = infile.read() + tree = parse(source, args.infile.name, args.mode, type_comments=True) + print(dump(tree, include_attributes=args.include_attributes, indent=3)) + +if __name__ == '__main__': + main() |