X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fparser.yy;h=3b690e8980890b7ef3900723e8bf97ec8b6c7c60;hb=a40e959dba858a468bede003e1f07438c6700fad;hp=18668dead09d914cee5e9f18031eab974ac86b3e;hpb=c95dc0b1deaeda6cb02073791c522821adebe8a3;p=lilypond.git diff --git a/lily/parser.yy b/lily/parser.yy index 18668dead0..3b690e8980 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -182,6 +182,7 @@ void set_music_properties (Music *p, SCM a); %token LYRICSTO "\\lyricsto" %token MARK "\\mark" %token MARKUP "\\markup" +%token MARKUPLINES "\\markuplines" %token MIDI "\\midi" %token NAME "\\name" %token NOTEMODE "\\notemode" @@ -281,6 +282,11 @@ If we give names, Bison complains. %token MARKUP_HEAD_SCM0_SCM1_MARKUP2 %token MARKUP_HEAD_SCM0_MARKUP1_MARKUP2 %token MARKUP_HEAD_SCM0_SCM1_SCM2 +%token MARKUP_LIST_HEAD_EMPTY +%token MARKUP_LIST_HEAD_LIST0 +%token MARKUP_LIST_HEAD_SCM0 +%token MARKUP_LIST_HEAD_SCM0_LIST1 +%token MARKUP_LIST_HEAD_SCM0_SCM1_LIST2 %token MARKUP_IDENTIFIER %token MUSIC_FUNCTION %token MUSIC_IDENTIFIER @@ -373,6 +379,7 @@ If we give names, Bison complains. %type figure_spec %type fraction %type full_markup +%type full_markup_list %type function_scm_argument %type function_arglist %type function_arglist_music_last @@ -387,6 +394,7 @@ If we give names, Bison complains. %type markup_braced_list %type markup_braced_list_body %type markup_composed_list +%type markup_command_list %type markup_head_1_item %type markup_head_1_list %type markup_list @@ -478,6 +486,10 @@ toplevel_expression: scm_call_2 (proc, PARSER->self_scm (), music->self_scm ()); } | full_markup { + SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-text-handler"); + scm_call_2 (proc, PARSER->self_scm (), scm_list_1 ($1)); + } + | full_markup_list { SCM proc = PARSER->lexer_->lookup_identifier ("toplevel-text-handler"); scm_call_2 (proc, PARSER->self_scm (), $1); } @@ -663,6 +675,10 @@ book_body: scm_call_3 (proc, PARSER->self_scm (), $$->self_scm (), music->self_scm ()); } | book_body full_markup { + SCM proc = PARSER->lexer_->lookup_identifier ("book-text-handler"); + scm_call_2 (proc, $$->self_scm (), scm_list_1 ($2)); + } + | book_body full_markup_list { SCM proc = PARSER->lexer_->lookup_identifier ("book-text-handler"); scm_call_2 (proc, $$->self_scm (), $2); } @@ -704,7 +720,7 @@ score_body: $$->user_key_ = ly_scm2string ($2); } | score_body lilypond_header { - $$->header_ = $2; + $$->set_header ($2); } | score_body output_def { if ($2->lookup_variable (ly_symbol2scm ("is-paper")) == SCM_BOOL_T) @@ -2186,6 +2202,15 @@ lyric_markup: } ; +full_markup_list: + MARKUPLINES + { PARSER->lexer_->push_markup_state (); } + markup_list { + $$ = $3; + PARSER->lexer_->pop_state (); + } + ; + full_markup: MARKUP_IDENTIFIER { $$ = $1; @@ -2217,6 +2242,9 @@ markup_list: | markup_braced_list { $$ = $1; } + | markup_command_list { + $$ = scm_list_1 ($1); + } ; markup_composed_list: @@ -2242,6 +2270,24 @@ markup_braced_list_body: } ; +markup_command_list: + MARKUP_LIST_HEAD_EMPTY { + $$ = scm_list_1 ($1); + } + | MARKUP_LIST_HEAD_LIST0 markup_list { + $$ = scm_list_2 ($1, $2); + } + | MARKUP_LIST_HEAD_SCM0 embedded_scm { + $$ = scm_list_2 ($1, $2); + } + | MARKUP_LIST_HEAD_SCM0_LIST1 embedded_scm markup_list { + $$ = scm_list_3 ($1, $2, $3); + } + | MARKUP_LIST_HEAD_SCM0_SCM1_LIST2 embedded_scm embedded_scm markup_list { + $$ = scm_list_4 ($1, $2, $3, $4); + } + ; + markup_head_1_item: MARKUP_HEAD_MARKUP0 { $$ = scm_list_1 ($1);