/* Standard language operator definitions for GDB, the GNU debugger.
- Copyright (C) 1986-2020 Free Software Foundation, Inc.
+ Copyright (C) 1986-2021 Free Software Foundation, Inc.
This file is part of GDB.
the second operand with itself that many times. */
OP (BINOP_CONCAT)
-/* This must be the highest BINOP_ value, for expprint.c. */
-OP (BINOP_END)
-
/* Operates on three values computed by following subexpressions. */
OP (TERNOP_COND) /* ?: */
pointer. This is an Objective C message. */
OP (OP_OBJC_MSGCALL)
-/* This is EXACTLY like OP_FUNCALL but is semantically different.
- In F77, array subscript expressions, substring expressions and
- function calls are all exactly the same syntactically. They
- may only be disambiguated at runtime. Thus this operator,
- which indicates that we have found something of the form
- <name> ( <stuff> ). */
-OP (OP_F77_UNDETERMINED_ARGLIST)
-
/* OP_COMPLEX takes a type in the following element, followed by another
OP_COMPLEX, making three exp_elements. It is followed by two double
args, and converts them into a complex number of the given type. */
OP (UNOP_PLUS) /* Unary plus */
-OP (UNOP_CAP) /* Modula-2 standard (unary) procedures */
-OP (UNOP_CHR)
-OP (UNOP_ORD)
OP (UNOP_ABS)
-OP (UNOP_FLOAT)
OP (UNOP_HIGH)
-OP (UNOP_MAX)
-OP (UNOP_MIN)
-OP (UNOP_ODD)
-OP (UNOP_TRUNC)
OP (OP_BOOL) /* Modula-2 builtin BOOLEAN type */
-OP (OP_M2_STRING) /* Modula-2 string constants */
/* STRUCTOP_... operate on a value from a following subexpression
by extracting a structure component specified by a string
the GDB "::" operator, or the Modula-2 '.' operator. */
OP (OP_TYPE)
-/* An un-looked-up identifier. */
-OP (OP_NAME)
-
/* An Objective C Foundation Class NSString constant. */
OP (OP_OBJC_NSSTRING)
/* This is used for the Rust [expr; N] form of array construction. It
takes two expression arguments. */
OP (OP_RUST_ARRAY)
+
+/* ================ Ada operators ================ */
+
+/* X IN A'RANGE(N). N is an immediate operand, surrounded by
+ BINOP_IN_BOUNDS before and after. A is an array, X an index
+ value. Evaluates to true iff X is within range of the Nth
+ dimension (1-based) of A. (A multi-dimensional array
+ type is represented as array of array of ...) */
+OP (BINOP_IN_BOUNDS)
+
+/* X IN L .. U. True iff L <= X <= U. */
+OP (TERNOP_IN_RANGE)
+
+/* Ada attributes ('Foo). */
+OP (OP_ATR_FIRST)
+OP (OP_ATR_LAST)
+OP (OP_ATR_LENGTH)
+OP (OP_ATR_POS)
+OP (OP_ATR_SIZE)
+OP (OP_ATR_TAG)
+OP (OP_ATR_VAL)
+
+/* Ada type qualification. It is encoded as for UNOP_CAST, above,
+ and denotes the TYPE'(EXPR) construct. */
+OP (UNOP_QUAL)
+
+/* X IN TYPE. The `TYPE' argument is immediate, with
+ UNOP_IN_RANGE before and after it. True iff X is a member of
+ type TYPE (typically a subrange). */
+OP (UNOP_IN_RANGE)
+
+/* An aggregate. A single immediate operand, N>0, gives
+ the number of component specifications that follow. The
+ immediate operand is followed by a second OP_AGGREGATE.
+ Next come N component specifications. A component
+ specification is either an OP_OTHERS (others=>...), an
+ OP_CHOICES (for named associations), or other expression (for
+ positional aggregates only). Aggregates currently
+ occur only as the right sides of assignments. */
+OP (OP_AGGREGATE)
+
+/* ================ Fortran operators ================ */
+
+/* This is EXACTLY like OP_FUNCALL but is semantically different.
+ In F77, array subscript expressions, substring expressions and
+ function calls are all exactly the same syntactically. They
+ may only be disambiguated at runtime. Thus this operator,
+ which indicates that we have found something of the form
+ <name> ( <stuff> ). */
+OP (OP_F77_UNDETERMINED_ARGLIST)
+
+/* Single operand builtins. */
+OP (UNOP_FORTRAN_KIND)
+OP (UNOP_FORTRAN_FLOOR)
+OP (UNOP_FORTRAN_CEILING)
+OP (UNOP_FORTRAN_ALLOCATED)
+OP (UNOP_FORTRAN_RANK)
+OP (UNOP_FORTRAN_SHAPE)
+OP (UNOP_FORTRAN_LOC)
+
+/* Two operand builtins. */
+OP (BINOP_FORTRAN_CMPLX)
+OP (BINOP_FORTRAN_MODULO)
+
+/* Builtins that take one or two operands. */
+OP (FORTRAN_LBOUND)
+OP (FORTRAN_UBOUND)
+OP (FORTRAN_ASSOCIATED)
+OP (FORTRAN_ARRAY_SIZE)