X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Flily-lexer.cc;h=8d70783cb5989da22c5eede795ac94bcf6f72cc3;hb=8f5cd22af76fcb5c77853a5ede8b94ebef97caef;hp=1f39bd242584647489e93efcdffdbf0a16d301a7;hpb=13031fd9d41919303379c0f631a47d0d0c80f4d3;p=lilypond.git diff --git a/lily/lily-lexer.cc b/lily/lily-lexer.cc index 1f39bd2425..8d70783cb5 100644 --- a/lily/lily-lexer.cc +++ b/lily/lily-lexer.cc @@ -100,9 +100,10 @@ Lily_lexer::Lily_lexer (Sources *sources, Lily_parser *parser) chordmodifier_tab_ = scm_make_vector (scm_from_int (1), SCM_EOL); } -Lily_lexer::Lily_lexer (Lily_lexer const &src) +Lily_lexer::Lily_lexer (Lily_lexer const &src, Lily_parser *parser) : Includable_lexer () { + parser_ = parser; keytable_ = (src.keytable_) ? new Keyword_table (*src.keytable_) : 0; chordmodifier_tab_ = src.chordmodifier_tab_; pitchname_tab_stack_ = src.pitchname_tab_stack_; @@ -182,6 +183,26 @@ Lily_lexer::lookup_keyword (string s) return keytable_->lookup (s.c_str ()); } +SCM +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++) + { + *tail = scm_acons (scm_makfrom0str (keytable_->table_[i].name_), + scm_from_int (keytable_->table_[i].tokcode_), + SCM_EOL); + + tail = SCM_CDRLOC(*tail); + } + + return l; +} + SCM Lily_lexer::lookup_identifier_symbol (SCM sym) {