char *parse_DATA_LIST_var (struct lexer *, const struct dictionary *);
bool parse_DATA_LIST_vars (struct lexer *, const struct dictionary *,
- char ***names, size_t *cnt, int opts);
+ char ***names, size_t *n, int opts);
bool parse_DATA_LIST_vars_pool (struct lexer *, const struct dictionary *,
struct pool *,
- char ***names, size_t *cnt, int opts);
+ char ***names, size_t *n, int opts);
bool parse_mixed_vars (struct lexer *, const struct dictionary *dict,
- char ***names, size_t *cnt, int opts);
+ char ***names, size_t *n, int opts);
bool parse_mixed_vars_pool (struct lexer *, const struct dictionary *dict,
struct pool *,
- char ***names, size_t *cnt, int opts);
+ char ***names, size_t *n, int opts);
\f
/* This variable parser supports the unusual situation where set of variables
has to be parsed before the associated dictionary is available. Thus,
{
char *first; /* Always nonnull. */
char *last; /* Nonnull for var ranges (e.g. "a TO b"). */
+
+ /* For error reporting.
+
+ This only works if var_syntax_parse() and var_syntax_evaluate() are
+ called while we're parsing the same source file. That matches the
+ current use case in MATRIX; if that changes, then this will need to
+ switch to use struct msg_location instead. */
+ int first_ofs;
+ int last_ofs;
};
void var_syntax_destroy (struct var_syntax *, size_t n);
bool var_syntax_parse (struct lexer *, struct var_syntax **, size_t *);
-bool var_syntax_evaluate (const struct var_syntax *, size_t,
+bool var_syntax_evaluate (struct lexer *, const struct var_syntax *, size_t,
const struct dictionary *,
struct variable ***, size_t *, int opts);