scopes_ = SCM_EOL;
error_level_ = 0;
is_main_input_ = false;
-
+ start_module_ = SCM_EOL;
smobify_self ();
add_scope (ly_make_anonymous_module (false));
chordmodifier_tab_ = src.chordmodifier_tab_;
pitchname_tab_stack_ = src.pitchname_tab_stack_;
sources_ = src.sources_;
-
+ start_module_ = SCM_EOL;
+
error_level_ = src.error_level_;
is_main_input_ = src.is_main_input_;
Lily_lexer::add_scope (SCM module)
{
ly_reexport_module (scm_current_module ());
+ if (!scm_is_pair (scopes_))
+ start_module_ = scm_current_module ();
+
scm_set_current_module (module);
for (SCM s = scopes_; scm_is_pair (s); s = scm_cdr (s))
{
scopes_ = scm_cons (module, scopes_);
}
+
SCM
Lily_lexer::remove_scope ()
{
SCM sc = scm_car (scopes_);
scopes_ = scm_cdr (scopes_);
- scm_set_current_module (scm_car (scopes_));
-
+ set_current_scope ();
return sc;
}
+void
+Lily_lexer::set_current_scope ()
+{
+ if (scm_is_pair (scopes_))
+ scm_set_current_module (scm_car (scopes_));
+ else
+ scm_set_current_module (start_module_);
+}
+
int
Lily_lexer::lookup_keyword (String s)
{