+def _comma_separated_list_parser(index, tokens):
+ failure = (False, index, None)
+
+ expressions = []
+
+ success, index, expression = _addition_level_expression_parser(index, tokens)
+
+ if success:
+ expressions.append(expression)
+ else:
+ return failure
+
+ while success and index < len(tokens) and tokens[index].type == 'comma':
+ success = False
+
+ if index + 1 < len(tokens):
+ success, try_index, expression = _addition_level_expression_parser(index + 1, tokens)
+
+ if success:
+ expressions.append(expression)
+ index = try_index
+
+ return True, index, tuple(expressions)
+
+
+FurFunctionCallExpression = collections.namedtuple(
+ 'FurFunctionCallExpression',