| partial_function ETC
{
$$ = MAKE_SYNTAX (partial_music_function, @$,
- scm_reverse_x (scm_car ($1), SCM_EOL),
- scm_reverse_x (scm_cdr ($1), SCM_EOL));
+ scm_reverse_x ($1, SCM_EOL));
}
;
partial_function:
MUSIC_FUNCTION function_arglist_partial
{
- $$ = scm_cons (scm_list_1 ($1), scm_list_1 ($2));
+ $$ = scm_acons ($1, $2, SCM_EOL);
}
| EVENT_FUNCTION function_arglist_partial
{
- $$ = scm_cons (scm_list_1 ($1), scm_list_1 ($2));
+ $$ = scm_acons ($1, $2, SCM_EOL);
}
| SCM_FUNCTION function_arglist_partial
{
- $$ = scm_cons (scm_list_1 ($1), scm_list_1 ($2));
+ $$ = scm_acons ($1, $2, SCM_EOL);
+ }
+ | OVERRIDE grob_prop_path '='
+ {
+ if (SCM_UNBNDP ($2))
+ $$ = scm_list_1 (SCM_BOOL_F);
+ else
+ $$ = scm_cons
+ (scm_list_3 (Syntax::property_override_function,
+ scm_cdr ($2), scm_car ($2)),
+ SCM_EOL);
+ }
+ | SET context_prop_spec '='
+ {
+ if (SCM_UNBNDP ($2))
+ $$ = scm_list_1 (SCM_BOOL_F);
+ else
+ $$ = scm_cons
+ (scm_list_3 (Syntax::property_set_function,
+ scm_cadr ($2), scm_car ($2)),
+ SCM_EOL);
}
| MUSIC_FUNCTION EXPECT_SCM function_arglist_optional partial_function
{
- $$ = scm_cons (scm_cons ($1, scm_car ($4)),
- scm_cons ($3, scm_cdr ($4)));
+ $$ = scm_acons ($1, $3, $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_acons ($1, $3, $4);
}
| SCM_FUNCTION EXPECT_SCM function_arglist_optional partial_function
{
- $$ = scm_cons (scm_cons ($1, scm_car ($4)),
- scm_cons ($3, scm_cdr ($4)));
+ $$ = scm_acons ($1, $3, $4);
+ }
+ | OVERRIDE grob_prop_path '=' partial_function
+ {
+ if (SCM_UNBNDP ($2))
+ $$ = scm_list_1 (SCM_BOOL_F);
+ else
+ $$ = scm_cons
+ (scm_list_3 (Syntax::property_override_function,
+ scm_cdr ($2), scm_car ($2)),
+ $4);
+ }
+ | SET context_prop_spec '=' partial_function
+ {
+ if (SCM_UNBNDP ($2))
+ $$ = scm_list_1 (SCM_BOOL_F);
+ else
+ $$ = scm_cons
+ (scm_list_3 (Syntax::property_set_function,
+ scm_cadr ($2), scm_car ($2)),
+ $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)));
+ $$ = scm_acons ($1, $4, $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_acons ($1, $4, $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)));
+ $$ = scm_acons ($1, $4, $5);
}
;
;
new_lyrics:
- ADDLYRICS lyric_mode_music {
- $$ = scm_list_1 ($2);
+ ADDLYRICS optional_context_mod lyric_mode_music {
+ Context_mod *ctxmod = unsmob<Context_mod> ($2);
+ SCM mods = SCM_EOL;
+ if (ctxmod)
+ mods = ctxmod->get_mods ();
+ $$ = scm_acons ($3, mods, SCM_EOL);
}
- | new_lyrics ADDLYRICS lyric_mode_music {
- $$ = scm_cons ($3, $1);
+ | new_lyrics ADDLYRICS optional_context_mod lyric_mode_music {
+ Context_mod *ctxmod = unsmob<Context_mod> ($3);
+ SCM mods = SCM_EOL;
+ if (ctxmod)
+ mods = ctxmod->get_mods ();
+ $$ = scm_acons ($4, mods, $1);
}
;
OVERRIDE grob_prop_path '=' scalar {
if (SCM_UNBNDP ($2))
$$ = MAKE_SYNTAX (void_music, @$);
- else {
- $$ = MAKE_SYNTAX (property_operation, @$,
+ else
+ $$ = MAKE_SYNTAX (property_override, @$,
scm_car ($2),
- ly_symbol2scm ("OverrideProperty"),
- scm_cadr ($2),
- $4,
- scm_cddr ($2));
- }
+ scm_cdr ($2),
+ $4);
}
| REVERT simple_revert_context revert_arg {
- $$ = MAKE_SYNTAX (property_operation, @$,
- $2,
- ly_symbol2scm ("RevertProperty"),
- scm_car ($3),
- scm_cdr ($3));
+ $$ = MAKE_SYNTAX (property_revert, @$, $2, $3);
}
| SET context_prop_spec '=' scalar {
if (SCM_UNBNDP ($2))
$$ = MAKE_SYNTAX (void_music, @$);
else
- $$ = MAKE_SYNTAX (property_operation, @$,
+ $$ = MAKE_SYNTAX (property_set, @$,
scm_car ($2),
- ly_symbol2scm ("PropertySet"),
scm_cadr ($2),
$4);
}
if (SCM_UNBNDP ($2))
$$ = MAKE_SYNTAX (void_music, @$);
else
- $$ = MAKE_SYNTAX (property_operation, @$,
+ $$ = MAKE_SYNTAX (property_unset, @$,
scm_car ($2),
- ly_symbol2scm ("PropertyUnset"),
scm_cadr ($2));
}
;
SCM
make_chord_step (SCM step_scm, Rational alter)
{
- int step = scm_to_int (step_scm);
+ Pitch m (0, scm_to_int (step_scm) - 1, alter);
- if (step == 7)
- alter += FLAT_ALTERATION;
+ // Notename/octave are normalized
+ if (m.get_notename () == 6)
+ m = m.transposed (Pitch (0, 0, FLAT_ALTERATION));
- while (step < 0)
- step += 7;
- Pitch m ((step -1) / 7, (step - 1) % 7, alter);
return m.smobbed_copy ();
}