{
$$ = MAKE_SYNTAX ("event-chord", @$, scm_reverse_x ($2, SCM_EOL));
}
+ | FIGURE_OPEN figure_list FIGURE_CLOSE
+ {
+ $$ = MAKE_SYNTAX ("event-chord", @$, scm_reverse_x ($2, SCM_EOL));
+ }
;
chord_body_elements:
}
;
-figure_spec:
- FIGURE_OPEN figure_list FIGURE_CLOSE {
- $$ = scm_reverse_x ($2, SCM_EOL);
- }
- ;
-
-
optional_rest:
/**/ { $$ = SCM_BOOL_F; }
| REST { $$ = SCM_BOOL_T; }
$$ = n->unprotect ();
}
} %prec ':'
- | simple_chord_elements post_events {
+ | new_chord post_events {
+ if (!parser->lexer_->is_chord_state ())
+ parser->parser_error (@1, _ ("have to be in Chord mode for chords"));
if (scm_is_pair ($2)) {
if (unsmob_pitch ($1))
$1 = make_chord_elements (@1,
}
;
-// Can return a single pitch rather than a list.
-simple_chord_elements:
- new_chord {
- if (!parser->lexer_->is_chord_state ())
- parser->parser_error (@1, _ ("have to be in Chord mode for chords"));
- $$ = $1;
- }
- | figure_spec optional_notemode_duration {
- for (SCM s = $1; scm_is_pair (s); s = scm_cdr (s))
- {
- unsmob_music (scm_car (s))->set_property ("duration", $2);
- }
- $$ = $1;
- }
- ;
-
lyric_element:
full_markup {
if (!parser->lexer_->is_lyric_state ())