/* PSPP - computes sample statistics.
Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
- Written by Ben Pfaff <blp@gnu.org>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
/* If set, this operation may not occur after TEMPORARY.
(Currently this applies only to LAG.) */
- OPF_PERM_ONLY = 0100
+ OPF_PERM_ONLY = 0100,
+
+ /* If set, this operation's name may not be abbreviated. */
+ OPF_NO_ABBREV = 0200
};
#define EXPR_ARG_MAX 4
int array_granularity;
};
-extern struct operation operations[];
+extern const struct operation operations[];
/* Tree structured expressions. */
struct variable_node
{
operation_type type; /* OP_variable. */
- struct variable *v;
+ const struct variable *v;
};
struct integer_node
operation_type operation;
double number;
struct substring string;
- struct variable *variable;
+ const struct variable *variable;
const struct vector *vector;
struct fmt_spec *format;
int integer;
struct expression
{
struct pool *expr_pool; /* Pool for expression static data. */
- struct dictionary *dict; /* Dictionary for variables, vectors. */
+ struct dataset *ds ; /* The dataset */
atom_type type; /* Type of expression result. */
union operation_data *ops; /* Expression data. */
struct pool *eval_pool; /* Pool for evaluation temporaries. */
};
-struct expression *expr_parse_any (struct dictionary *, bool optimize);
+struct expression *expr_parse_any (struct lexer *lexer, struct dataset *, bool optimize);
void expr_debug_print_postfix (const struct expression *);
union any_node *expr_optimize (union any_node *, struct expression *);
union any_node *expr_allocate_string (struct expression *e,
struct substring);
union any_node *expr_allocate_variable (struct expression *e,
- struct variable *);
+ const struct variable *);
union any_node *expr_allocate_format (struct expression *e,
const struct fmt_spec *);
union any_node *expr_allocate_vector (struct expression *e,