Lines Matching refs:expr
47 ALLOCATOR(type_expression, "type-expr-maps");
65 struct token *parens_expression(struct token *token, struct expression **expr, const char *where)
74 *expr = e;
81 token = parse_expression(token, expr);
88 struct token *string_expression(struct token *token, struct expression **expr, const char *where)
90 struct token *next = primary_expression(token, expr);
92 if (!*expr || (*expr)->type != EXPR_STRING) {
94 *expr = NULL;
164 struct expression *expr = alloc_expression(
166 expr->op = SPECIAL_EQUAL;
172 token = parse_type(token, &expr->left);
177 token = parse_type(token, &expr->right);
183 *tree = expr;
190 struct expression *expr = NULL;
191 struct expression **p = &expr;
213 expr->in = sym;
214 *tree = expr;
261 static void get_number_value(struct expression *expr, struct token *token)
335 warning(expr->pos, "decimal constant %s is too big for long long",
340 warning(expr->pos, "constant %s is so big it is%s%s%s",
346 warning(expr->pos,
351 expr->type = EXPR_VALUE;
352 expr->flags = CEF_SET_INT;
353 expr->ctype = ctype_integer(size, want_unsigned);
354 expr->value = value;
357 error_die(expr->pos, "constant %s is too big even for unsigned long long",
361 expr->fvalue = string_to_ld(str, &end);
369 expr->ctype = &float_ctype;
371 expr->ctype = &ldouble_ctype;
373 expr->ctype = &double_ctype;
377 expr->flags = CEF_SET_FLOAT;
378 expr->type = EXPR_FVALUE;
382 sparse_error(expr->pos, "constant %s is not a valid number", show_token(token));
383 expr->type = EXPR_VALUE;
384 expr->value = 0;
385 expr->ctype = &int_ctype;
390 struct expression *expr = alloc_expression(token->pos, EXPR_GENERIC);
391 struct type_expression **last = &expr->map;
394 token = assignment_expression(token, &expr->control);
404 token = assignment_expression(token, &map->expr);
408 if (expr->def) {
410 info(expr->def->pos, "note: previous was here");
414 token = assignment_expression(token, &expr->def);
418 *tree = expr;
424 struct expression *expr = NULL;
428 expr = alloc_expression(token->pos, EXPR_VALUE);
429 expr->flags = CEF_SET_CHAR;
430 expr->ctype = token_type(token) < TOKEN_WIDE_CHAR ? &int_ctype : &long_ctype;
431 get_char_constant(token, &expr->value);
436 expr = alloc_expression(token->pos, EXPR_VALUE);
437 get_number_value(expr, token); /* will see if it's an integer */
442 expr = alloc_expression(token->pos, EXPR_SYMBOL);
443 expr->flags = CEF_SET_INT;
444 expr->ctype = &int_ctype;
445 expr->symbol = &zero_int;
446 expr->symbol_name = token->ident;
458 token = builtin_types_compatible_p_expr(token, &expr);
462 token = builtin_offsetof_expr(token, &expr);
466 token = generic_selection(token->next, &expr);
470 expr = alloc_expression(token->pos, EXPR_VALUE);
471 *expr = *sym->initializer;
473 expr->pos = token->pos;
474 expr->flags = CEF_SET_ENUM;
479 expr = alloc_expression(token->pos, EXPR_SYMBOL);
491 expr->symbol_name = token->ident;
492 expr->symbol = sym;
499 expr->flags = CEF_ADDR;
507 expr = alloc_expression(token->pos, EXPR_STRING);
508 token = get_string_constant(token, expr);
513 expr = alloc_expression(token->pos, EXPR_PREOP);
514 expr->op = '(';
515 token = parens_expression(token, &expr->unop, "in expression");
519 expr = alloc_expression(token->pos, EXPR_TYPE);
520 token = typename(token->next, &expr->symbol, NULL);
528 *tree = expr;
535 struct expression *expr = NULL;
536 token = assignment_expression(token, &expr);
537 if (!expr)
539 add_expression(list, expr);
553 struct expression *expr = cast_init_expr;
555 if (!expr)
556 token = primary_expression(token, &expr);
558 while (expr && token_type(token) == TOKEN_SPECIAL) {
568 add->left = expr;
571 expr = deref;
578 post->unop = expr;
579 expr = post;
587 inner->unop = expr;
588 expr = inner;
594 deref->deref = expr;
602 expr = deref;
609 call->fn = expr;
612 expr = call;
621 *tree = expr;
631 struct expression *expr = alloc_expression(token->pos, type);
634 *tree = expr;
635 expr->flags = CEF_SET_ICE; /* XXX: VLA support will need that changed */
638 return unary_expression(token, &expr->cast_expression);
640 token = typename(token->next, &expr->cast_type, NULL);
658 cast->cast_type = expr->cast_type;
659 expr->cast_type = NULL;
660 expr->cast_expression = cast;
662 token = postfix_expression(token, &expr->cast_expression, cast);
917 struct expression *expr = alloc_expression(token->pos, EXPR_CONDITIONAL);
918 expr->op = token->special;
919 expr->conditional = *tree;
920 *tree = expr;
921 token = parse_expression(token->next, &expr->cond_true);
923 token = conditional_expression(token, &expr->cond_false);
942 struct expression * expr = alloc_expression(token->pos, EXPR_ASSIGNMENT);
944 expr->left = *tree;
945 expr->op = op;
946 *tree = expr;
947 token = assignment_expression(next, &expr->right);
949 expression_error(expr, "expression expected before '%s'", show_token(token));