- OP_ERROR,
-
- /* Basic operators. */
- OP_PLUS,
- OP_MUL,
- OP_POW,
- OP_AND,
- OP_OR,
- OP_NOT,
-
- /* Numeric relational operators. */
- OP_EQ,
- OP_GE,
- OP_GT,
- OP_LE,
- OP_LT,
- OP_NE,
-
- /* String relational operators. */
- OP_STRING_EQ,
- OP_STRING_GE,
- OP_STRING_GT,
- OP_STRING_LE,
- OP_STRING_LT,
- OP_STRING_NE,
-
- /* Unary functions. */
- OP_NEG,
- OP_ABS,
- OP_ARCOS,
- OP_ARSIN,
- OP_ARTAN,
- OP_COS,
- OP_EXP,
- OP_LG10,
- OP_LN,
- OP_MOD10,
- OP_RND,
- OP_SIN,
- OP_SQRT,
- OP_TAN,
- OP_TRUNC,
-
- /* N-ary numeric functions. */
- OP_ANY,
- OP_ANY_STRING,
- OP_CFVAR,
- OP_MAX,
- OP_MEAN,
- OP_MIN,
- OP_NMISS,
- OP_NVALID,
- OP_RANGE,
- OP_RANGE_STRING,
- OP_SD,
- OP_SUM,
- OP_VARIANCE,
-
- /* Time construction & extraction functions. */
- OP_TIME_HMS,
-
- /* These never appear in a tree or an expression.
- They disappear in parse.c:unary_func(). */
- OP_CTIME_DAYS,
- OP_CTIME_HOURS,
- OP_CTIME_MINUTES,
- OP_CTIME_SECONDS,
- OP_TIME_DAYS,
-
- /* Date construction functions. */
- OP_DATE_DMY,
- OP_DATE_MDY,
- OP_DATE_MOYR,
- OP_DATE_QYR,
- OP_DATE_WKYR,
- OP_DATE_YRDAY,
- OP_YRMODA,
-
- /* Date extraction functions. */
- OP_XDATE_DATE,
- OP_XDATE_HOUR,
- OP_XDATE_JDAY,
- OP_XDATE_MDAY,
- OP_XDATE_MINUTE,
- OP_XDATE_MONTH,
- OP_XDATE_QUARTER,
- OP_XDATE_SECOND,
- OP_XDATE_TDAY,
- OP_XDATE_TIME,
- OP_XDATE_WEEK,
- OP_XDATE_WKDAY,
- OP_XDATE_YEAR,
-
- /* String functions. */
- OP_CONCAT,
- OP_INDEX,
- OP_INDEX_OPT,
- OP_RINDEX,
- OP_RINDEX_OPT,
- OP_LENGTH,
- OP_LOWER,
- OP_UPPER,
- OP_LPAD,
- OP_LPAD_OPT,
- OP_RPAD,
- OP_RPAD_OPT,
- OP_LTRIM,
- OP_LTRIM_OPT,
- OP_RTRIM,
- OP_RTRIM_OPT,
- OP_NUMBER,
- OP_NUMBER_OPT,
- OP_STRING,
- OP_SUBSTR,
- OP_SUBSTR_OPT,
-
- /* Artificial. */
- OP_INV, /* Reciprocal. */
- OP_SQUARE, /* Squares the argument. */
- OP_NUM_TO_BOOL, /* Converts ~0=>0, ~1=>1, SYSMIS=>SYSMIS,
- others=>0 with a warning. */
-
- /* Weirdness. */
- OP_MOD, /* Modulo function. */
- OP_NORMAL, /* Normally distributed PRNG. */
- OP_UNIFORM, /* Uniformly distributed PRNG. */
- OP_SYSMIS, /* Tests whether for SYSMIS argument. */
- OP_VEC_ELEM_NUM, /* Element of a numeric vector. */
- OP_VEC_ELEM_STR, /* Element of a string vector. */
-
- /* Terminals. */
- OP_TERMINAL, /* Not a valid type. Boundary
- between terminals and nonterminals. */
-
- OP_NUM_CON, /* Numeric constant. */
- OP_STR_CON, /* String literal. */
- OP_NUM_VAR, /* Numeric variable reference. */
- OP_STR_VAR, /* String variable reference. */
- OP_NUM_LAG, /* Numeric variable from an earlier case. */
- OP_STR_LAG, /* String variable from an earlier case. */
- OP_NUM_SYS, /* SYSMIS(numvar). */
- OP_NUM_VAL, /* VALUE(numvar). */
- OP_STR_MIS, /* MISSING(strvar). */
- OP_CASENUM, /* $CASENUM. */
- OP_SENTINEL /* Sentinel. */