+
+My_lily_lexer::My_lily_lexer ()
+{
+ keytable_ = new Keyword_table (the_key_tab);
+ scopes_ = SCM_EOL;
+
+ add_scope(ly_make_anonymous_module());
+ errorlevel_ =0;
+
+ main_input_b_ = false;
+}
+
+void
+My_lily_lexer::add_scope (SCM module)
+{
+ ly_reexport_module (scm_current_module());
+ scm_set_current_module (module);
+ for (SCM s = scopes_; gh_pair_p (s); s = gh_cdr (s))
+ {
+ /*
+ UGH. how to do this more neatly?
+ */
+ SCM expr = scm_list_n (ly_symbol2scm ("module-use!"),
+ module, scm_list_n (ly_symbol2scm ("module-public-interface"),
+ gh_car (s), SCM_UNDEFINED),
+ SCM_UNDEFINED);
+
+ scm_primitive_eval(expr);
+ }
+
+ scopes_ = scm_cons (module, scopes_);
+}
+
+SCM
+My_lily_lexer::remove_scope ()