X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Fmy-lily-lexer.cc;h=44843e402adc9850319b45cae997752afe73fee5;hb=f988425624a6f6d1a48aea0ac0c1c84ff0857e56;hp=211a6b8c4702fa06b8b2437801cdcc830e667294;hpb=bb36bac02a64770871780231ecc709cb18b20932;p=lilypond.git diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc index 211a6b8c47..44843e402a 100644 --- a/lily/my-lily-lexer.cc +++ b/lily/my-lily-lexer.cc @@ -8,7 +8,7 @@ #include #include -#include "notename-table.hh" + #include "interval.hh" #include "identifier.hh" #include "lily-guile.hh" @@ -25,12 +25,14 @@ static Keyword_ent the_key_tab[]={ {"autochange", AUTOCHANGE}, {"spanrequest", SPANREQUEST}, + {"commandspanrequest", COMMANDSPANREQUEST}, {"simultaneous", SIMULTANEOUS}, {"sequential", SEQUENTIAL}, {"accepts", ACCEPTS}, {"alternative", ALTERNATIVE}, {"bar", BAR}, {"breathe", BREATHE}, + {"char", CHAR_T}, {"chordmodifiers", CHORDMODIFIERS}, {"chords", CHORDS}, {"clef", CLEF}, @@ -38,6 +40,7 @@ static Keyword_ent the_key_tab[]={ {"consists", CONSISTS}, {"consistsend", CONSISTSEND}, {"context", CONTEXT}, + {"denies", DENIES}, {"duration", DURATION}, {"font", FONT}, {"grace", GRACE}, @@ -45,7 +48,6 @@ static Keyword_ent the_key_tab[]={ {"in", IN_T}, {"lyrics", LYRICS}, {"key", KEY}, - {"keysignature", KEYSIGNATURE}, {"mark", MARK}, {"musicalpitch", MUSICAL_PITCH}, {"time", TIME_T}, @@ -55,6 +57,11 @@ static Keyword_ent the_key_tab[]={ {"name", NAME}, {"notenames", NOTENAMES}, {"notes", NOTES}, + {"outputproperty", OUTPUTPROPERTY}, + {"pushproperty", PUSHPROPERTY}, + {"popproperty", POPPROPERTY}, + {"push", PUSH}, + {"pop", POP}, {"partial", PARTIAL}, {"paper", PAPER}, {"penalty", PENALTY}, @@ -63,8 +70,8 @@ static Keyword_ent the_key_tab[]={ {"relative", RELATIVE}, {"remove", REMOVE}, {"repeat", REPEAT}, - {"repetitions", REPETITIONS}, {"addlyrics", ADDLYRICS}, + {"partcombine", PARTCOMBINE}, {"score", SCORE}, {"script", SCRIPT}, {"skip", SKIP}, @@ -82,8 +89,6 @@ My_lily_lexer::My_lily_lexer() toplevel_scope_p_ = new Scope; scope_l_arr_.push (toplevel_scope_p_); errorlevel_i_ = 0; - note_tab_p_ = new Notename_table; - chordmodifier_tab_p_ = new Notename_table; main_input_b_ = false; } @@ -93,74 +98,45 @@ My_lily_lexer::lookup_keyword (String s) return keytable_p_->lookup (s.ch_C ()); } -Identifier* +SCM My_lily_lexer::lookup_identifier (String s) { SCM sym = ly_symbol2scm (s.ch_C()); for (int i = scope_l_arr_.size (); i--; ) - if (scope_l_arr_[i]->elem_b (sym)) - return scope_l_arr_[i]->elem(sym); - return 0; + { + SCM val = SCM_UNSPECIFIED; + if (scope_l_arr_[i]->try_retrieve (sym, &val)) + return val; + } + return SCM_UNSPECIFIED; } void My_lily_lexer::start_main_input () { - if (flower_dstream && !flower_dstream->silent_b ("InitDeclarations") && flower_dstream) - print_declarations (true); - if (flower_dstream && !flower_dstream->silent_b ("InitLexer") && flower_dstream) - set_debug (1); - - new_input (main_input_str_, source_global_l); allow_includes_b_ = allow_includes_b_ && !(safe_global_b); - - - print_declarations(true); } void -My_lily_lexer::set_identifier (String name_str, Identifier* i, bool ) +My_lily_lexer::set_identifier (String name_str, SCM s) { - Identifier *old =0; - if (scope_l_arr_.top ()->elem_b (name_str)) - old = scope_l_arr_.top ()->elem(name_str); - - - if (old) - { -#if 0 - if (unique_b) - old->warning(_f ("redeclaration of `\\%s'", name_str)); -#endif - delete old; - } if (lookup_keyword (name_str) >= 0) { warning ( _f ("Identifier name is a keyword: `%s'", name_str)); } - scope_l_arr_.top ()->elem (name_str) = i; + scope_l_arr_.top ()->set (name_str, s); } My_lily_lexer::~My_lily_lexer() { - delete chordmodifier_tab_p_; delete keytable_p_; delete toplevel_scope_p_ ; - delete note_tab_p_; } -void -My_lily_lexer::print_declarations (bool ) const -{ - for (int i=scope_l_arr_.size (); i--; ) - { - DEBUG_OUT << "Scope no. " << i << '\n'; - scope_l_arr_[i]->print (); - } -} + void My_lily_lexer::LexerError (char const *s) @@ -177,35 +153,6 @@ My_lily_lexer::LexerError (char const *s) } } -Musical_pitch -My_lily_lexer::lookup_notename (String s) -{ - return note_tab_p_->get_pitch (s); -} - -Musical_pitch -My_lily_lexer::lookup_chordmodifier (String s) -{ - return chordmodifier_tab_p_->get_pitch (s); -} - - -void -My_lily_lexer::set_notename_table (Notename_table *p) -{ - delete note_tab_p_; - note_tab_p_ = p; -} - - - -void -My_lily_lexer::set_chordmodifier_table (Notename_table *p) -{ - delete chordmodifier_tab_p_; - chordmodifier_tab_p_ = p; -} - char My_lily_lexer::escaped_char(char c) const {