]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/music-function.cc (ly_make_music_function): when an
authorNicolas Sceaux <nicolas.sceaux@free.fr>
Tue, 26 Oct 2004 17:31:54 +0000 (17:31 +0000)
committerNicolas Sceaux <nicolas.sceaux@free.fr>
Tue, 26 Oct 2004 17:31:54 +0000 (17:31 +0000)
argument predicate is markup?, the signature keyword becomes
"markup" iso "scm".

* lily/lexer.ll (music_function_type): new MUSIC_FUNCTION_*MARKUP*
tokens, for functions which signatures contain "markup".

* lily/parser.yy (Generic_prefix_music_scm): add treatment for new
MUSIC_FUNCTION_*MARKUP* tokens.

ChangeLog
lily/lexer.ll
lily/music-function.cc
lily/parser.yy

index 9c776957fbc73c22174f64cf9d8653bb81010e5f..c194960af357af506df7f661744d415d3ae2f124 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2004-10-26  Nicolas Sceaux  <nicolas.sceaux@free.fr>
+
+       * lily/music-function.cc (ly_make_music_function): when an
+       argument predicate is markup?, the signature keyword becomes
+       "markup" iso "scm".
+
+       * lily/lexer.ll (music_function_type): new MUSIC_FUNCTION_*MARKUP*
+       tokens, for functions which signatures contain "markup".
+
+       * lily/parser.yy (Generic_prefix_music_scm): add treatment for new
+       MUSIC_FUNCTION_*MARKUP* tokens.
+
 2004-10-26  Jan Nieuwenhuizen  <janneke@gnu.org>
 
        * input/regression/lyrics-bar.ly: Make StaffGroup accept the new
index ccb3d77b678c766f4216805f533a3ce7bf83e082..391d2d51416a3fbdf1ae8e0da8070d46ba098263 100644 (file)
@@ -922,6 +922,26 @@ music_function_type (SCM func)
        {
                return MUSIC_FUNCTION_SCM_SCM_MUSIC;
        }
+       else if (type == ly_symbol2scm ("markup"))
+       {
+               return MUSIC_FUNCTION_MARKUP;
+       }
+       else if (type == ly_symbol2scm ("markup-music"))
+       {
+               return MUSIC_FUNCTION_MARKUP_MUSIC;
+       }
+       else if (type == ly_symbol2scm ("markup-markup"))
+       {
+               return MUSIC_FUNCTION_MARKUP_MARKUP;
+       }
+       else if (type == ly_symbol2scm ("markup-music-music"))
+       {
+               return MUSIC_FUNCTION_MARKUP_MUSIC_MUSIC;
+       }
+       else if (type == ly_symbol2scm ("markup-markup-music"))
+       {
+               return MUSIC_FUNCTION_MARKUP_MARKUP_MUSIC;
+       }
        else if (type == ly_symbol2scm ("noarg"))
        {
                return MUSIC_FUNCTION;
index e496ec6838f38b727fb1d13ea9a8ba76e33c3b23..31ff12dcb8937fb38d2e916e1df4c2e823a5f903 100644 (file)
@@ -42,6 +42,8 @@ LY_DEFINE (ly_make_music_function, "ly:make-music-function", 2, 0, 0,
       
       if (scm_car (s) == Music_type_p_proc)
        str += "music";
+      else if (scm_car (s) == ly_scheme_function("markup?"))
+       str += "markup";
       else if (ly_c_procedure_p (scm_car (s)))
        str += "scm";
     }
index d15c71846a20efdc179d50393c6b9c0dec8f499c..8c910598eb90481349e6e172c55f66b9b8e72ec7 100644 (file)
@@ -365,6 +365,11 @@ or
 %token <scm> MUSIC_FUNCTION_SCM_MUSIC 
 %token <scm> MUSIC_FUNCTION_SCM_MUSIC_MUSIC 
 %token <scm> MUSIC_FUNCTION_SCM_SCM_MUSIC 
+%token <scm> MUSIC_FUNCTION_MARKUP 
+%token <scm> MUSIC_FUNCTION_MARKUP_MARKUP 
+%token <scm> MUSIC_FUNCTION_MARKUP_MUSIC 
+%token <scm> MUSIC_FUNCTION_MARKUP_MUSIC_MUSIC 
+%token <scm> MUSIC_FUNCTION_MARKUP_MARKUP_MUSIC 
 
 %token DRUMS
 %token DRUMMODE
@@ -989,6 +994,11 @@ Generic_prefix_music_scm:
        } embedded_scm {
                $$ = scm_list_3 ($1, make_input (THIS->pop_spot ()), $3);
        }
+       | MUSIC_FUNCTION_MARKUP {
+               THIS->push_spot ();
+       } full_markup {
+               $$ = scm_list_3 ($1, make_input (THIS->pop_spot ()), $3);
+       }
        | MUSIC_FUNCTION_MUSIC {
                THIS->push_spot (); 
        } Music {
@@ -1006,6 +1016,17 @@ Generic_prefix_music_scm:
        }  embedded_scm embedded_scm {
                $$ = scm_list_4 ($1, make_input (THIS->pop_spot ()), $3, $4);
        }
+       | MUSIC_FUNCTION_MARKUP_MUSIC {
+               THIS->push_spot (); 
+       }  full_markup Music {
+               $$ = scm_list_4 ($1, make_input (THIS->pop_spot ()), $3, $4->self_scm ());
+               scm_gc_unprotect_object ($4->self_scm ());
+       }
+       | MUSIC_FUNCTION_MARKUP_MARKUP {
+               THIS->push_spot (); 
+       }  full_markup full_markup {
+               $$ = scm_list_4 ($1, make_input (THIS->pop_spot ()), $3, $4);
+       }
        | MUSIC_FUNCTION_MUSIC_MUSIC {
                THIS->push_spot (); 
        }  Music  Music {
@@ -1021,6 +1042,14 @@ Generic_prefix_music_scm:
                scm_gc_unprotect_object ($5->self_scm ());
                scm_gc_unprotect_object ($4->self_scm ());
        }
+       | MUSIC_FUNCTION_MARKUP_MUSIC_MUSIC {
+               THIS->push_spot (); 
+       } full_markup Music Music {
+               $$ = scm_list_5 ($1, make_input (THIS->pop_spot ()),
+                       $3, $4->self_scm (), $5->self_scm ());
+               scm_gc_unprotect_object ($5->self_scm ());
+               scm_gc_unprotect_object ($4->self_scm ());
+       }
        ;
 
 Generic_prefix_music: