]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/parser.yy
add Page_spacing_result::print()
[lilypond.git] / lily / parser.yy
index 02f03dea92fd941e8a4646e24f94be083b360b72..f901a6de0e67cdc6bc54ea00e4ca4bfc08d811ec 100644 (file)
@@ -410,6 +410,7 @@ If we give names, Bison complains.
 %type <scm> pitch_also_in_chords
 %type <scm> post_events
 %type <scm> property_operation
+%type <scm> property_path property_path_revved
 %type <scm> scalar
 %type <scm> script_abbreviation
 %type <scm> simple_chord_elements
@@ -650,12 +651,19 @@ book_body:
                $2->unprotect ();
        }
        | book_body score_block {
-               SCM s = $2->self_scm ();
-               $$->add_score (s);
-               $2->unprotect();
+               Score *score = $2;
+               SCM proc = PARSER->lexer_->lookup_identifier ("book-score-handler");
+               scm_call_2 (proc, $$->self_scm (), score->self_scm ());
+               score->unprotect ();
+       }
+       | book_body composite_music {
+               Music *music = unsmob_music ($2);
+               SCM proc = PARSER->lexer_->lookup_identifier ("book-music-handler");
+               scm_call_3 (proc, PARSER->self_scm (), $$->self_scm (), music->self_scm ());
        }
        | book_body full_markup {
-               $$->add_score ($2);
+               SCM proc = PARSER->lexer_->lookup_identifier ("book-text-handler");
+               scm_call_2 (proc, $$->self_scm (), $2);
        }
        | book_body lilypond_header {
                $$->header_ = $2;
@@ -1122,6 +1130,22 @@ context_change:
        }
        ;
 
+
+property_path_revved:
+       embedded_scm {
+               $$ = scm_cons ($1, SCM_EOL);
+       }
+       | property_path_revved embedded_scm {
+               $$ = scm_cons ($2, $1);
+       }
+       ;
+
+property_path:
+       property_path_revved  {
+               $$ = scm_reverse_x ($1, SCM_EOL);
+       } 
+       ;
+
 property_operation:
        STRING '=' scalar {
                $$ = scm_list_3 (ly_symbol2scm ("assign"),
@@ -1131,13 +1155,10 @@ property_operation:
                $$ = scm_list_2 (ly_symbol2scm ("unset"),
                        scm_string_to_symbol ($2));
        }
-       | OVERRIDE simple_string embedded_scm '=' embedded_scm {
-               $$ = scm_list_4 (ly_symbol2scm ("push"),
-                       scm_string_to_symbol ($2), $5, $3);
-       }
-       | OVERRIDE simple_string embedded_scm embedded_scm '=' embedded_scm {
-               $$ = scm_list_5 (ly_symbol2scm ("push"),
-                               scm_string_to_symbol ($2), $6, $4, $3);
+       | OVERRIDE simple_string property_path '=' embedded_scm {
+               $$ = scm_append (scm_list_2 (scm_list_3 (ly_symbol2scm ("push"),
+                                                       scm_string_to_symbol ($2), $5),
+                                            $3));
        }
        | REVERT simple_string embedded_scm {
                $$ = scm_list_3 (ly_symbol2scm ("pop"),
@@ -1183,17 +1204,12 @@ context_prop_spec:
        ;
 
 simple_music_property_def:
-       OVERRIDE context_prop_spec embedded_scm '=' scalar {
-               $$ = scm_list_5 (scm_car ($2),
-                       ly_symbol2scm ("OverrideProperty"),
-                       scm_cadr ($2),
-                       $5, $3);
-       }
-       | OVERRIDE context_prop_spec embedded_scm  embedded_scm '=' scalar {
-               $$ = scm_list_n (scm_car ($2),                  
-                       ly_symbol2scm ("OverrideProperty"),
-                       scm_cadr ($2),
-                       $6, $4, $3, SCM_UNDEFINED);
+       OVERRIDE context_prop_spec property_path '=' scalar {
+               $$ = scm_append (scm_list_2 (scm_list_n (scm_car ($2),                  
+                               ly_symbol2scm ("OverrideProperty"),
+                               scm_cadr ($2),
+                               $5, SCM_UNDEFINED),
+                               $3));
        }
        | REVERT context_prop_spec embedded_scm {
                $$ = scm_list_4 (scm_car ($2),