%nonassoc COMPOSITE
%left ADDLYRICS
-%right ':' UNSIGNED REAL
-
- /* The above are needed for collecting tremoli greedily, and together
- with the next rule for putting together numbers and units
+%right ':' UNSIGNED REAL E_UNSIGNED EVENT_IDENTIFIER EVENT_FUNCTION '^' '_'
+ HYPHEN EXTENDER
+
+ /* The above are needed for collecting tremoli and other items (that
+ could otherwise be interpreted as belonging to the next function
+ argument) greedily, and together with the next rule will serve to
+ join numbers and units greedily instead of allowing them into
+ separate function arguments
*/
%nonassoc NUMBER_IDENTIFIER
{
$$ = check_scheme_arg (parser, @4, $4, $3, $2);
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_nonbackup post_event_nofinger
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup post_event_nofinger
{
$$ = check_scheme_arg (parser, @4, $4, $3, $2);
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_nonbackup '-' UNSIGNED
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup '-' UNSIGNED
{
SCM n = scm_difference ($5, SCM_UNDEFINED);
if (scm_is_true (scm_call_1 ($2, n)))
}
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_nonbackup '-' REAL
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup '-' REAL
{
$$ = check_scheme_arg (parser, @4,
scm_difference ($5, SCM_UNDEFINED),
$3, $2);
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_nonbackup '-' NUMBER_IDENTIFIER
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup '-' NUMBER_IDENTIFIER
{
$$ = check_scheme_arg (parser, @4,
scm_difference ($5, SCM_UNDEFINED),
MYBACKUP (SCM_ARG, $4, @4);
}
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_backup post_event_nofinger
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup post_event_nofinger
{
if (scm_is_true (scm_call_1 ($2, $4)))
{
MYBACKUP (FRACTION, $4, @4);
}
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_backup '-' UNSIGNED
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup '-' UNSIGNED
{
SCM n = scm_difference ($5, SCM_UNDEFINED);
if (scm_is_true (scm_call_1 ($2, n))) {
}
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_backup '-' REAL
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup '-' REAL
{
SCM n = scm_difference ($5, SCM_UNDEFINED);
if (scm_is_true (scm_call_1 ($2, n))) {
MYBACKUP (REAL, n, @5);
}
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist_closed_backup '-' NUMBER_IDENTIFIER
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup '-' NUMBER_IDENTIFIER
{
SCM n = scm_difference ($5, SCM_UNDEFINED);
if (scm_is_true (scm_call_1 ($2, n))) {
$$ = check_scheme_arg (parser, @3,
$3, $2, $1);
}
- | EXPECT_SCM function_arglist_closed_optional post_event_nofinger
+ | EXPECT_SCM function_arglist_optional post_event_nofinger
{
$$ = check_scheme_arg (parser, @3,
$3, $2, $1);
}
- | EXPECT_SCM function_arglist_closed_optional '-' NUMBER_IDENTIFIER
+ | EXPECT_SCM function_arglist_optional '-' NUMBER_IDENTIFIER
{
SCM n = scm_difference ($4, SCM_UNDEFINED);
$$ = check_scheme_arg (parser, @4, n, $2, $1);
$$ = $2;
MYREPARSE (@3, $1, DURATION_IDENTIFIER, $3);
}
- | EXPECT_SCM function_arglist_closed_optional '-' UNSIGNED
+ | EXPECT_SCM function_arglist_optional '-' UNSIGNED
{
$$ = $2;
SCM n = scm_difference ($4, SCM_UNDEFINED);
}
}
- | EXPECT_SCM function_arglist_closed_optional '-' REAL
+ | EXPECT_SCM function_arglist_optional '-' REAL
{
$$ = $2;
SCM n = scm_difference ($4, SCM_UNDEFINED);
$$ = check_scheme_arg (parser, @3,
$3, $2, $1);
}
- | EXPECT_SCM function_arglist_closed_optional '-' NUMBER_IDENTIFIER
+ | EXPECT_SCM function_arglist_optional '-' NUMBER_IDENTIFIER
{
$$ = check_scheme_arg (parser, @3,
scm_difference ($4, SCM_UNDEFINED),
$2, $1);
}
- | EXPECT_SCM function_arglist_closed_optional post_event_nofinger
+ | EXPECT_SCM function_arglist_optional post_event_nofinger
{
$$ = check_scheme_arg (parser, @3,
$3, $2, $1);
$$ = MAKE_SYNTAX ("void-music", @1);
}
}
- }
+ } %prec ':'
| simple_chord_elements post_events {
SCM elts = ly_append2 ($1, scm_reverse_x ($2, SCM_EOL));
* i = @$; */
i.set_location (@1, @2);
$$ = MAKE_SYNTAX ("event-chord", i, elts);
- }
+ } %prec ':'
| CHORD_REPETITION optional_notemode_duration post_events {
Input i;
i.set_location (@1, @3);
$$ = MAKE_SYNTAX ("repetition-chord", i,
$2, scm_reverse_x ($3, SCM_EOL));
- }
+ } %prec ':'
| MULTI_MEASURE_REST optional_notemode_duration post_events {
Input i;
i.set_location (@1, @3);
$$ = MAKE_SYNTAX ("multi-measure-rest", i, $2,
scm_reverse_x ($3, SCM_EOL));
- }
+ } %prec ':'
| command_element
| note_chord_element
;
m-> set_property ("elements", es);
m->set_spot (@$);
$$ = m->self_scm ();
- }
+ } %prec ':'
;
chord_body:
if (scm_is_pair ($3))
unsmob_music ($$)->set_property
("articulations", scm_reverse_x ($3, SCM_EOL));
- }
+ } %prec ':'
;
new_chord: