block->parent.location = do_repeat_location;
if (!ll_is_empty (&block->lines))
- getl_include_source (&block->parent);
+ getl_include_source (lex_get_source_stream (lexer), &block->parent);
else
pool_destroy (block->pool);
ds_init_string (&text, lex_entire_line_ds (lexer));
/* Record file name. */
- cur_file_name = getl_source_name ();
- if (cur_file_name != NULL &&
+ cur_file_name = getl_source_name (lex_get_source_stream (lexer));
+ if (cur_file_name != NULL &&
(previous_file_name == NULL
|| !strcmp (cur_file_name, previous_file_name)))
previous_file_name = pool_strdup (block->pool, cur_file_name);
/* Create a line structure. */
line = pool_alloc (block->pool, sizeof *line);
line->file_name = previous_file_name;
- line->line_number = getl_source_location ();
+ line->line_number = getl_source_location (lex_get_source_stream (lexer));
ss_alloc_substring_pool (&line->text, ds_ss (&text), block->pool);
line->syntax = syntax;
&command_ends_before_line,
&command_ends_after_line);
if (recognize_do_repeat (ds_ss (&text)))
- nesting_level++;
+ nesting_level++;
else if (recognize_end_repeat (ds_ss (&text), &block->print)
- && nesting_level-- == 0)
+ && nesting_level-- == 0)
{
lex_discard_line (lexer);
+ ds_destroy (&text);
return true;
}
ds_destroy (&text);
create_vars (struct repeat_block *block)
{
struct repeat_macro *macro;
-
+
ll_for_each (macro, struct repeat_macro, ll, &block->macros)
if (macro->type == VAR_NAMES)
{