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

Method test_python_expr

Lib/test/test_peg_generator/test_pegen.py:483–505  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

481 )
482
483 def test_python_expr(self) -> None:
484 grammar = """
485 start: expr NEWLINE? $ { ast.Expression(expr) }
486 expr: ( expr '+' term { ast.BinOp(expr, ast.Add(), term, lineno=expr.lineno, col_offset=expr.col_offset, end_lineno=term.end_lineno, end_col_offset=term.end_col_offset) }
487 | expr '-' term { ast.BinOp(expr, ast.Sub(), term, lineno=expr.lineno, col_offset=expr.col_offset, end_lineno=term.end_lineno, end_col_offset=term.end_col_offset) }
488 | term { term }
489 )
490 term: ( l=term '*' r=factor { ast.BinOp(l, ast.Mult(), r, lineno=l.lineno, col_offset=l.col_offset, end_lineno=r.end_lineno, end_col_offset=r.end_col_offset) }
491 | l=term '/' r=factor { ast.BinOp(l, ast.Div(), r, lineno=l.lineno, col_offset=l.col_offset, end_lineno=r.end_lineno, end_col_offset=r.end_col_offset) }
492 | factor { factor }
493 )
494 factor: ( '(' expr ')' { expr }
495 | atom { atom }
496 )
497 atom: ( n=NAME { ast.Name(id=n.string, ctx=ast.Load(), lineno=n.start[0], col_offset=n.start[1], end_lineno=n.end[0], end_col_offset=n.end[1]) }
498 | n=NUMBER { ast.Constant(value=ast.literal_eval(n.string), lineno=n.start[0], col_offset=n.start[1], end_lineno=n.end[0], end_col_offset=n.end[1]) }
499 )
500 """
501 parser_class = make_parser(grammar)
502 node = parse_string("(1 + 2*3 + 5)/(6 - 2)\n", parser_class)
503 code = compile(node, "", "eval")
504 val = eval(code)
505 self.assertEqual(val, 3.0)
506
507 def test_f_string_in_action(self) -> None:
508 grammar = """

Callers

nothing calls this directly

Calls 4

make_parserFunction · 0.90
parse_stringFunction · 0.90
compileFunction · 0.50
assertEqualMethod · 0.45

Tested by

no test coverage detected