]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.33
authorfred <fred>
Sun, 24 Mar 2002 19:32:32 +0000 (19:32 +0000)
committerfred <fred>
Sun, 24 Mar 2002 19:32:32 +0000 (19:32 +0000)
26 files changed:
hdr/inputmusic.hh
hdr/inputscore.hh
hdr/lyricitem.hh
hdr/lyricstaff.hh
hdr/lyricwalker.hh
hdr/parseconstruct.hh
hdr/request.hh
hdr/score.hh
hdr/source.hh
hdr/sourcefile.hh
hdr/voice.hh
input/Makefile
input/scales.ly
input/standchen.tex
src/inputmusic.cc
src/inputscore.cc
src/lexer.l
src/lyricwalker.cc
src/note.cc
src/slurreg.cc
src/source.cc
src/voice.cc
src/voiceelt.cc
src/voicegroup.cc
src/voiceregs.cc
src/warn.cc

index 13e8f4a3653ec7ee55f2760e496f8a408f17ac4f..da3030f11b28dea34d9b093663b640b906957f9a 100644 (file)
@@ -29,11 +29,14 @@ struct Voice_list : public PointerList<Voice*> {
   */
 struct Input_music {
     virtual Voice_list convert()const=0;
+    void check_plet(Voice_element* velt_l);
     virtual Moment length()const=0;
     virtual void translate_time(Moment dt)=0;
     virtual ~Input_music(){}
     virtual void print() const =0;
     virtual void set_default_group(String)=0;
+    virtual bool find_plet_start_bo(char c, Moment& moment_r) = 0;
+    virtual void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i) = 0;
     // virtual void transpose(...) const =0;
     
     
@@ -53,6 +56,8 @@ struct Simple_music : Input_music {
     virtual Voice_list convert()const;
     virtual void translate_time(Moment dt);
     virtual void print() const;
+    virtual bool find_plet_start_bo(char c, Moment& moment_r);
+    virtual void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i);
     virtual Input_music *clone() const {
        return new Simple_music(*this);
     }
@@ -69,6 +74,8 @@ struct Complex_music : Input_music {
     Complex_music(Complex_music const &);
     virtual void print() const ;
     void concatenate(Complex_music*);
+    virtual bool find_plet_start_bo(char c, Moment& moment_r);
+    virtual void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i);
  
 };
 
