<s> """<STR_LIT>""" <EOL> from nuitka . nodes . AssignNodes import ( <EOL> ExpressionTargetTempVariableRef , <EOL> ExpressionTargetVariableRef , <EOL> StatementAssignmentVariable , <EOL> StatementReleaseVariable <EOL> ) <EOL> from nuitka . nodes . BuiltinIteratorNodes import ( <EOL> ExpressionBuiltinIter1 , <EOL> ExpressionSpecialUnpack , <EOL> StatementSpecialUnpackCheck <EOL> ) <EOL> from nuitka . nodes . BuiltinRefNodes import ExpressionBuiltinRef <EOL> from nuitka . nodes . CallNodes import ExpressionCallNoKeywords <EOL> from nuitka . nodes . CodeObjectSpecs import CodeObjectSpec <EOL> from nuitka . nodes . ConstantRefNodes import ExpressionConstantRef <EOL> from nuitka . nodes . ContainerMakingNodes import ExpressionMakeTuple <EOL> from nuitka . nodes . CoroutineNodes import ( <EOL> ExpressionCoroutineObjectBody , <EOL> ExpressionMakeCoroutineObject <EOL> ) <EOL> from nuitka . nodes . FunctionNodes import ( <EOL> ExpressionFunctionBody , <EOL> ExpressionFunctionCall , <EOL> ExpressionFunctionCreation , <EOL> ExpressionFunctionRef <EOL> ) <EOL> from nuitka . nodes . GeneratorNodes import ( <EOL> ExpressionGeneratorObjectBody , <EOL> ExpressionMakeGeneratorObject , <EOL> StatementGeneratorReturn <EOL> ) <EOL> from nuitka . nodes . ParameterSpecs import ParameterSpec <EOL> from nuitka . nodes . ReturnNodes import StatementReturn <EOL> from nuitka . nodes . VariableRefNodes import ( <EOL> ExpressionTempVariableRef , <EOL> ExpressionVariableRef <EOL> ) <EOL> from nuitka . PythonVersions import python_version <EOL> from nuitka . tree import SyntaxErrors <EOL> from . Helpers import ( <EOL> buildNode , <EOL> buildNodeList , <EOL> buildStatementsNode , <EOL> detectFunctionBodyKind , <EOL> extractDocFromBody , <EOL> getKind , <EOL> makeDictCreationOrConstant , <EOL> makeStatementsSequenceFromStatement , <EOL> mangleName <EOL> ) <EOL> from . ReformulationTryFinallyStatements import makeTryFinallyStatement <EOL> def _insertFinalReturnStatement ( function_statements_body , return_class , <EOL> source_ref ) : <EOL> return_statement = return_class ( <EOL> expression = ExpressionConstantRef ( <EOL> constant = None , <EOL> user_provided = True , <EOL> source_ref = source_ref <EOL> ) , <EOL> source_ref = source_ref <EOL> ) <EOL> if function_statements_body is None : <EOL> function_statements_body = makeStatementsSequenceFromStatement ( <EOL> statement = return_statement , <EOL> ) <EOL> elif not function_statements_body . isStatementAborting ( ) : <EOL> function_statements_body . setStatements ( <EOL> function_statements_body . getStatements ( ) + <EOL> ( <EOL> return_statement , <EOL> ) <EOL> ) <EOL> return function_statements_body <EOL> def buildFunctionNode ( provider , node , source_ref ) : <EOL> assert getKind ( node ) == "<STR_LIT>" <EOL> function_statement_nodes , function_doc = extractDocFromBody ( node ) <EOL> function_kind , flags , _written_variables , _non_local_declarations , _global_declarations = detectFunctionBodyKind ( <EOL> nodes = function_statement_nodes <EOL> ) <EOL> outer_body , function_body , code_object = buildFunctionWithParsing ( <EOL> provider = provider , <EOL> function_kind = function_kind , <EOL> name = node . name , <EOL> function_doc = function_doc , <EOL> flags = flags , <EOL> node = node , <EOL> source_ref = source_ref <EOL> ) <EOL> if function_kind == "<STR_LIT>" : <EOL> code_body = function_body <EOL> elif function_kind == "<STR_LIT>" : <EOL> code_body = ExpressionGeneratorObjectBody ( <EOL> provider = function_body , <EOL> name = node . name , <EOL> flags = flags , <EOL> source_ref = source_ref <EOL> ) <EOL> for variable in function_body . getVariables ( ) : <EOL> code_body . getVariableForReference ( variable . getName ( ) ) <EOL> else : <EOL> assert False , function_kind <EOL> if function_kind == "<STR_LIT>" : <EOL> function_body . setBody ( <EOL> makeStatementsSequenceFromStatement ( <EOL> statement = StatementReturn ( <EOL> expression = ExpressionMakeGeneratorObject ( <EOL> generator_ref = ExpressionFunctionRef ( <EOL> function_body = code_body , <EOL> source_ref = source_ref <EOL> ) , <EOL> code_object = code_object , <EOL> source_ref = source_ref <EOL> ) , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> ) <EOL> decorators = buildNodeList ( <EOL> provider = provider , <EOL> nodes = reversed ( node . decorator_list ) , <EOL> source_ref = source_ref <EOL> ) <EOL> defaults = buildNodeList ( <EOL> provider = provider , <EOL> nodes = node . args . defaults , <EOL> source_ref = source_ref <EOL> ) <EOL> kw_defaults = buildParameterKwDefaults ( <EOL> provider = provider , <EOL> node = node , <EOL> function_body = function_body , <EOL> source_ref = source_ref <EOL> ) <EOL> function_statements_body = buildStatementsNode ( <EOL> provider = code_body , <EOL> nodes = function_statement_nodes , <EOL> code_object = code_object , <EOL> source_ref = source_ref <EOL> ) <EOL> if function_kind == "<STR_LIT>" : <EOL> function_statements_body = _insertFinalReturnStatement ( <EOL> function_statements_body = function_statements_body , <EOL> return_class = StatementReturn , <EOL> source_ref = source_ref <EOL> ) <EOL> if function_statements_body . isStatementsFrame ( ) : <EOL> function_statements_body = makeStatementsSequenceFromStatement ( <EOL> statement = function_statements_body <EOL> ) <EOL> code_body . setBody ( <EOL> function_statements_body <EOL> ) <EOL> annotations = buildParameterAnnotations ( provider , node , source_ref ) <EOL> function_creation = ExpressionFunctionCreation ( <EOL> function_ref = ExpressionFunctionRef ( <EOL> function_body = outer_body , <EOL> source_ref = source_ref <EOL> ) , <EOL> code_object = code_object , <EOL> defaults = defaults , <EOL> kw_defaults = kw_defaults , <EOL> annotations = annotations , <EOL> source_ref = source_ref <EOL> ) <EOL> if node . name == "<STR_LIT>" and provider . isExpressionClassBody ( ) : <EOL> for decorator in decorators : <EOL> if decorator . isExpressionVariableRef ( ) and decorator . getVariableName ( ) == "<STR_LIT>" : <EOL> break <EOL> else : <EOL> decorators . append ( <EOL> ExpressionBuiltinRef ( <EOL> builtin_name = "<STR_LIT>" , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> decorated_function = function_creation <EOL> for decorator in decorators : <EOL> decorated_function = ExpressionCallNoKeywords ( <EOL> called = decorator , <EOL> args = ExpressionMakeTuple ( <EOL> elements = ( decorated_function , ) , <EOL> source_ref = source_ref <EOL> ) , <EOL> source_ref = decorator . getSourceReference ( ) <EOL> ) <EOL> result = StatementAssignmentVariable ( <EOL> variable_ref = ExpressionTargetVariableRef ( <EOL> variable_name = mangleName ( node . name , provider ) , <EOL> source_ref = source_ref <EOL> ) , <EOL> source = decorated_function , <EOL> source_ref = source_ref <EOL> ) <EOL> if python_version >= <NUM_LIT> : <EOL> function_body . qualname_setup = result . getTargetVariableRef ( ) <EOL> return result <EOL> def buildAsyncFunctionNode ( provider , node , source_ref ) : <EOL> assert getKind ( node ) == "<STR_LIT>" <EOL> function_statement_nodes , function_doc = extractDocFromBody ( node ) <EOL> creator_function_body , _ , code_object = buildFunctionWithParsing ( <EOL> provider = provider , <EOL> function_kind = "<STR_LIT>" , <EOL> name = node . name , <EOL> flags = set ( ) , <EOL> function_doc = function_doc , <EOL> node = node , <EOL> source_ref = source_ref <EOL> ) <EOL> function_body = ExpressionCoroutineObjectBody ( <EOL> provider = creator_function_body , <EOL> name = node . name , <EOL> flags = set ( ) , <EOL> source_ref = source_ref <EOL> ) <EOL> decorators = buildNodeList ( <EOL> provider = provider , <EOL> nodes = reversed ( node . decorator_list ) , <EOL> source_ref = source_ref <EOL> ) <EOL> defaults = buildNodeList ( <EOL> provider = provider , <EOL> nodes = node . args . defaults , <EOL> source_ref = source_ref <EOL> ) <EOL> function_statements_body = buildStatementsNode ( <EOL> provider = function_body , <EOL> nodes = function_statement_nodes , <EOL> code_object = code_object , <EOL> source_ref = source_ref <EOL> ) <EOL> function_statements_body = _insertFinalReturnStatement ( <EOL> function_statements_body = function_statements_body , <EOL> return_class = StatementGeneratorReturn , <EOL> source_ref = source_ref <EOL> ) <EOL> if function_statements_body . isStatementsFrame ( ) : <EOL> function_statements_body = makeStatementsSequenceFromStatement ( <EOL> statement = function_statements_body <EOL> ) <EOL> function_body . setBody ( <EOL> function_statements_body <EOL> ) <EOL> annotations = buildParameterAnnotations ( provider , node , source_ref ) <EOL> kw_defaults = buildParameterKwDefaults ( <EOL> provider = provider , <EOL> node = node , <EOL> function_body = creator_function_body , <EOL> source_ref = source_ref <EOL> ) <EOL> creator_function_body . setBody ( <EOL> makeStatementsSequenceFromStatement ( <EOL> statement = StatementReturn ( <EOL> expression = ExpressionMakeCoroutineObject ( <EOL> coroutine_ref = ExpressionFunctionRef ( <EOL> function_body = function_body , <EOL> source_ref = source_ref <EOL> ) , <EOL> code_object = code_object , <EOL> source_ref = source_ref <EOL> ) , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> ) <EOL> function_creation = ExpressionFunctionCreation ( <EOL> function_ref = ExpressionFunctionRef ( <EOL> function_body = creator_function_body , <EOL> source_ref = source_ref <EOL> ) , <EOL> code_object = code_object , <EOL> defaults = defaults , <EOL> kw_defaults = kw_defaults , <EOL> annotations = annotations , <EOL> source_ref = source_ref <EOL> ) <EOL> decorated_function = function_creation <EOL> for decorator in decorators : <EOL> decorated_function = ExpressionCallNoKeywords ( <EOL> called = decorator , <EOL> args = ExpressionMakeTuple ( <EOL> elements = ( decorated_function , ) , <EOL> source_ref = source_ref <EOL> ) , <EOL> source_ref = decorator . getSourceReference ( ) <EOL> ) <EOL> result = StatementAssignmentVariable ( <EOL> variable_ref = ExpressionTargetVariableRef ( <EOL> variable_name = mangleName ( node . name , provider ) , <EOL> source_ref = source_ref <EOL> ) , <EOL> source = decorated_function , <EOL> source_ref = source_ref <EOL> ) <EOL> function_body . qualname_setup = result . getTargetVariableRef ( ) <EOL> return result <EOL> def buildParameterKwDefaults ( provider , node , function_body , source_ref ) : <EOL> if python_version >= <NUM_LIT> : <EOL> kw_only_names = function_body . getParameters ( ) . getKwOnlyParameterNames ( ) <EOL> if kw_only_names : <EOL> keys = [ ] <EOL> values = [ ] <EOL> for kw_only_name , kw_default in zip ( kw_only_names , node . args . kw_defaults ) : <EOL> if kw_default is not None : <EOL> keys . append ( <EOL> ExpressionConstantRef ( <EOL> constant = kw_only_name , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> values . append ( <EOL> buildNode ( provider , kw_default , source_ref ) <EOL> ) <EOL> kw_defaults = makeDictCreationOrConstant ( <EOL> keys = keys , <EOL> values = values , <EOL> source_ref = source_ref <EOL> ) <EOL> else : <EOL> kw_defaults = None <EOL> else : <EOL> kw_defaults = None <EOL> return kw_defaults <EOL> def buildParameterAnnotations ( provider , node , source_ref ) : <EOL> if python_version < <NUM_LIT> : <EOL> return None <EOL> if python_version < <NUM_LIT> : <EOL> mangle = lambda variable_name : variable_name <EOL> else : <EOL> mangle = lambda variable_name : mangleName ( variable_name , provider ) <EOL> keys = [ ] <EOL> values = [ ] <EOL> def addAnnotation ( key , value ) : <EOL> keys . append ( <EOL> ExpressionConstantRef ( <EOL> constant = mangle ( key ) , <EOL> source_ref = source_ref , <EOL> user_provided = True <EOL> ) <EOL> ) <EOL> values . append ( value ) <EOL> def extractArg ( arg ) : <EOL> if getKind ( arg ) == "<STR_LIT:Name>" : <EOL> assert arg . annotation is None <EOL> elif getKind ( arg ) == "<STR_LIT>" : <EOL> if arg . annotation is not None : <EOL> addAnnotation ( <EOL> key = arg . arg , <EOL> value = buildNode ( provider , arg . annotation , source_ref ) <EOL> ) <EOL> elif getKind ( arg ) == "<STR_LIT>" : <EOL> for arg in arg . elts : <EOL> extractArg ( arg ) <EOL> else : <EOL> assert False , getKind ( arg ) <EOL> for arg in node . args . args : <EOL> extractArg ( arg ) <EOL> for arg in node . args . kwonlyargs : <EOL> extractArg ( arg ) <EOL> if python_version < <NUM_LIT> : <EOL> if node . args . varargannotation is not None : <EOL> addAnnotation ( <EOL> key = node . args . vararg , <EOL> value = buildNode ( <EOL> provider , node . args . varargannotation , source_ref <EOL> ) <EOL> ) <EOL> if node . args . kwargannotation is not None : <EOL> addAnnotation ( <EOL> key = node . args . kwarg , <EOL> value = buildNode ( <EOL> provider , node . args . kwargannotation , source_ref <EOL> ) <EOL> ) <EOL> else : <EOL> if node . args . vararg is not None : <EOL> extractArg ( node . args . vararg ) <EOL> if node . args . kwarg is not None : <EOL> extractArg ( node . args . kwarg ) <EOL> if hasattr ( node , "<STR_LIT>" ) and node . returns is not None : <EOL> addAnnotation ( <EOL> key = "<STR_LIT>" , <EOL> value = buildNode ( <EOL> provider , node . returns , source_ref <EOL> ) <EOL> ) <EOL> if keys : <EOL> return makeDictCreationOrConstant ( <EOL> keys = keys , <EOL> values = values , <EOL> source_ref = source_ref <EOL> ) <EOL> else : <EOL> return None <EOL> def buildFunctionWithParsing ( provider , function_kind , name , function_doc , flags , <EOL> node , source_ref ) : <EOL> kind = getKind ( node ) <EOL> assert kind in ( "<STR_LIT>" , "<STR_LIT>" , "<STR_LIT>" ) , "<STR_LIT>" + kind <EOL> def extractArg ( arg ) : <EOL> if arg is None : <EOL> return None <EOL> elif type ( arg ) is str : <EOL> return mangleName ( arg , provider ) <EOL> elif getKind ( arg ) == "<STR_LIT:Name>" : <EOL> return mangleName ( arg . id , provider ) <EOL> elif getKind ( arg ) == "<STR_LIT>" : <EOL> return mangleName ( arg . arg , provider ) <EOL> elif getKind ( arg ) == "<STR_LIT>" : <EOL> assert False <EOL> else : <EOL> assert False , getKind ( arg ) <EOL> special_args = { } <EOL> def extractNormalArgs ( args ) : <EOL> normal_args = [ ] <EOL> for arg in args : <EOL> if type ( arg ) is not str and getKind ( arg ) == "<STR_LIT>" : <EOL> special_arg_name = "<STR_LIT>" % ( len ( special_args ) + <NUM_LIT:1> ) <EOL> special_args [ special_arg_name ] = arg . elts <EOL> normal_args . append ( special_arg_name ) <EOL> else : <EOL> normal_args . append ( extractArg ( arg ) ) <EOL> return normal_args <EOL> normal_args = extractNormalArgs ( node . args . args ) <EOL> parameters = ParameterSpec ( <EOL> name = name , <EOL> normal_args = normal_args , <EOL> kw_only_args = [ <EOL> extractArg ( arg ) <EOL> for arg in <EOL> node . args . kwonlyargs <EOL> ] <EOL> if python_version >= <NUM_LIT> else <EOL> [ ] , <EOL> list_star_arg = extractArg ( node . args . vararg ) , <EOL> dict_star_arg = extractArg ( node . args . kwarg ) , <EOL> default_count = len ( node . args . defaults ) <EOL> ) <EOL> message = parameters . checkValid ( ) <EOL> if message is not None : <EOL> SyntaxErrors . raiseSyntaxError ( <EOL> message , <EOL> source_ref <EOL> ) <EOL> code_object = CodeObjectSpec ( <EOL> code_name = name , <EOL> code_kind = function_kind , <EOL> arg_names = parameters . getParameterNames ( ) , <EOL> kw_only_count = parameters . getKwOnlyParameterCount ( ) , <EOL> has_starlist = parameters . getStarListArgumentName ( ) is not None , <EOL> has_stardict = parameters . getStarDictArgumentName ( ) is not None <EOL> ) <EOL> outer_body = ExpressionFunctionBody ( <EOL> provider = provider , <EOL> name = name , <EOL> flags = flags , <EOL> doc = function_doc , <EOL> parameters = parameters , <EOL> source_ref = source_ref <EOL> ) <EOL> if special_args : <EOL> inner_name = name . strip ( "<STR_LIT>" ) + "<STR_LIT>" <EOL> inner_arg_names = [ ] <EOL> iter_vars = [ ] <EOL> values = [ ] <EOL> statements = [ ] <EOL> def unpackFrom ( source , arg_names ) : <EOL> accesses = [ ] <EOL> sub_special_index = <NUM_LIT:0> <EOL> iter_var = outer_body . allocateTempVariable ( None , "<STR_LIT>" % len ( iter_vars ) ) <EOL> iter_vars . append ( iter_var ) <EOL> statements . append ( <EOL> StatementAssignmentVariable ( <EOL> variable_ref = ExpressionTargetTempVariableRef ( <EOL> variable = iter_var , <EOL> source_ref = source_ref <EOL> ) , <EOL> source = ExpressionBuiltinIter1 ( <EOL> value = source , <EOL> source_ref = source_ref <EOL> ) , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> for element_index , arg_name in enumerate ( arg_names ) : <EOL> if getKind ( arg_name ) == "<STR_LIT:Name>" : <EOL> inner_arg_names . append ( arg_name . id ) <EOL> arg_var = outer_body . allocateTempVariable ( None , "<STR_LIT>" + arg_name . id ) <EOL> statements . append ( <EOL> StatementAssignmentVariable ( <EOL> variable_ref = ExpressionTargetTempVariableRef ( <EOL> variable = arg_var , <EOL> source_ref = source_ref <EOL> ) , <EOL> source = ExpressionSpecialUnpack ( <EOL> value = ExpressionTempVariableRef ( <EOL> variable = iter_var , <EOL> source_ref = source_ref <EOL> ) , <EOL> count = element_index + <NUM_LIT:1> , <EOL> expected = len ( arg_names ) , <EOL> source_ref = source_ref <EOL> ) , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> accesses . append ( <EOL> ExpressionTempVariableRef ( <EOL> variable = arg_var , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> elif getKind ( arg_name ) == "<STR_LIT>" : <EOL> accesses . extend ( <EOL> unpackFrom ( <EOL> source = ExpressionSpecialUnpack ( <EOL> value = ExpressionTempVariableRef ( <EOL> variable = iter_var , <EOL> source_ref = source_ref <EOL> ) , <EOL> count = element_index + <NUM_LIT:1> , <EOL> expected = len ( arg_names ) , <EOL> source_ref = source_ref <EOL> ) , <EOL> arg_names = arg_name . elts <EOL> ) <EOL> ) <EOL> sub_special_index += <NUM_LIT:1> <EOL> else : <EOL> assert False , arg_name <EOL> statements . append ( <EOL> StatementSpecialUnpackCheck ( <EOL> iterator = ExpressionTempVariableRef ( <EOL> variable = iter_var , <EOL> source_ref = source_ref <EOL> ) , <EOL> count = len ( arg_names ) , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> return accesses <EOL> for arg_name in parameters . getParameterNames ( ) : <EOL> if arg_name . startswith ( '<STR_LIT:.>' ) : <EOL> source = ExpressionVariableRef ( <EOL> variable_name = arg_name , <EOL> source_ref = source_ref <EOL> ) <EOL> values . extend ( <EOL> unpackFrom ( source , special_args [ arg_name ] ) <EOL> ) <EOL> else : <EOL> values . append ( <EOL> ExpressionVariableRef ( <EOL> variable_name = arg_name , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> inner_arg_names . append ( arg_name ) <EOL> inner_parameters = ParameterSpec ( <EOL> name = inner_name , <EOL> normal_args = inner_arg_names , <EOL> kw_only_args = ( ) , <EOL> list_star_arg = None , <EOL> dict_star_arg = None , <EOL> default_count = None <EOL> ) <EOL> function_body = ExpressionFunctionBody ( <EOL> provider = outer_body , <EOL> name = inner_name , <EOL> flags = flags , <EOL> doc = function_doc , <EOL> parameters = inner_parameters , <EOL> source_ref = source_ref <EOL> ) <EOL> statements . append ( <EOL> StatementReturn ( <EOL> ExpressionFunctionCall ( <EOL> function = ExpressionFunctionCreation ( <EOL> function_ref = ExpressionFunctionRef ( <EOL> function_body = function_body , <EOL> source_ref = source_ref <EOL> ) , <EOL> code_object = code_object , <EOL> defaults = ( ) , <EOL> kw_defaults = None , <EOL> annotations = None , <EOL> source_ref = source_ref <EOL> ) , <EOL> values = values , <EOL> source_ref = source_ref <EOL> ) , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> outer_body . setBody ( <EOL> makeStatementsSequenceFromStatement ( <EOL> statement = makeTryFinallyStatement ( <EOL> provider , <EOL> tried = statements , <EOL> final = [ <EOL> StatementReleaseVariable ( <EOL> variable = variable , <EOL> source_ref = source_ref <EOL> ) <EOL> for variable in <EOL> outer_body . getTempVariables ( ) <EOL> ] , <EOL> source_ref = source_ref , <EOL> public_exc = False <EOL> ) <EOL> ) <EOL> ) <EOL> else : <EOL> function_body = outer_body <EOL> return outer_body , function_body , code_object <EOL> def addFunctionVariableReleases ( function ) : <EOL> assert function . isExpressionFunctionBody ( ) or function . isExpressionClassBody ( ) or function . isExpressionGeneratorObjectBody ( ) or function . isExpressionCoroutineObjectBody ( ) <EOL> releases = [ ] <EOL> source_ref = function . getSourceReference ( ) <EOL> for variable in function . getLocalVariables ( ) : <EOL> if variable . getOwner ( ) is not function : <EOL> continue <EOL> releases . append ( <EOL> StatementReleaseVariable ( <EOL> variable = variable , <EOL> source_ref = source_ref <EOL> ) <EOL> ) <EOL> if releases : <EOL> body = function . getBody ( ) <EOL> if body . isStatementsFrame ( ) : <EOL> body = makeStatementsSequenceFromStatement ( <EOL> statement = body <EOL> ) <EOL> body = makeTryFinallyStatement ( <EOL> provider = function , <EOL> tried = body , <EOL> final = releases , <EOL> source_ref = source_ref <EOL> ) <EOL> function . setBody ( <EOL> makeStatementsSequenceFromStatement ( <EOL> statement = body <EOL> ) <EOL> ) </s>
