#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()
{
Engraver_group_engraver::Engraver_group_engraver()
{
- igrav_l_ =0;
+ itrans_l_ =0;
}
void
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);
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;
bool
Engraver_group_engraver::is_bottom_engraver_b()const
{
- return !igrav_l_->get_default_igrav_l();
+ return !itrans_l_->get_default_itrans_l();
}
#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);
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
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&)
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);
--- /dev/null
+/*
+ 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
#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"
Chord * chord;
Duration *duration;
Identifier *id;
- Input_engraver * iregs;
+ Input_translator * iregs;
Music *music;
Music_list *musiclist;
Score *score;
%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
-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);
}
;
| paper_body STRING '=' REAL ';' {
$$->set_var(*$2, $4);
}
- | paper_body input_engraver_spec {
+ | paper_body input_translator_spec {
$$->set( $2 );
}
| paper_body error {