file_input decorated decorator AT '@' NAME 'dataclass' NEWLINE '\n' /decorator classdef NAME 'class' NAME ' ' 'DebugVisitor' LPAR '(' power NAME 'Visitor' trailer LSQB '[' NAME 'T' RSQB ']' /trailer /power RPAR ')' COLON ':' suite NEWLINE '\n' INDENT '' simple_stmt expr_stmt NAME ' ' 'tree_depth' annassign COLON ':' NAME ' ' 'int' EQUAL ' ' '=' NUMBER ' ' '0' /annassign /expr_stmt NEWLINE '\n' /simple_stmt funcdef NAME '\n ' 'def' NAME ' ' 'visit_default' parameters LPAR '(' typedargslist NAME 'self' COMMA ',' tname NAME ' ' 'node' COLON ':' NAME ' ' 'LN' /tname /typedargslist RPAR ')' /parameters RARROW ' ' '->' power NAME ' ' 'Iterator' trailer LSQB '[' NAME 'T' RSQB ']' /trailer /power COLON ':' suite NEWLINE '\n' INDENT '' simple_stmt expr_stmt NAME ' ' 'indent' EQUAL ' ' '=' term STRING ' ' "' '" STAR ' ' '*' atom LPAR ' ' '(' term NUMBER '2' STAR ' ' '*' power NAME ' ' 'self' trailer DOT '.' NAME 'tree_depth' /trailer /power /term RPAR ')' /atom /term /expr_stmt NEWLINE '\n' /simple_stmt if_stmt NAME ' ' 'if' power NAME ' ' 'isinstance' trailer LPAR '(' arglist NAME 'node' COMMA ',' NAME ' ' 'Node' /arglist RPAR ')' /trailer /power COLON ':' suite NEWLINE '\n' INDENT '' simple_stmt expr_stmt NAME ' ' '_type' EQUAL ' ' '=' power NAME ' ' 'type_repr' trailer LPAR '(' power NAME 'node' trailer DOT '.' NAME 'type' /trailer /power RPAR ')' /trailer /power /expr_stmt NEWLINE '\n' /simple_stmt simple_stmt power NAME ' ' 'out' trailer LPAR '(' arglist STRING "f'{indent}{_type}'" COMMA ',' argument NAME ' ' 'fg' EQUAL '=' STRING "'yellow'" /argument /arglist RPAR ')' /trailer /power NEWLINE '\n' /simple_stmt simple_stmt expr_stmt power NAME ' ' 'self' trailer DOT '.' NAME 'tree_depth' /trailer /power PLUSEQUAL ' ' '+=' NUMBER ' ' '1' /expr_stmt NEWLINE '\n' /simple_stmt for_stmt NAME ' ' 'for' NAME ' ' 'child' NAME ' ' 'in' power NAME ' ' 'node' trailer DOT '.' NAME 'children' /trailer /power COLON ':' suite NEWLINE '\n' INDENT '' simple_stmt yield_expr NAME ' ' 'yield' yield_arg NAME ' ' 'from' power NAME ' ' 'self' trailer DOT '.' NAME 'visit' /trailer trailer LPAR '(' NAME 'child' RPAR ')' /trailer /power /yield_arg /yield_expr NEWLINE '\n' /simple_stmt DEDENT '' /suite /for_stmt simple_stmt expr_stmt power NAME '\n ' 'self' trailer DOT '.' NAME 'tree_depth' /trailer /power MINEQUAL ' ' '-=' NUMBER ' ' '1' /expr_stmt NEWLINE '\n' /simple_stmt simple_stmt power NAME ' ' 'out' trailer LPAR '(' arglist STRING "f'{indent}/{_type}'" COMMA ',' argument NAME ' ' 'fg' EQUAL '=' STRING "'yellow'" /argument COMMA ',' argument NAME ' ' 'bold' EQUAL '=' NAME 'False' /argument /arglist RPAR ')' /trailer /power NEWLINE '\n' /simple_stmt DEDENT '' /suite NAME ' ' 'else' COLON ':' suite NEWLINE '\n' INDENT '' simple_stmt expr_stmt NAME ' ' '_type' EQUAL ' ' '=' power NAME ' ' 'token' trailer DOT '.' NAME 'tok_name' /trailer trailer DOT '.' NAME 'get' /trailer trailer LPAR '(' arglist power NAME 'node' trailer DOT '.' NAME 'type' /trailer /power COMMA ',' power NAME ' ' 'str' trailer LPAR '(' power NAME 'node' trailer DOT '.' NAME 'type' /trailer /power RPAR ')' /trailer /power /arglist RPAR ')' /trailer /power /expr_stmt NEWLINE '\n' /simple_stmt simple_stmt power NAME ' ' 'out' trailer LPAR '(' arglist STRING "f'{indent}{_type}'" COMMA ',' argument NAME ' ' 'fg' EQUAL '=' STRING "'blue'" /argument COMMA ',' argument NAME ' ' 'nl' EQUAL '=' NAME 'False' /argument /arglist RPAR ')' /trailer /power NEWLINE '\n' /simple_stmt if_stmt NAME ' ' 'if' power NAME ' ' 'node' trailer DOT '.' NAME 'prefix' /trailer /power COLON ':' suite NEWLINE '\n' INDENT '' simple_stmt power NAME " # We don't have to handle prefixes for `Node` objects since\n # that delegates to the first child anyway.\n " 'out' trailer LPAR '(' arglist STRING "f' {node.prefix!r}'" COMMA ',' argument NAME ' ' 'fg' EQUAL '=' STRING "'green'" /argument COMMA ',' argument NAME ' ' 'bold' EQUAL '=' NAME 'False' /argument COMMA ',' argument NAME ' ' 'nl' EQUAL '=' NAME 'False' /argument /arglist RPAR ')' /trailer /power NEWLINE '\n' /simple_stmt DEDENT '' /suite /if_stmt simple_stmt power NAME ' ' 'out' trailer LPAR '(' arglist STRING "f' {node.value!r}'" COMMA ',' argument NAME ' ' 'fg' EQUAL '=' STRING "'blue'" /argument COMMA ',' argument NAME ' ' 'bold' EQUAL '=' NAME 'False' /argument /arglist RPAR ')' /trailer /power NEWLINE '\n' /simple_stmt DEDENT '' /suite /if_stmt DEDENT '' /suite /funcdef decorated decorator AT '\n ' '@' NAME 'classmethod' NEWLINE '\n' /decorator funcdef NAME ' ' 'def' NAME ' ' 'show' parameters LPAR '(' typedargslist NAME 'cls' COMMA ',' tname NAME ' ' 'code' COLON ':' NAME ' ' 'str' /tname /typedargslist RPAR ')' /parameters RARROW ' ' '->' NAME ' ' 'None' COLON ':' suite NEWLINE '\n' INDENT '' simple_stmt STRING ' ' '"""Pretty-prints a given string of `code`.\n\n Convenience method for debugging.\n """' NEWLINE '\n' /simple_stmt simple_stmt expr_stmt NAME ' ' 'v' annassign COLON ':' power NAME ' ' 'DebugVisitor' trailer LSQB '[' NAME 'None' RSQB ']' /trailer /power EQUAL ' ' '=' power NAME ' ' 'DebugVisitor' trailer LPAR '(' RPAR ')' /trailer /power /annassign /expr_stmt NEWLINE '\n' /simple_stmt simple_stmt power NAME ' ' 'list' trailer LPAR '(' power NAME 'v' trailer DOT '.' NAME 'visit' /trailer trailer LPAR '(' power NAME 'lib2to3_parse' trailer LPAR '(' NAME 'code' RPAR ')' /trailer /power RPAR ')' /trailer /power RPAR ')' /trailer /power NEWLINE '\n' /simple_stmt DEDENT '' /suite /funcdef /decorated DEDENT '' /suite /classdef /decorated ENDMARKER '' /file_input