X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Flily-lexer.cc;h=424259beea59b17d6e5e6d7e1d96664548cdf14d;hb=f84c6604cf9b8bdc53b0f0367e20ce2fa13a0f19;hp=178853fc15b5cf5a9242710437c6e110ebed1184;hpb=e18531db1f79fb685fbd16d6a2a67bf4b6c09915;p=lilypond.git diff --git a/lily/lily-lexer.cc b/lily/lily-lexer.cc index 178853fc15..424259beea 100644 --- a/lily/lily-lexer.cc +++ b/lily/lily-lexer.cc @@ -23,7 +23,7 @@ #include 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" @@ -71,7 +71,6 @@ static Keyword_ent the_key_tab[] {"name", NAME}, {"new", NEWCONTEXT}, {"notemode", NOTEMODE}, - {"objectid", OBJECTID}, {"once", ONCE}, {"override", OVERRIDE}, {"paper", PAPER}, @@ -110,7 +109,7 @@ Lily_lexer::Lily_lexer (Sources *sources, Lily_parser *parser) 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); } @@ -118,7 +117,7 @@ Lily_lexer::Lily_lexer (Sources *sources, Lily_parser *parser) 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_; @@ -137,7 +136,7 @@ Lily_lexer::Lily_lexer (Lily_lexer const &src, Lily_parser *parser) 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); @@ -204,7 +203,7 @@ Lily_lexer::keyword_list () const { if (!keytable_) return SCM_EOL; - + SCM l = SCM_EOL; SCM *tail = &l; for (vsize i = 0; i < keytable_->table_.size (); i++) @@ -244,7 +243,6 @@ Lily_lexer::start_main_input () 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_), @@ -297,9 +295,9 @@ Lily_lexer::set_identifier (SCM path, SCM val) 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); } @@ -315,7 +313,7 @@ Lily_lexer::LexerError (char const *s) else { error_level_ |= 1; - Input spot (*lexloc); + Input spot (*lexloc_); spot.error (s); } } @@ -340,7 +338,7 @@ Lily_lexer::escaped_char (char c) const Input Lily_lexer::here_input () const { - return Input (*lexloc); + return Input (*lexloc_); } void @@ -357,8 +355,8 @@ void Lily_lexer::add_lexed_char (int count) { char const *start = here_str0 (); - lexloc->set (get_source_file (), - start, start + count); + lexloc_->set (get_source_file (), + start, start + count); char_count_stack_.back () += count; } @@ -372,7 +370,7 @@ SCM 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_); @@ -393,3 +391,9 @@ Lily_lexer::print_smob (SCM s, SCM port, scm_print_state*) scm_puts (" >", port); return 1; } + +bool +Lily_lexer::is_clean () const +{ + return include_stack_.empty (); +}