struct hmap *dummies,
struct string *outputs, size_t n_outputs)
{
- struct segmenter segmenter;
-
- segmenter_init (&segmenter, mode);
-
+ struct segmenter segmenter = segmenter_init (mode, false);
while (!ss_is_empty (s))
{
enum segment_type type;
static bool
parse_commands (struct lexer *lexer, struct hmap *dummies)
{
- enum lex_syntax_mode syntax_mode;
- enum segmenter_mode mode;
struct string *outputs;
struct string input;
size_t n_values;
char *file_name;
- int line_number;
bool ok;
size_t i;
file_name = xstrdup (lex_get_file_name (lexer));
else
file_name = NULL;
- line_number = lex_get_first_line_number (lexer, 0);
+ int line_number = lex_ofs_start_point (lexer, lex_ofs (lexer)).line;
ds_init_empty (&input);
while (lex_is_string (lexer))
for (i = 0; i < n_values; i++)
ds_init_empty (&outputs[i]);
- syntax_mode = lex_get_syntax_mode (lexer);
- if (syntax_mode == LEX_SYNTAX_AUTO)
- mode = SEG_MODE_AUTO;
- else if (syntax_mode == LEX_SYNTAX_INTERACTIVE)
- mode = SEG_MODE_INTERACTIVE;
- else if (syntax_mode == LEX_SYNTAX_BATCH)
- mode = SEG_MODE_BATCH;
- else
- NOT_REACHED ();
- do_parse_commands (ds_ss (&input), mode, dummies, outputs, n_values);
+ do_parse_commands (ds_ss (&input), lex_get_syntax_mode (lexer),
+ dummies, outputs, n_values);
ds_destroy (&input);
if (lex_next_token (lexer, 1) == T_TO)
{
- long int a, b;
- long int i;
-
if (!lex_is_integer (lexer))
{
msg (SE, _("Ranges may only have integer bounds."));
return false;
}
- a = lex_integer (lexer);
+ long a = lex_integer (lexer);
lex_get (lexer);
lex_get (lexer);
- if (!lex_force_int (lexer))
+ if (!lex_force_int_range (lexer, NULL, a, LONG_MAX))
return false;
- b = lex_integer (lexer);
+ long b = lex_integer (lexer);
if (b < a)
{
msg (SE, _("%ld TO %ld is an invalid range."), a, b);
}
lex_get (lexer);
- for (i = a; i <= b; i++)
+ for (long i = a; i <= b; i++)
add_replacement (dv, xasprintf ("%ld", i), &allocated);
}
else