source file of the GNU LilyPond music typesetter
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
*/
My_lily_parser::My_lily_parser (Sources * source_l)
{
- first_b_ = true;
source_l_ = source_l;
lexer_p_ = 0;
- abbrev_beam_type_i_ = 0;
+ chord_tremolo_type_i_ = 0;
default_duration_.durlog_i_ = 2;
- default_pitch_ = Musical_pitch (5*7, 0);
error_level_i_ = 0;
fatal_error_i_ = 0;
delete default_header_p_;
}
-
-
void
My_lily_parser::set_version_check (bool ig)
{
My_lily_parser::parse_file (String init, String s)
{
lexer_p_ = new My_lily_lexer;
- init_str_ = init;
+
lexer_p_->main_input_str_ = s;
- *mlog << _ ("Parsing...");
+ progress_indication (_("Parsing..."));
- init_parse_b_ = false;
set_yydebug (flower_dstream &&!flower_dstream->silent_b ("Parser"));
lexer_p_->new_input (init, source_l_);
do_yyparse ();
}
void
-My_lily_parser::set_abbrev_beam (int type_i)
+My_lily_parser::set_chord_tremolo (int type_i)
{
- abbrev_beam_type_i_ = type_i;
+ chord_tremolo_type_i_ = type_i;
}
-void
-My_lily_parser::set_last_pitch (Musical_pitch const* p)
-{
- default_pitch_ = *p;
-}
-
-// junk me
-Simultaneous_music*
-My_lily_parser::get_word_element (String s, Duration * duration_p)
-{
- Simultaneous_music* velt_p = new Request_chord;
-
- Lyric_req* lreq_p = new Lyric_req;
- lreq_p ->text_str_ = s;
- lreq_p->duration_ = *duration_p;
- lreq_p->set_spot (here_input());
-
- velt_p->add_music (lreq_p);
-
- delete duration_p;
- return velt_p;
-}
-
-// junk me
-Simultaneous_music *
-My_lily_parser::get_rest_element (String s, Duration * duration_p)
-{
- Simultaneous_music* velt_p = new Request_chord;
- velt_p->set_spot (here_input());
-
- if (s=="s")
- { /* Space */
- Skip_req * skip_p = new Skip_req;
- skip_p->duration_ = *duration_p;
- skip_p->set_spot (here_input());
- velt_p->add_music (skip_p);
- }
- else
- {
- Rest_req * rest_req_p = new Rest_req;
- rest_req_p->duration_ = *duration_p;
- rest_req_p->set_spot (here_input());
- velt_p->add_music (rest_req_p);
- }
-
- delete duration_p;
- return velt_p;
-}
// junk me
Simultaneous_music *
-My_lily_parser::get_chord (Musical_pitch tonic, Array<Musical_pitch>* add_arr_p, Array<Musical_pitch>* sub_arr_p, Musical_pitch* inversion_p, Duration d)
+My_lily_parser::get_chord (Musical_pitch tonic,
+ Array<Musical_pitch>* add_arr_p,
+ Array<Musical_pitch>* sub_arr_p,
+ Musical_pitch* inversion_p,
+ Musical_pitch* bass_p,
+ Duration d)
{
Simultaneous_music*v = new Request_chord;
v->set_spot (here_input ());
- Chord chord (tonic, add_arr_p, sub_arr_p, inversion_p);
+ /*
+ UARGAUGRAGRUAUGRUINAGRAUGIRNA
+
+ ugh
+ */
+ Chord chord = to_chord (tonic, add_arr_p, sub_arr_p, inversion_p, bass_p);
Tonic_req* t = new Tonic_req;
t->pitch_ = tonic;
v->add_music (t);
- for (int i = 0; i < chord.pitch_arr_.size (); i++)
+ //urg
+ if (inversion_p
+ && Chord::find_notename_i (&chord.pitch_arr_, *inversion_p) > 0)
{
- Musical_pitch p = chord.pitch_arr_[i];
+ Inversion_req* i = new Inversion_req;
+ i->pitch_ = *inversion_p;
+ v->add_music (i);
+ }
+
+ if (bass_p)
+ {
+ Bass_req* b = new Bass_req;
+ b->pitch_ = *bass_p;
+ v->add_music (b);
+ }
+
+ Array<Musical_pitch> 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;
return lexer_p_->here_input ();
}
-Paper_def*
-My_lily_parser::default_paper_p ()
-{
- Identifier *id = lexer_p_->lookup_identifier ("$defaultpaper");
- return id ? id->access_content_Paper_def (true) : new Paper_def ;
-}
-Midi_def*
-My_lily_parser::default_midi_p ()
-{
- Identifier *id = lexer_p_->lookup_identifier ("$defaultmidi");
- return id ? id->access_content_Midi_def (true) : new Midi_def ;
-}