cpdef p_power(PyrexScanner s)
cpdef p_new_expr(PyrexScanner s)
cpdef p_trailer(PyrexScanner s, node1)
+cpdef p_call_parse_args(PyrexScanner s, bint allow_genexp = *)
+cpdef p_call_build_packed_args(pos, positional_args, keyword_args, star_arg)
cpdef p_call(PyrexScanner s, function)
cpdef p_index(PyrexScanner s, base)
cpdef p_subscript_list(PyrexScanner s)
# arglist: argument (',' argument)* [',']
# argument: [test '='] test # Really [keyword '='] test
-def p_call_parse(s):
+def p_call_parse_args(s, allow_genexp = True):
# s.sy == '('
pos = s.position()
s.next()
s.expect(')')
return positional_args, keyword_args, star_arg, starstar_arg
-def p_call_prepare_full(pos, positional_args, keyword_args, star_arg):
+def p_call_build_packed_args(pos, positional_args, keyword_args, star_arg):
arg_tuple = None
keyword_dict = None
if positional_args or not star_arg:
pos = s.position()
positional_args, keyword_args, star_arg, starstar_arg = \
- p_call_parse(s)
+ p_call_parse_args(s)
if not (keyword_args or star_arg or starstar_arg):
return ExprNodes.SimpleCallNode(pos,
function = function,
args = positional_args)
else:
- arg_tuple, keyword_dict = p_call_prepare_full(pos,
- positional_args, keyword_args, star_arg)
+ arg_tuple, keyword_dict = p_call_build_packed_args(
+ pos, positional_args, keyword_args, star_arg)
return ExprNodes.GeneralCallNode(pos,
function = function,
positional_args = arg_tuple,
starstar_arg = None
if s.sy == '(':
positional_args, keyword_args, star_arg, starstar_arg = \
- p_call_parse(s)
- arg_tuple, keyword_dict = p_call_prepare_full(pos,
- positional_args, keyword_args, star_arg)
+ p_call_parse_args(s, allow_genexp = False)
+ arg_tuple, keyword_dict = p_call_build_packed_args(
+ pos, positional_args, keyword_args, star_arg)
if arg_tuple is None:
# XXX: empty arg_tuple
arg_tuple = ExprNodes.TupleNode(pos, args = [])