MCPcopy Index your code
hub / github.com/python/cpython / simple_parser_main

Function simple_parser_main

Tools/peg_generator/pegen/parser.py:297–366  ·  view source on GitHub ↗
(parser_class: type[Parser])

Source from the content-addressed store, hash-verified

295
296
297def simple_parser_main(parser_class: type[Parser]) -> None:
298 argparser = argparse.ArgumentParser()
299 argparser.add_argument(
300 "-v",
301 "--verbose",
302 action="count",
303 default=0,
304 help="Print timing stats; repeat for more debug output",
305 )
306 argparser.add_argument(
307 "-q", "--quiet", action="store_true", help="Don't print the parsed program"
308 )
309 argparser.add_argument("filename", help="Input file ('-' to use stdin)")
310
311 args = argparser.parse_args()
312 verbose = args.verbose
313 verbose_tokenizer = verbose >= 3
314 verbose_parser = verbose == 2 or verbose >= 4
315
316 t0 = time.time()
317
318 filename = args.filename
319 if filename == "" or filename == "-":
320 filename = "<stdin>"
321 file = sys.stdin
322 else:
323 file = open(args.filename)
324 try:
325 tokengen = tokenize.generate_tokens(file.readline)
326 tokenizer = Tokenizer(tokengen, verbose=verbose_tokenizer)
327 parser = parser_class(tokenizer, verbose=verbose_parser)
328 tree = parser.start()
329 try:
330 if file.isatty():
331 endpos = 0
332 else:
333 endpos = file.tell()
334 except OSError:
335 endpos = 0
336 finally:
337 if file is not sys.stdin:
338 file.close()
339
340 t1 = time.time()
341
342 if not tree:
343 err = parser.make_syntax_error(filename)
344 traceback.print_exception(err.__class__, err, None)
345 sys.exit(1)
346
347 if not args.quiet:
348 print(tree)
349
350 if verbose:
351 dt = t1 - t0
352 diag = tokenizer.diagnose()
353 nlines = diag.end[0]
354 if diag.type == token.ENDMARKER:

Callers 1

grammar_parser.pyFile · 0.90

Calls 12

parse_argsMethod · 0.95
diagnoseMethod · 0.95
TokenizerClass · 0.90
openFunction · 0.50
add_argumentMethod · 0.45
timeMethod · 0.45
startMethod · 0.45
isattyMethod · 0.45
tellMethod · 0.45
closeMethod · 0.45
make_syntax_errorMethod · 0.45
exitMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…