bpo-38049: Add command-line interface for the ast module. (GH-15724)

This commit is contained in:
Serhiy Storchaka 2019-09-09 23:36:13 +03:00 committed by GitHub
parent b9f65f01fd
commit 832e864008
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 61 additions and 0 deletions

View file

@ -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()