Lines Matching defs:expression

371 struct expression
376 * indicates whether this is a valid expression.
391 * Constructs an expression, storing the location where it was created.
393 expression(source_location l) : loc(l) {}
394 virtual ~expression() {}
397 * Dumps this expression to `std::cerr`, appending a newline if `nl` is
425 * Expression wrapping a single integer. Leaf nodes in the expression tree.
427 class terminal_expr : public expression
448 terminal_expr(source_location l, valty v) : expression(l), val(v) {}
455 * Parenthetical expression. Exists to make the contents opaque.
457 struct paren_expression : public expression
460 * The expression within the parentheses.
464 * Constructor. Takes the child expression as the only argument.
466 paren_expression(source_location l, expression_ptr p) : expression(l),
473 * Evaluate - just forwards to the underlying expression.
491 * solely for debugging and makes it easy to print the expression. The `Op`
497 class unary_operator : public expression
523 expression(l), subexpr(std::move(p)) {}
537 struct binary_operator_base : public expression
539 using expression::expression;
541 * The left side of the expression.
545 * The right side of the expression.
612 class ternary_conditional_operator : public expression
619 * The expression that this evaluates to if the condition is true.
623 * The expression that this evaluates to if the condition is false.
659 expression(sl), cond(std::move(c)), lhs(std::move(l)),
707 expression::loc.report_error("Division by zero");
857 // If we're a normal left-to-right expression, then we need to insert
858 // this as the far-left child node of the rhs expression