lex_match (lexer, '=');
if (!lex_match_id (lexer, "COLUMNWISE"))
{
- lex_error (lexer, _("while expecting COLUMNWISE"));
+ lex_error (lexer, _("expecting %s"), "COLUMNWISE");
goto error;
}
agr.missing = COLUMNWISE;
copy_documents = true;
else if (lex_match_id (lexer, "PRESORTED"))
presorted = true;
- else if (lex_match_id (lexer, "BREAK"))
+ else if (lex_force_match_id (lexer, "BREAK"))
{
int i;
break;
}
else
- {
- lex_error (lexer, _("expecting BREAK"));
- goto error;
- }
+ goto error;
+
}
if (presorted && saw_direction)
msg (SW, _("When PRESORTED is specified, specifying sorting directions "
- if (lex_token (lexer) == T_STRING)
+ if (lex_is_string (lexer))
{
struct string label;
ds_init_string (&label, lex_tokstr (lexer));
goto error;
}
- exclude = MV_ANY;
-
ds_assign_string (&function_name, lex_tokstr (lexer));
-
- ds_chomp (&function_name, '.');
-
- if (lex_tokid(lexer)[strlen (lex_tokid (lexer)) - 1] == '.')
- exclude = MV_SYSTEM;
+ exclude = ds_chomp (&function_name, '.') ? MV_SYSTEM : MV_ANY;
for (function = agr_func_tab; function->name; function++)
if (!strcasecmp (function->name, ds_cstr (&function_name)))
{
if (function->src_vars == AGR_SV_YES)
{
- lex_error (lexer, _("expecting `('"));
+ lex_force_match (lexer, '(');
goto error;
}
}
int type;
lex_match (lexer, ',');
- if (lex_token (lexer) == T_STRING)
+ if (lex_is_string (lexer))
{
arg[i].c = ds_xstrdup (lex_tokstr (lexer));
type = VAL_STRING;
}
/* Trailing rparen. */
- if (!lex_match (lexer, ')'))
- {
- lex_error (lexer, _("expecting `)'"));
- goto error;
- }
+ if (!lex_force_match (lexer, ')'))
+ goto error;
/* Now check that the number of source variables match
the number of target variables. If we check earlier