]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.74pre
authorfred <fred>
Sun, 24 Mar 2002 19:47:39 +0000 (19:47 +0000)
committerfred <fred>
Sun, 24 Mar 2002 19:47:39 +0000 (19:47 +0000)
lily/engraver-group.cc
lily/identifier.cc
lily/include/input-translator.hh [new file with mode: 0644]
lily/parser.y

index c91921cefc4a2365a8c2f8ec09ba8450da028b88..f876bf2605f5928fa60a220e866d1c45b644109d 100644 (file)
@@ -13,7 +13,8 @@
 #include "debug.hh"
 #include "p-score.hh"
 #include "score-elem.hh"
-#include "input-engraver.hh"
+#include "input-translator.hh"
+Engraver* get_engraver_p(String);
 
 Engraver_group_engraver::~Engraver_group_engraver()
 {
@@ -41,7 +42,7 @@ Engraver_group_engraver::removable_b()const
 
 Engraver_group_engraver::Engraver_group_engraver()
 {
-    igrav_l_ =0;
+    itrans_l_ =0;
 }
 
 void
@@ -199,17 +200,17 @@ Translator*
 Engraver_group_engraver::find_get_translator_l(String n,String id)
 {
     Translator * ret=0;
-    Input_engraver * igrav_l= igrav_l_-> recursive_find ( n );
-    if (igrav_l ) {
+    Input_translator * itrans_l= itrans_l_-> recursive_find ( n );
+    if (itrans_l ) {
        ret = find_engraver_l(n,id);
        if (!ret) {
            Engraver_group_engraver * group = 
-               igrav_l-> get_group_engraver_p();
+               itrans_l-> get_group_engraver_p();
            
            add(group);
            ret = group;
            
-           if (group->igrav_l_->is_name_b( n ) )
+           if (group->itrans_l_->is_name_b( n ) )
                ret ->id_str_ = id;
            else
                return ret->find_get_translator_l(n,id);
@@ -294,8 +295,8 @@ Engraver_group_engraver::get_default_interpreter()
     if ( is_bottom_engraver_b() )
        return daddy_grav_l_->get_default_interpreter();
 
-    Engraver_group_engraver *grav_p= igrav_l_->
-       get_default_igrav_l()->get_group_engraver_p();
+    Engraver_group_engraver *grav_p= itrans_l_->
+       get_default_itrans_l()->get_group_engraver_p();
     add(grav_p );
     if (grav_p->is_bottom_engraver_b())
        return grav_p;
@@ -306,5 +307,5 @@ Engraver_group_engraver::get_default_interpreter()
 bool
 Engraver_group_engraver::is_bottom_engraver_b()const
 {
-    return !igrav_l_->get_default_igrav_l();
+    return !itrans_l_->get_default_itrans_l();
 }
index 072cd4def41ccbba6f36c9ad7f9bd43bb7c51953..40c7e543e86c8dde801ac94034fe5112a099319c 100644 (file)
 #include "identifier.hh"
 #include "my-lily-lexer.hh"
 #include "debug.hh"
-#include "input-engraver.hh"
+
 #include "symtable.hh"
 #include "lookup.hh"
 #include "script-def.hh"
 #include "request.hh"
-#include "input-engraver.hh"
+#include "input-translator.hh"
 
 IMPLEMENT_STATIC_NAME(Identifier);
 IMPLEMENT_IS_TYPE_B(Identifier);
@@ -66,7 +66,7 @@ DEFAULT_PRINT(Symtables_id, Symtables, symtables);
 DEFAULT_PRINT(Music_id,Music , music);
 DEFAULT_PRINT(Request_id, Request, request);
 DEFAULT_PRINT(Score_id, Score, score);
-DEFAULT_PRINT(Input_gravs_id, Input_engraver, igravs);
+DEFAULT_PRINT(Input_trans_id, Input_translator, itrans);
 DEFAULT_PRINT(Paper_def_id,Paper_def, paperdef);
 
 void
@@ -119,7 +119,7 @@ implement_id_class(Symtables_id, Symtables, symtables);
 implement_id_class(Music_id, Music, music);
 implement_id_class(Score_id, Score, score);
 implement_id_class(Request_id, Request, request);
-implement_id_class(Input_gravs_id, Input_engraver, igravs);
+implement_id_class(Input_trans_id, Input_translator, itrans);
 implement_id_class(Paper_def_id, Paper_def, paperdef);
 
 Identifier::Identifier(Identifier const&)
@@ -135,5 +135,5 @@ default_accessor(Symtables_id, Symtables, symtables);
 virtual_accessor(Music_id, Music, music);
 default_accessor(Score_id, Score, score);
 virtual_accessor(Request_id, Request, request);
-default_accessor(Input_gravs_id, Input_engraver, igravs);
+default_accessor(Input_trans_id, Input_translator, itrans);
 default_accessor(Paper_def_id, Paper_def, paperdef);
diff --git a/lily/include/input-translator.hh b/lily/include/input-translator.hh
new file mode 100644 (file)
index 0000000..fa4790c
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+  input-translator.hh -- declare Input_translator
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef INPUT_TRANSLATOR_HH
+#define INPUT_TRANSLATOR_HH
+
+#include "plist.hh"
+#include "string.hh"
+#include "lily-proto.hh"
+#include "input.hh"
+#include "string.hh"
+#include "varray.hh"
+
+struct Input_translator_list : public Pointer_list<Input_translator*> 
+{
+    Input_translator_list(Input_translator_list const &);
+    Input_translator_list(){}
+};
+
+struct Input_translator : Input { 
+    Input_translator_list contains_itrans_p_list_;
+    Array<String> consists_str_arr_;
+    Array<String> alias_str_arr_;
+    String base_str_;
+    String type_str_;
+    String default_id_str_;
+
+    void add(Input_translator *);
+    bool is_name_b(String);
+    bool accept_req_b();
+    bool accepts_b(String);
+    void print() const;
+    Engraver_group_engraver * get_group_engraver_p();
+    //  Performer_group_performer * get_group_performer_p();
+    Input_translator * get_default_itrans_l();
+    Input_translator * recursive_find(String nm);
+    Input_translator * find_itrans_l(String nm);    
+};
+Engraver* get_engraver_p(String);
+Performer* get_performer_p(String);
+
+#endif // Input_translator_HH
index a19e4780b01965f658432f41d8d1fbe80465c05a..27472489aff222c5da83b0460c3ccc901cdcb0af 100644 (file)
@@ -20,7 +20,7 @@
 #include "musical-request.hh"
 #include "my-lily-parser.hh"
 #include "text-def.hh"
-#include "input-engraver.hh"
+#include "input-translator.hh"
 #include "score.hh"
 #include "music-list.hh"
 
@@ -47,7 +47,7 @@
     Chord * chord;
     Duration *duration;
     Identifier *id;    
-    Input_engraver * iregs;
+    Input_translator * iregs;
     Music *music;
     Music_list *musiclist;
     Score *score;
@@ -203,7 +203,7 @@ yylex(YYSTYPE *s,  void * v_l)
 %type <id>     old_identifier
 %type <symbol> symboldef
 %type <symtable>       symtable symtable_body
-%type <iregs>  input_engraver_spec input_engraver_spec_body
+%type <iregs>  input_translator_spec input_translator_spec_body
 
 %left PRIORITY
 
@@ -320,27 +320,33 @@ declaration:
 
 
 
-input_engraver_spec:
-       REQUESTENGRAVER '{' input_engraver_spec_body '}'
+input_translator_spec:
+       REQUESTENGRAVER '{' input_translator_spec_body '}'
                { $$ = $3; }
        ;
 
-input_engraver_spec_body:
-       STRING  { 
-               $$ = new Input_engraver; 
-               $$->type_str_ =*$1;
+input_translator_spec_body:
+       STRING STRING   { 
+               $$ = new Input_translator; 
+               $$->base_str_ = *$1;
+               $$->type_str_ =*$2;
                $$->set_spot ( THIS->here_input() );
                delete $1;
+               delete $2;
+       }
+       | input_translator_spec_body ID STRING ';' {
+               $$-> default_id_str_ = *$3;
+               delete $3;
        }
-       | input_engraver_spec_body ALIAS STRING ';' {
+       | input_translator_spec_body ALIAS STRING ';' {
                $$-> alias_str_arr_.push(*$3);
                delete $3;
        }
-       | input_engraver_spec_body CONSISTS STRING ';'  {
+       | input_translator_spec_body CONSISTS STRING ';'        {
                $$-> consists_str_arr_.push(*$3);
                delete $3;
        }
-       | input_engraver_spec_body CONTAINS input_engraver_spec {
+       | input_translator_spec_body CONTAINS input_translator_spec {
                $$->add($3);
        }
        ;
@@ -411,7 +417,7 @@ paper_body:
        | paper_body STRING '=' REAL ';' {
                $$->set_var(*$2, $4);
        }
-       | paper_body input_engraver_spec        {
+       | paper_body input_translator_spec      {
                $$->set( $2 );
        }
        | paper_body error {