$$ = parser->lexer_->eval_scm_token ($1, @1);
}
| FRACTION
+ | partial_markup
| full_markup_list
| context_modification
| score_block
| FRACTION
| string
| embedded_scm
+ | partial_markup
| full_markup_list
| context_modification
| partial_function ETC
+ {
+ $$ = MAKE_SYNTAX (partial_music_function, @$,
+ scm_reverse_x (scm_car ($1), SCM_EOL),
+ scm_reverse_x (scm_cdr ($1), SCM_EOL));
+ }
;
+// Partial functions
partial_function:
MUSIC_FUNCTION function_arglist_partial
{
- $$ = MAKE_SYNTAX (partial_music_function, @$,
- $1, $2);
+ $$ = scm_cons (scm_list_1 ($1), scm_list_1 ($2));
}
| EVENT_FUNCTION function_arglist_partial
{
- $$ = MAKE_SYNTAX (partial_music_function, @$,
- $1, $2);
+ $$ = scm_cons (scm_list_1 ($1), scm_list_1 ($2));
}
| SCM_FUNCTION function_arglist_partial
{
- $$ = MAKE_SYNTAX (partial_music_function, @$,
- $1, $2);
+ $$ = scm_cons (scm_list_1 ($1), scm_list_1 ($2));
+ }
+ | MUSIC_FUNCTION EXPECT_SCM function_arglist_optional partial_function
+ {
+ $$ = scm_cons (scm_cons ($1, scm_car ($4)),
+ scm_cons ($3, scm_cdr ($4)));
+ }
+ | EVENT_FUNCTION EXPECT_SCM function_arglist_optional partial_function
+ {
+ $$ = scm_cons (scm_cons ($1, scm_car ($4)),
+ scm_cons ($3, scm_cdr ($4)));
+ }
+ | SCM_FUNCTION EXPECT_SCM function_arglist_optional partial_function
+ {
+ $$ = scm_cons (scm_cons ($1, scm_car ($4)),
+ scm_cons ($3, scm_cdr ($4)));
+ }
+ | MUSIC_FUNCTION EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup partial_function
+ {
+ $$ = scm_cons (scm_cons ($1, scm_car ($5)),
+ scm_cons ($4, scm_cdr ($5)));
+ }
+ | EVENT_FUNCTION EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup partial_function
+ {
+ $$ = scm_cons (scm_cons ($1, scm_car ($5)),
+ scm_cons ($4, scm_cdr ($5)));
+ }
+ | SCM_FUNCTION EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup partial_function
+ {
+ $$ = scm_cons (scm_cons ($1, scm_car ($5)),
+ scm_cons ($4, scm_cdr ($5)));
}
;
}
;
-full_markup:
+markup_mode:
MARKUP
- { parser->lexer_->push_markup_state (); }
- markup_top {
- $$ = $3;
+ {
+ parser->lexer_->push_markup_state ();
+ }
+ ;
+
+full_markup:
+ markup_mode markup_top {
+ $$ = $2;
+ parser->lexer_->pop_state ();
+ }
+ ;
+
+partial_markup:
+ markup_mode markup_head_1_list ETC
+ {
+ $$ = MAKE_SYNTAX (partial_markup, @2, $2);
parser->lexer_->pop_state ();
}
;