smobify_self ();
- lexer_ = new Lily_lexer (sources_);
+ lexer_ = new Lily_lexer (sources_, this);
lexer_->unprotect ();
}
smobify_self ();
if (src.lexer_)
- lexer_ = new Lily_lexer (*src.lexer_);
-
+ {
+ lexer_ = new Lily_lexer (*src.lexer_, this);
+ }
+
lexer_->unprotect ();
}
lexer_->main_input_name_ = name;
message (_ ("Parsing..."));
- // progress_indication ("\n");
set_yydebug (0);
}
error_level_ = error_level_ | lexer_->error_level_;
- lexer_ = 0;
+ clear ();
}
void
lexer_->main_input_name_ = "<string>";
lexer_->is_main_input_ = true;
- set_yydebug (0);
lexer_->new_input (lexer_->main_input_name_, ly_code, sources_);
SCM mod = lexer_->set_current_scope ();
error_level_ = error_level_ | lexer_->error_level_;
}
+void
+Lily_parser::clear ()
+{
+ if (lexer_)
+ {
+ while (lexer_->has_scope ())
+ lexer_->remove_scope ();
+ }
+
+ lexer_ = 0;
+}
+
char const *
Lily_parser::here_str0 () const
{