X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmy-lily-parser.cc;h=846d4bd2affbe1e4600fa0d355d2f75668474a5c;hb=94189ec2b8da6d7e89dc619c646a927adead9b19;hp=3e4bbb602b96b022c0b277055689e60b2369b915;hpb=9661ba1fb275f3e14f8a69f2cee2f02a2f893e48;p=lilypond.git diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index 3e4bbb602b..846d4bd2af 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2000 Han-Wen Nienhuys + (c) 1997--2001 Han-Wen Nienhuys Jan Nieuwenhuizen */ @@ -11,26 +11,18 @@ #include "my-lily-lexer.hh" #include "debug.hh" #include "main.hh" -#include "music-list.hh" -#include "musical-request.hh" -#include "command-request.hh" -#include "lily-guile.hh" #include "parser.hh" -#include "scope.hh" #include "file-results.hh" -#include "midi-def.hh" -#include "paper-def.hh" -#include "identifier.hh" -#include "chord.hh" +#include "scope.hh" My_lily_parser::My_lily_parser (Sources * source_l) { source_l_ = source_l; lexer_p_ = 0; - default_duration_.durlog_i_ = 2; + default_duration_ = Duration (2,0); error_level_i_ = 0; - fatal_error_i_ = 0; + default_header_p_ =0; } @@ -60,7 +52,7 @@ My_lily_parser::parse_file (String init, String s) if (!define_spot_array_.empty()) { - warning (_ ("Braces don't match")); + define_spot_array_.top ().warning (_ ("Braces don't match")); error_level_i_ = 1; } @@ -85,10 +77,8 @@ void My_lily_parser::parser_error (String s) { here_input().error (s); - if (fatal_error_i_) - exit (fatal_error_i_); error_level_i_ = 1; - exit_status_i_ = 1; + exit_status_global = 1; } void @@ -97,62 +87,6 @@ My_lily_parser::set_last_duration (Duration const *d) default_duration_ = *d; } -// junk me -Simultaneous_music * -My_lily_parser::get_chord (Musical_pitch tonic, - Array* add_arr_p, - Array* sub_arr_p, - Musical_pitch* inversion_p, - Musical_pitch* bass_p, - Duration d) -{ - - /* - UARGAUGRAGRUAUGRUINAGRAUGIRNA - - ugh - */ - Chord chord = to_chord (tonic, add_arr_p, sub_arr_p, inversion_p, bass_p); - inversion_p = 0; - bass_p = 0; - - Tonic_req* t = new Tonic_req; - t->pitch_ = tonic; - - SCM l = SCM_EOL; - //urg - if (chord.inversion_b_ - && Chord::find_notename_i (&chord.pitch_arr_, chord.inversion_pitch_) > 0) - { - Inversion_req* i = new Inversion_req; - i->pitch_ = chord.inversion_pitch_; - l = gh_cons (i->self_scm_, l); - } - - if (chord.bass_b_) - { - Bass_req* b = new Bass_req; - b->pitch_ = chord.bass_pitch_; - l = gh_cons (b->self_scm_, l); - } - - Array pitch_arr = chord.to_pitch_arr (); - for (int i = 0; i < pitch_arr.size (); i++) - { - Musical_pitch p = pitch_arr[i]; - Note_req* n = new Note_req; - n->pitch_ = p; - n->duration_ = d; - l = gh_cons (n->self_scm_, l); - } - - Simultaneous_music*v = new Request_chord (l); - v->set_spot (here_input ()); - - return v; -} - - Input My_lily_parser::pop_spot() @@ -166,5 +100,30 @@ My_lily_parser::here_input() const return lexer_p_->here_input (); } +// move me? +#include "paper-def.hh" +#include "translator-def.hh" + +My_lily_parser * current_parser; +MAKE_SCHEME_CALLBACK(My_lily_parser,paper_description, 0); + +SCM +My_lily_parser::paper_description () +{ + My_lily_parser * me = current_parser; + + Music_output_def *id = unsmob_music_output_def (me->lexer_p_->lookup_identifier ("$defaultpaper")); + Paper_def *p = dynamic_cast (id->clone ()); + + SCM al = p->translator_p_dict_p_->to_alist (); + SCM l = SCM_EOL; + for (SCM s = al ; gh_pair_p (s); s = gh_cdr (s)) + { + Translator_def * td = unsmob_translator_def (gh_cdar (s)); + l = gh_cons (gh_cons (gh_caar (s), td->to_alist ()), l); + } + return l; +} +