%token HYPHEN "--"
%token CHORDMODIFIERS
-%token LYRIC_MARKUP
%token MULTI_MEASURE_REST
%token EVENT_IDENTIFIER
%token EVENT_FUNCTION
%token FRACTION
-%token LYRICS_STRING
%token LYRIC_ELEMENT
%token MARKUP_FUNCTION
%token MARKUP_LIST_FUNCTION
{
$$ = parser->lexer_->eval_scm_token ($1);
}
- | full_markup
| full_markup_list
| context_modification
| score_block
*/
assignment_id:
STRING { $$ = $1; }
- | LYRICS_STRING { $$ = $1; }
;
assignment:
music_embedded:
music
+ {
+ if (unsmob_music ($1)->is_mus_type ("post-event")) {
+ parser->parser_error (@1, _ ("unexpected post-event"));
+ $$ = SCM_UNSPECIFIED;
+ }
+ }
| embedded_scm
{
- if (unsmob_music ($1)
- || scm_is_eq ($1, SCM_UNSPECIFIED))
+ if (scm_is_eq ($1, SCM_UNSPECIFIED))
$$ = $1;
- else
- {
+ else if (Music *m = unsmob_music ($1)) {
+ if (m->is_mus_type ("post-event")) {
+ parser->parser_error
+ (@1, _ ("unexpected post-event"));
+ $$ = SCM_UNSPECIFIED;
+ } else
+ $$ = $1;
+ } else {
@$.warning (_ ("Ignoring non-music expression"));
$$ = SCM_UNSPECIFIED;
}
try_string_variants ($2, $4),
$3, $2, $4);
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist LYRICS_STRING
- {
- $$ = check_scheme_arg (parser, @4,
- try_string_variants ($2, $4),
- $3, $2, $4);
- }
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist lyric_markup
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist full_markup
{
$$ = check_scheme_arg (parser, @4, $4, $3, $2);
}
symbol_list_element:
STRING
- | LYRICS_STRING
| embedded_scm_bare
;
(scm_call_1
($2, make_music_from_simple
(parser, @4, $4))))
- MYREPARSE (@4, $2, LYRICS_STRING, $4);
+ MYREPARSE (@4, $2, STRING, $4);
else
MYREPARSE (@4, $2, SCM_ARG, $4);
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist LYRICS_STRING
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist STRING
{
$$ = $3;
SCM res = try_string_variants ($2, $4);
(scm_call_1
($2, make_music_from_simple
(parser, @4, $4))))
- MYREPARSE (@4, $2, LYRICS_STRING, $4);
+ MYREPARSE (@4, $2, STRING, $4);
else
MYREPARSE (@4, $2, SCM_ARG, $4);
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist STRING
- {
- $$ = $3;
- SCM res = try_string_variants ($2, $4);
- if (!SCM_UNBNDP (res))
- if (scm_is_pair (res))
- MYREPARSE (@4, $2, SYMBOL_LIST, res);
- else
- MYREPARSE (@4, $2, SCM_ARG, res);
- else
- MYREPARSE (@4, $2, SCM_ARG, $4);
- }
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist lyric_markup
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist full_markup
{
$$ = $3;
if (scm_is_true (scm_call_1 ($2, $4)))
(scm_call_1
($2, make_music_from_simple
(parser, @4, $4))))
- MYREPARSE (@4, $2, LYRICS_STRING, $4);
+ MYREPARSE (@4, $2, STRING, $4);
else
MYREPARSE (@4, $2, SCM_ARG, $4);
}
MYBACKUP (EVENT_IDENTIFIER, $4, @4);
}
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist_keep lyric_markup
+ | EXPECT_OPTIONAL EXPECT_SCM function_arglist_keep full_markup
{
if (scm_is_true (scm_call_1 ($2, $4)))
$$ = scm_cons ($4, $3);
MYBACKUP (STRING, $4, @4);
}
}
- | EXPECT_OPTIONAL EXPECT_SCM function_arglist_keep LYRICS_STRING
- {
- SCM res = try_string_variants ($2, $4);
- if (!SCM_UNBNDP (res))
- if (scm_is_pair (res)) {
- $$ = $3;
- MYREPARSE (@4, $2, SYMBOL_LIST, res);
- }
- else
- $$ = scm_cons (res, $3);
- else {
- $$ = scm_cons (loc_on_music (@3, $1), $3);
- MYBACKUP (LYRICS_STRING, $4, @4);
- }
- }
| EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup BACKUP
{
$$ = scm_cons ($1, $3);
MYREPARSE (@3, $1, SCM_ARG, $3);
}
| EXPECT_SCM function_arglist_optional STRING
- {
- $$ = $2;
- SCM res = try_string_variants ($1, $3);
- if (!SCM_UNBNDP (res))
- if (scm_is_pair (res))
- MYREPARSE (@3, $1, SYMBOL_LIST, res);
- else
- MYREPARSE (@3, $1, SCM_ARG, res);
- else
- // This is going to flag a syntax error, we
- // know the predicate to be false.
- MYREPARSE (@3, $1, SCM_ARG, $3);
- }
- | EXPECT_SCM function_arglist_optional LYRICS_STRING
{
$$ = $2;
SCM res = try_string_variants ($1, $3);
// know the predicate to be false.
MYREPARSE (@3, $1, SCM_ARG, $3);
}
- | EXPECT_SCM function_arglist_optional lyric_markup
+ | EXPECT_SCM function_arglist_optional full_markup
{
$$ = $2;
if (scm_is_true (scm_call_1 ($1, $3)))
}
}
| REVERT revert_arg {
- $$ = scm_list_3 (ly_symbol2scm ("pop"),
- scm_car ($2),
- scm_cdr ($2));
+ $$ = scm_cons (ly_symbol2scm ("pop"), $2);
}
;
simple_string: STRING {
$$ = $1;
}
- | LYRICS_STRING {
- $$ = $1;
- }
| embedded_scm_bare
{
if (scm_is_string ($1)) {
| bare_number
| FRACTION
| lyric_element
- | STRING
;
scalar_closed:
| bare_number
| FRACTION
| lyric_element
- | STRING
;
make_simple_markup ($1));
$$ = t->unprotect ();
}
- | LYRICS_STRING {
- Music *t = MY_MAKE_MUSIC ("TextScriptEvent", @$);
- t->set_property ("text",
- make_simple_markup ($1));
- $$ = t->unprotect ();
- }
| embedded_scm_closed
{
Music *m = unsmob_music ($1);
;
lyric_element:
- lyric_markup {
+ full_markup {
$$ = $1;
}
- | LYRICS_STRING {
+ | STRING {
$$ = $1;
}
| LYRIC_ELEMENT
lyric_element_music:
lyric_element optional_notemode_duration post_events {
+ if (!parser->lexer_->is_lyric_state ())
+ parser->parser_error (@1, _ ("have to be in Lyric mode for lyrics"));
$$ = MAKE_SYNTAX ("lyric-event", @$, $1, $2);
if (scm_is_pair ($3))
unsmob_music ($$)->set_property
}
;
-/*
-This should be done more dynamically if possible.
-*/
-
-lyric_markup:
- LYRIC_MARKUP
- { parser->lexer_->push_markup_state (); }
- markup_top {
- $$ = $3;
- parser->lexer_->pop_state ();
- }
- ;
-
full_markup_list:
MARKUPLIST
{ parser->lexer_->push_markup_state (); }