#include <sstream>
using namespace std;
-#include "context.hh" // for nested_property_alist
+#include "context.hh" // for nested_property_alist
#include "international.hh"
#include "interval.hh"
#include "keyword.hh"
{"name", NAME},
{"new", NEWCONTEXT},
{"notemode", NOTEMODE},
- {"objectid", OBJECTID},
{"once", ONCE},
{"override", OVERRIDE},
{"paper", PAPER},
chord_repetition_ = Chord_repetition ();
smobify_self ();
- add_scope (ly_make_anonymous_module (false));
+ add_scope (ly_make_module (false));
push_note_state (scm_c_make_hash_table (0));
chordmodifier_tab_ = scm_make_vector (scm_from_int (1), SCM_EOL);
}
Lily_lexer::Lily_lexer (Lily_lexer const &src, Lily_parser *parser)
: Includable_lexer ()
{
- parser_ = parser;
+ parser_ = parser;
keytable_ = (src.keytable_) ? new Keyword_table (*src.keytable_) : 0;
chordmodifier_tab_ = src.chordmodifier_tab_;
pitchname_tab_stack_ = src.pitchname_tab_stack_;
SCM *tail = &scopes;
for (SCM s = src.scopes_; scm_is_pair (s); s = scm_cdr (s))
{
- SCM newmod = ly_make_anonymous_module (false);
+ SCM newmod = ly_make_module (false);
ly_module_copy (newmod, scm_car (s));
*tail = scm_cons (newmod, SCM_EOL);
tail = SCM_CDRLOC (*tail);
{
if (!keytable_)
return SCM_EOL;
-
+
SCM l = SCM_EOL;
SCM *tail = &l;
for (vsize i = 0; i < keytable_->table_.size (); i++)
yy_flex_debug = get_program_option ("debug-lexer");
parser_->set_yydebug (get_program_option ("debug-parser"));
-
new_input (main_input_name_, sources_);
scm_module_define (scm_car (scopes_),
if (scm_is_pair (path))
{
- SCM prev = scm_module_lookup (mod, sym);
- if (prev != SCM_UNDEFINED)
- val = nested_property_alist (prev, path, val);
+ SCM prev = ly_module_lookup (mod, sym);
+ if (prev != SCM_BOOL_F)
+ val = nested_property_alist (scm_variable_ref (prev), path, val);
}
scm_module_define (mod, sym, val);
}
Lily_lexer::mark_smob (SCM s)
{
ASSERT_LIVE_IS_ALLOWED ();
-
+
Lily_lexer *lexer = (Lily_lexer *) SCM_CELL_WORD_1 (s);
scm_gc_mark (lexer->chordmodifier_tab_);
scm_puts (" >", port);
return 1;
}
+
+bool
+Lily_lexer::is_clean () const
+{
+ return include_stack_.empty ();
+}