index 024c6d132c25d129780796c1ff4c6c1ff8c7837e..3b84d44fdb9b51d933c4f43ce24b39d1ea69d6ff 100644 (file)
@@ -24,6 +24,7 @@ struct Input_score {
     
     /// paper_, staffs_ and commands_ form the problem definition.
     Paperdef *paper_p_;
+    Mididef* midi_p_;
     IPointerList<Input_staff*> staffs_;
 
     Input_music * score_wide_music_p_;
@@ -36,6 +37,7 @@ struct Input_score {
     ~Input_score();
     /// construction
     void set(Paperdef*);
+    void set(Mididef* midi_p);
     void print() const;
     Score*parse();
     void set(Input_music*);
index 5dcd90c8897d20b8c0dc35006e5a0ecc3662de27..46873d8f519536108729c5a39fe5fc216cc39d09 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  lyricitem.hh -- part of LilyPond
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.nl>
+//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
 
 #ifndef LYRIC_ITEM_HH
 #define LYRIC_ITEM_HH
@@ -15,5 +15,5 @@ struct Lyric_item : Text_item {
 };
 
 
-#endif // LYRICITEM_HH
+#endif // LYRIC_ITEM_HH //
 
index 31cc62caaab75ae64ebcf67b28856dec6f6230a8..f7166bfc99b491e8694743389a75dd5fa090c6bc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   lyricstaff.hh -- part of LilyPond
 
-  copyright 1997 Jan Nieuwenhuizen <jan@digicash.nl>
+  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
   */
 
 #ifndef LYRICSTAFF_HH
index 5f413f2ab9569acff29dd7dc1c385168226dc651..f89be762496e79b687d5723bc9fad8cae87cbe82 100644 (file)
@@ -1,8 +1,8 @@
-/*
-  lyricwalker.hh -- declare Lyric_walker
-
-  (c) 1996,97 Han-Wen Nienhuys, Jan Nieuwenhuizen <jan@digicash.nl>
-*/
+//
+//  lyricwalker.hh -- declare Lyric_walker
+//
+//  (c) 1996,97 Han-Wen Nienhuys, Jan Nieuwenhuizen <jan@digicash.com>
+//
 
 #ifndef LYRICWALKER_HH
 #define LYRICWALKER_HH
index 5ee82774c06f5df206c77f8341134286ae2c990b..7b9e3e3ec216c59fd1f4d238c6527e42f6ae1b85 100644 (file)
@@ -25,6 +25,7 @@ Request* get_request(char);
 void set_text_style(String);
 Script_def* get_scriptdef(char);
 Text_def*get_text(String s);
+Request* get_plet_request( char c, int dur_i, int type_i ); 
 Request*get_script_req(int d , Script_def*def);
 Request*get_text_req(int d , Text_def*def);
 Request* get_stemdir_req(int);
index 56fc3e4ea590e3d39a9c9dfa68a4cf82888d0497..bf94d1a02e8fc561776464f37ca5ed068fca95e1 100644 (file)
@@ -45,6 +45,7 @@ struct Request {
     virtual Rest_req *rest() { return 0; }
     virtual Span_req *span() { return 0; }
     virtual Beam_req *beam() { return 0 ; }
+    virtual Plet_req* plet() { return 0; }
     virtual Slur_req *slur() { return 0 ; }
     virtual Rhythmic_req*rhythmic() { return 0; }
     virtual Lyric_req* lreq_l() { return 0; }
index f48ad356df76b869d7012ed04062aa04c5f68f36..b9555b20369a9fba995f031d674049d21e7fc243 100644 (file)
@@ -21,6 +21,7 @@
 struct Score {
     /// paper_, staffs_ and commands_ form the problem definition.
     Paperdef *paper_p_;
+    Mididef *midi_p_;
     IPointerList<Staff*> staffs_;
     
     /// "runtime" fields for setting up spacing    
@@ -43,6 +44,12 @@ struct Score {
     /// output to file
     void output(String fn);
 
+    /// do midi stuff
+    void midi();
+
+    ///
+    void set(Mididef* midi_p);
+
     // standard
     void OK() const;
     void print() const;
index 063905baaa91821727e026813cc34355220750bb..3bdbef721e249e1f3289ac97cfcc9556c02be27d 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  source.hh -- part of LilyPond
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.nl>
+//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
 
 #ifndef SOURCE_HH
 #define SOURCE_HH
index a52e76f66a30052453bdf8162a9b4195239bf1d2..36c7aaa575590b64ccdc76ec65df622c918ddac0 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  sourcefile.hh -- declare Source_file
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.nl>
+//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
 
 #ifndef SOURCE_FILE_HH
 #define SOURCE_FILE_HH
index 4d282ddea176c61697abb511d83d7c8f27a2f1c4..4b8e258c1f7b5f0c859bd354a1d01060849feb0a 100644 (file)
@@ -17,13 +17,17 @@ struct Voice {
     Moment start;
 
     /* *************** */
-    Moment when(const Voice_element*)const;
-    Moment last() const;
     Voice();
     Voice(Voice const&);
+
+    Moment when(const Voice_element*)const;
+    Moment last() const;
+
     void add(Voice_element*);
+    bool find_plet_start_bo(char c, Moment& moment_r);
     void print() const;
     void set_default_group(String id);
+    void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i);
 };
 
 /** one horizontal bit.  Apart from being a container for the requests, Voice_element is nothing
@@ -36,10 +40,14 @@ struct Voice_element {
 
     /* *************** */
     
-    void add(Request*);
     Voice_element();
     Voice_element(Voice_element const & src );
+
+    void add(Request*);
+    bool find_plet_start_bo(char c, Moment& moment_r);
     void print ()const;
     void set_default_group(String id);
+    void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i);
+    /// return true when done
 };
 #endif
index 885dcf19a9ebd373203898ffe80f27d7fb1c261d..5e7ff852495c8f35250a72c5814c284722528b5b 100644 (file)
@@ -2,7 +2,8 @@ default: ;
 
 DISTFILES=Makefile  kortjakje.ly pavane.ly  maartje.ly\
        cadenza.ly scales.ly standchen.ly twinkle.ly\
-       wohltemperirt.ly error.ly\
+       wohltemperirt.ly\
+       error.ly midi.ly plet.ly\
        martien.ly mlalt.ly mlvio1.ly mlvio2.ly mlcello.ly\
        coriolan-alto.ly rhythm.ly \
        standchen.tex pavane.tex scsii-menuetto.tex scsii-menuetto.ly\
index fba2c9ff4d3e63f2d686b1658ea73dc845a81546..d98c1bba4326051c8aeea47190b026514680a9a9 100644 (file)
@@ -4,25 +4,25 @@ staff {melodic
        music{  $
 \duration { 8 }
                        \octave{ }
-                       \plet { 6/9 } |[ a a a a a a a a a ] \plet { 1/1 }
+                        |[ a a a a a a a a a ] 
                        \octave{ ' }
-                       \plet { 6/9 } |[ a a a a a a a a a ] \plet { 1/1 }
+                        |[ a a a a a a a a a ] 
                        \octave { ` } 
-                       \plet { 6/9 } [ `c `g d a 'e 'b ''f '''c '''g ] \plet { 1/1 }
-                       \plet { 6/9 } [ '''g '''c ''f 'b 'e a d `g `c ] \plet { 1/1 }
+                        [ `c `g d a 'e 'b ''f '''c '''g ] 
+                        [ '''g '''c ''f 'b 'e a d `g `c ] 
                        \octave{ ' }
-                       \plet { 6/9 } [ `c `g d a 'e 'b ''f '''c '''g ] \plet { 1/1 }
-                       \plet { 6/9 } [ '''g '''c ''f 'b 'e a d `g `c ] \plet { 1/1 }
+                        [ `c `g d a 'e 'b ''f '''c '''g ] 
+                        [ '''g '''c ''f 'b 'e a d `g `c ] 
                        \octave { } 
-                       \plet { 2/3 } [ c g 'd ] \plet { 1/1 }
-                       \plet { 2/3 } [ 'd g c ] \plet { 1/1 } 
-                       \plet { 2/3 } [ f 'c 'g ] \plet { 1/1 }
-                       \plet { 2/3 } [ 'g 'c f ] \plet { 1/1 } 
+                        [ c g 'd ]2/3 
+                        [ 'd g c ]2/3  
+                        [ f 'c 'g ]2/3 
+                        [ 'g 'c f ]2/3  
                        \octave{ ' }
-                       \plet { 2/3 } [ c g 'd ] \plet { 1/1 }
-                       \plet { 2/3 } [ 'd g c ] \plet { 1/1 } 
-                       \plet { 2/3 } [ f 'c 'g ] \plet { 1/1 }
-                       \plet { 2/3 } [ 'g 'c f ] \plet { 1/1 }
+                        [ c g 'd ]2/3 
+                        [ 'd g c ]2/3  
+                        [ f 'c 'g ]2/3 
+                        [ 'g 'c f ]2/3 
 
 c1
        \duration { 8}
index 9c87c4cc9054c02088fbd0d9cf396348524045ba..4b19a6aef591b24a27bc9dd335373c093fee4956 100644 (file)
 \begin{document}
 \input lilyponddefs
 \input titledefs
-%\def\interstaffline{\vskip10pt}
-%\def\interscoreline{\vskip12pt}
-\def\interstaffline{\vskip1mm}
-\def\interscoreline{\vskip2mm}
+\def\interstaffline{\vskip2mm}
+\def\interscoreline{\vskip3mm}
 \vbox to 10mm{\vss}
 \title{St\"andchen\normalsize\\[2ex](Serenade)}
 \composer{Franz Schubert (1797-1828)}
index 05918a1a5f68e2eeae05c6fda0b2a7e7cc89c80a..8f3ca2cb933bc96e9c8450a69306d30ede325b78 100644 (file)
@@ -3,6 +3,23 @@
 #include "voice.hh"
 #include "musicalrequest.hh"
 
+void
+Input_music::check_plet(Voice_element* velt_l)
+{
+    for (iter_top(velt_l->reqs,i); i.ok(); i++)
+       if ( i->plet() ) {
+           Moment start_moment = 0.0;
+           if ( !find_plet_start_bo( i->plet()->type_c_, start_moment ) ) {
+               error( "begin of plet not found", i->defined_ch_c_l_ );
+               break;
+           }
+           Moment moment = 0.0;
+           set_plet_backwards( moment, start_moment, i->plet()->dur_i_, i->plet()->type_i_ );
+           i.del();
+           break;
+        }
+}
+
 void
 Simple_music::add(Voice_element*v)
 {
@@ -36,6 +53,16 @@ Simple_music::print() const
     voice_.print();
     mtor << "}\n";
 }
+bool
+Simple_music::find_plet_start_bo(char c, Moment& moment_r)
+{
+    return voice_.find_plet_start_bo(c, moment_r);
+}
+void 
+Simple_music::set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i)
+{
+    voice_.set_plet_backwards(now_moment_r, until_moment, num_i, den_i);
+}
 
 /* *************** */
 
@@ -74,6 +101,22 @@ Complex_music::set_default_group(String g)
     for (iter_top(elts,i); i.ok(); i++)
            i->set_default_group(g);
 }
+bool
+Complex_music::find_plet_start_bo(char c, Moment& moment_r)
+{
+    for (iter_bot(elts,i); i.ok(); i--) {
+        if ( i->find_plet_start_bo(c, moment_r) )
+           return true;
+    }
+    return false;
+}
+void 
+Complex_music::set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i)
+{
+    for (iter_bot(elts,i); i.ok(); i--) {
+       i->set_plet_backwards(now_moment_r, until_moment, num_i, den_i);
+    }
+}
 /* *************************************************************** */
 
 void
@@ -97,6 +140,8 @@ Music_voice::add_elt(Voice_element*v)
     c = elts.bottom();
     Simple_music *s = c->simple();
     s->add(v);             
+
+    check_plet(v);
 }
 
 Moment
@@ -142,6 +187,8 @@ Music_general_chord::add_elt(Voice_element*v)
     Simple_music*vs = new Simple_music;
     vs->add(v);
     elts.bottom().add(vs);
+
+    check_plet(v);
 }
 
 void
index a8a653982cdb9ab2639a393b71fcc3123d405ac3..82d7a6c96ab1ef67382f646896cd9ff2121b4f77 100644 (file)
@@ -12,6 +12,7 @@
 #include "inputmusic.hh"
 #include "score.hh"
 #include "paperdef.hh"
+#include "mididef.hh"
 #include "staff.hh"
 
 
@@ -28,6 +29,13 @@ Input_score::set(Paperdef*p)
     paper_p_ = p;
 }
 
+void
+Input_score::set(Mididef* midi_p)
+{
+    delete midi_p_;
+    midi_p_ = midi_p;
+}
 Input_score::Input_score(Input_score const&s)
 {
     paper_p_ = (s.paper_p_)? new Paperdef(*s.paper_p_) :0;
@@ -44,6 +52,8 @@ Input_score::parse()
     Score *s_p = new Score(paper_p);
     s_p->defined_ch_c_l_= defined_ch_c_l_;
     s_p->errorlevel_i_ = errorlevel_i_;
+    s_p->set(midi_p_);
+    midi_p_ = 0;
 
     for (iter_top(staffs_,i); i.ok(); i++) {
        Staff* staf_p=i->parse(s_p, score_wide_music_p_);
@@ -65,6 +75,7 @@ Input_score::~Input_score()
 {
     delete paper_p_;
     delete score_wide_music_p_;
+    delete midi_p_;
 }
 
 Input_score::Input_score()
@@ -72,6 +83,7 @@ Input_score::Input_score()
     score_wide_music_p_ =0;
     defined_ch_c_l_=0;
     paper_p_= 0;
+    midi_p_ = 0;
     errorlevel_i_ = 0;
 }
 
index f0652ac6c78d757f15cee3b22b9a7c8d72089438..1e4e8488a558801ec27db128310198d0821c332c 100644 (file)
@@ -179,11 +179,11 @@ COMMENT           [%#].*\n
 <lyrics>{LYRICS} {
        String s (YYText()); 
        int i = 0;
-       while ((i=s.pos("_")) != 0)// ugh. Whats this.
-               *((char*)s.cptr() + i - 1) = ' ';
-       if ((i=s.pos("\\,")) !=0)
+       while ((i=s.pos("_")) != 0) // change word binding "_" to " "
+               *(s.ch_l() + i - 1) = ' ';
+       if ((i=s.pos("\\,")) !=0)   // change "\," to TeX's "\c "
                {
-               *((char*)s.cptr() + i) = 'c';
+               *(s.ch_l() + i) = 'c';
                s = s.left(i+1) + " " + s.right(s.len()-i-1);
                }
        yylval.string = new String(s);
index 960c1e76e00e4955ba22af5172c235a258d86b95..51a2b0359402e017265c0b72d4c195cd62eab426 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c) 1997 Jan Nieuwenhuizen <jan@digicash.nl>
+  (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
 */
 
 #include "musicalrequest.hh"
index 2a89743e95aaa17fdc1da20d376c7e5a5e521fd0..95a7d8313d5a6fc831479e2790426bd81ecc4945 100644 (file)
@@ -14,6 +14,7 @@
 #include "varray.hh"
 #include "textdef.hh"
 #include "parseconstruct.hh"
+#include "inputmusic.hh"
 
 int default_duration = 4, default_dots=0, default_octave=0;
 int default_plet_type = 1, default_plet_dur = 1;
@@ -36,7 +37,8 @@ last_duration(int n)
 }
 
 /* triplet is '2/3' */
-void set_plet(int num,int den)
+void 
+set_plet(int num,int den)
 {
     assert(num >0&& den>0);
     default_plet_dur = num;
@@ -193,6 +195,16 @@ set_default_octave(String d)
     parse_octave(d, i, default_octave);
 }
 
+Request*
+get_plet_request( char c, int dur_i, int type_i )
+{
+    Plet_req* plet_req_p = new Plet_req;
+    plet_req_p->dur_i_ = dur_i;
+    plet_req_p->type_i_ = type_i;
+    plet_req_p->type_c_ = c;
+    return plet_req_p;
+}
+
 Request*
 get_request(char c)
 {
index 48f60878be2b1994bb8ea1612497e808e5f02f5b..d1eb312d85970e548ea2be3b52a713986d768963 100644 (file)
@@ -4,6 +4,7 @@
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
 
+#include "plist.hh"
 #include "musicalrequest.hh"
 #include "complexwalker.hh"
 #include "slurreg.hh"
index 34f1a8808f00a8ef6644812deec1c36108beca28..519a6fe96aad58dea7f6d1558e3b9ebe587512cc 100644 (file)
@@ -28,9 +28,9 @@ Source::add( Source_file* sourcefile_p )
 Source_file*
 Source::sourcefile_l( char const* ch_c_l )
 {
-    PCursor<Source_file*> sourcefile_p_pcur( sourcefile_p_iplist_.top() );
-    for ( ; sourcefile_p_pcur.ok(); sourcefile_p_pcur++ )
-       if ( sourcefile_p_pcur->in_b( ch_c_l ) )        
-           return *sourcefile_p_pcur;
+    PCursor<Source_file*> sourcefile_l_pcur( sourcefile_p_iplist_.top() );
+    for ( ; sourcefile_l_pcur.ok(); sourcefile_l_pcur++ )
+       if ( sourcefile_l_pcur->in_b( ch_c_l ) )        
+           return *sourcefile_l_pcur;
     return 0;
 }
index 3dd4becf218270afe77904ce964fc22499ee4cb6..718e7cb6d1124b215d79b5f053bcf2bfcea6b765 100644 (file)
@@ -10,6 +10,8 @@
 #include "voice.hh"
 #include "musicalrequest.hh"
 #include "commandrequest.hh"
+#include "midiitem.hh"
+#include "midistream.hh"
 
 void
 Voice::set_default_group(String s)
@@ -17,6 +19,25 @@ Voice::set_default_group(String s)
     elts.top()->set_default_group(s);
 }
 
+bool
+Voice::find_plet_start_bo(char c, Moment& moment_r)
+{
+    for (iter_bot(elts, i); i.ok(); i--)
+       if ( i->find_plet_start_bo(c, moment_r) )
+           return true;
+    return false;
+}
+
+void 
+Voice::set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i)
+{
+    for (iter_bot(elts, i); i.ok(); i--) 
+       if ( now_moment_r <= until_moment ) 
+           i->set_plet_backwards(now_moment_r, until_moment, num_i, den_i);
+       else
+           return;
+}
+
 Voice::Voice(Voice const&src)
 {
     for (iter_top(src.elts, i); i.ok(); i++)
index 72ba0a77d5f32c47aea03eba2dd522917fac49c1..670dcdfaaaeef88415d3d46b268a3bfb7f19a9e4 100644 (file)
@@ -53,6 +53,20 @@ Voice_element::Voice_element(Voice_element const&src)
        add(i->clone());
 
 }
+bool
+Voice_element::find_plet_start_bo(char c, Moment& moment_r)
+{
+    assert( c == ']' );
+    moment_r += duration;
+    for ( PCursor<Request*> req_l_pcur( reqs.top() ); req_l_pcur.ok(); req_l_pcur++ ) {
+       if (req_l_pcur->melodic())
+           mtor << (char)('c' + req_l_pcur->melodic()->height()) << "\n";
+       if (req_l_pcur->beam() && req_l_pcur->beam()->spantype == Span_req::START )
+           return true;
+    }
+    return false;
+}
+
 void
 Voice_element::set_default_group(String s)
 {
@@ -63,3 +77,21 @@ Voice_element::set_default_group(String s)
     greq->newgroup_str_ = s;
     add(greq);
 }
+
+void
+Voice_element::set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i)
+{
+    now_moment_r += duration;
+    if ( now_moment_r > until_moment )
+       return;
+    for ( PCursor<Request*> req_l_pcur( reqs.top() ); req_l_pcur.ok(); req_l_pcur++ ) {
+       if (req_l_pcur->beam() && req_l_pcur->beam()->spantype == Span_req::START )
+           req_l_pcur->beam()->nplet = den_i;
+       if (req_l_pcur->rhythmic())
+           req_l_pcur->rhythmic()->plet_factor = Moment(num_i, den_i);
+       if (req_l_pcur->stem())
+           req_l_pcur->stem()->plet_factor = Moment(num_i, den_i);
+       if (req_l_pcur->melodic())
+           mtor << (char)('c' + req_l_pcur->melodic()->height()) << "\n";
+    }
+}
index 4f622c93849f4c97038674f17f0390078efe66ac..0674ee08c86b6c6a70340aacaf859e6b47e936c4 100644 (file)
@@ -6,6 +6,7 @@
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
 
+#include "plist.hh"
 #include "musicalrequest.hh"
 #include "voicegroup.hh"
 #include "register.hh"
index 4eba8c55f7adae0a925c6e2abc3582a4448c391f..d6c24cd674e1e2bb2ca72ed9f118c0007e49a01c 100644 (file)
@@ -66,3 +66,4 @@ Voice_registers::set_dir(int i)
     head_reg_->set_dir(i);
     slur_reg_->set_dir(i);
 }
+
index 46d779e10f511cf8495f8c2506b7e19f6aa3188e..63490de581077299168faf69b39d54a2bccf2f11 100644 (file)
@@ -72,5 +72,10 @@ void
 error( String message_str, char const* context_ch_c_l )
 {
     message( message_str, context_ch_c_l );
-    exit( 1 );
+    // since when exits error again?
+    // i-d say: error: errorlevel |= 1; -> no output upon error
+    //          warning: recovery -> output (possibly wrong)
+    if ( lexer )
+        lexer->errorlevel_i_ |= 1;
+//    exit( 1 );
 }