llvm-gcc-4.2-2.9/gcc/cp/parser.c
/* Parse an expression.

   expression:
     assignment-expression
     expression , assignment-expression

   CAST_P is true if this expression is the target of a cast.

   Returns a representation of the expression.  */
Parse an expression.

CAST_P is true if this expression is the target of a cast.

Returns a representation of the expression.
Parse an expression . CAST_P is true if this expression is the target of a cast . Returns a representation of the expression .
static tree
cp_parser_expression (cp_parser* parser, bool cast_p)
{
  tree expression = NULL_TREE;
  while (true)
    {
      tree assignment_expression;
      assignment_expression
	= cp_parser_assignment_expression (parser, cast_p);
      if (!expression)
	expression = assignment_expression;
      else
	expression = build_x_compound_expr (expression,
					    assignment_expression);
      if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA))
	break;
      cp_lexer_consume_token (parser->lexer);
      if (cp_parser_non_integral_constant_expression (parser,
						      "a comma operator"))
	expression = error_mark_node;
    }
  return expression;
}
static tree cp_parser_expression ( cp_parser * parser , bool cast_p ) { tree expression = NULL_TREE ; while ( true ) { tree assignment_expression ; assignment_expression = cp_parser_assignment_expression ( parser , cast_p ) ; if ( ! expression ) expression = assignment_expression ; else expression = build_x_compound_expr ( expression , assignment_expression ) ; if ( cp_lexer_next_token_is_not ( parser -> lexer , CPP_COMMA ) ) break ; cp_lexer_consume_token ( parser -> lexer ) ; if ( cp_parser_non_integral_constant_expression ( parser , " " ) ) expression = error_mark_node ; } return expression ; }
Parse an expression.
Parse an expression .
/* Parse the next assignment-expression.  */ /* If this is the first assignment-expression, we can just
	 save it away.  */ /* If the next token is not a comma, then we are done with the
	 expression.  */ /* Consume the `,'.  */ /* A comma operator cannot appear in a constant-expression.  */