#define YYPARSE_PARAM my_lily_parser
#define YYLEX_PARAM my_lily_parser
#define THIS\
- ((My_lily_parser *) my_lily_parser)
+ ((Lily_parser *) my_lily_parser)
#define yyerror THIS->parser_error
int
yylex (YYSTYPE *s, void *v)
{
- My_lily_parser *pars = (My_lily_parser*) v;
- My_lily_lexer *lex = pars->lexer_;
+ Lily_parser *pars = (Lily_parser*) v;
+ Lily_lexer *lex = pars->lexer_;
lex->lexval = (void*) s;
lex->prepare_for_next_token ();
2. \markup identifier.
+ (what? --hwn)
+
3. \markup { }
+ (what? --hwn)
+
+
4. \repeat
\repeat .. \alternative
%token CLEF
%token COMMANDSPANREQUEST
%token CONSISTS
-%token CONSISTSEND
%token CONTEXT
%token DEFAULT
%token DENIES
%token INVALID
%token KEY
%token LYRICS
-%token LYRICS_STRING
%token MARK
%token MIDI
%token MULTI_MEASURE_REST
%token <scm> NUMBER_IDENTIFIER
%token <scm> OUTPUT_DEF_IDENTIFIER
%token <scm> RESTNAME
+%token <scm> LYRICS_STRING
%token <scm> SCM_T
%token <scm> SCORE_IDENTIFIER
%token <scm> STRING
$$ = $1->self_scm ();
scm_gc_unprotect_object ($$);
}
- | full_markup {
- $$ = $1;
- }
| output_def {
$$ = $1->self_scm ();
scm_gc_unprotect_object ($$);
scm_gc_unprotect_object ($$);
}
| number_expression {
- $$ = $1;
+ $$ = $1;
}
| string {
$$ = $1;
}
- | embedded_scm {
+ | embedded_scm {
$$ = $1;
}
+ | full_markup {
+ $$ = $1;
+ }
+ | DIGIT {
+ $$ = scm_int2num ($1);
+ }
;
context_def_spec_block:
SCM nn = THIS->lexer_->lookup_identifier ("pitchnames");
THIS->lexer_->push_note_state (alist_to_hashq (nn));
}
- Music
+ Grouped_music_list
{ $$ = $3;
THIS->lexer_->pop_state ();
}
SCM nn = THIS->lexer_->lookup_identifier ("drumPitchNames");
THIS->lexer_->push_note_state (alist_to_hashq (nn));
}
- /* FIXME: This used to be: */
- Music
-/* Grouped_music_list */
+ Grouped_music_list
{ $$ = $3;
THIS->lexer_->pop_state ();
}
| FIGURES
{ THIS->lexer_->push_figuredbass_state (); }
- /* FIXME: This used to be:
- Music
- but that breaks web build
- */
Grouped_music_list
{
Music *chm = MY_MAKE_MUSIC ("UntransposableMusic");
THIS->lexer_->push_chord_state (alist_to_hashq (nn));
}
- /* FIXME:
- Music
-*/
Grouped_music_list
{
Music *chm = MY_MAKE_MUSIC ("UnrelativableMusic");
}
| LYRICS
{ THIS->lexer_->push_lyric_state (); }
- /* FIXME:
- Music
-*/
Grouped_music_list
{
$$ = $3;
$$ = all;
scm_gc_unprotect_object ($1->self_scm ());
}
- | LYRICSTO string Music {
- Music *music = $3;
- SCM name = $2;
+ | LYRICSTO {
+ THIS->lexer_->push_lyric_state ();
+ } simple_string Music {
+ THIS->lexer_->pop_state ();
+ Music *music = $4;
+ SCM name = $3;
$$ = make_lyric_combine_music (name, music);
scm_gc_unprotect_object (music->self_scm ());
}
;
context_def_mod:
- CONSISTSEND { $$ = ly_symbol2scm ("consists-end"); }
- | CONSISTS { $$ = ly_symbol2scm ("consists"); }
+ CONSISTS { $$ = ly_symbol2scm ("consists"); }
| REMOVE { $$ = ly_symbol2scm ("remove"); }
| ACCEPTS { $$ = ly_symbol2scm ("accepts"); }
context_prop_spec:
simple_string {
+ if (!is_regular_identifier ($1))
+ {
+ THIS->here_input ().error (_("Grob name should be alphanumeric"));
+ }
+
$$ = scm_list_2 (ly_symbol2scm ("Bottom"),
scm_string_to_symbol ($1));
}
;
simple_string: STRING {
+ $$ = $1;
}
| LYRICS_STRING {
+ $$ = $1;
}
;
scalar: string {
+ $$ = $1;
}
| LYRICS_STRING {
+ $$ = $1;
}
| bare_int {
$$ = scm_int2num ($1);
}
| embedded_scm {
+ $$ = $1;
}
| full_markup {
+ $$ = $1;
}
| DIGIT {
$$ = scm_int2num ($1);
;
/*
-FIXME: remove or fix this comment. What is `This'?
-This is a trick:
+pre_events doesn't contain anything. It is a trick:
Adding pre_events to the simple_element
makes the choice between
;
chord_body_element:
- pitch exclamations questions post_events
+ pitch exclamations questions octave_check post_events
{
+ int q = $3;
+ int ex = $2;
+ SCM check = $4;
+ SCM post = $5;
+
Music *n = MY_MAKE_MUSIC ("NoteEvent");
n->set_property ("pitch", $1);
- if ($3 % 2)
+ if (q % 2)
n->set_property ("cautionary", SCM_BOOL_T);
- if ($2 % 2 || $3 % 2)
+ if (ex % 2 || q % 2)
n->set_property ("force-accidental", SCM_BOOL_T);
- if (ly_c_pair_p ($4)) {
- SCM arts = scm_reverse_x ($4, SCM_EOL);
+ if (ly_c_pair_p (post)) {
+ SCM arts = scm_reverse_x (post, SCM_EOL);
n->set_property ("articulations", arts);
}
+ if (ly_c_number_p (check))
+ {
+ int q = ly_scm2int (check);
+ n->set_property ("absolute-octave", scm_int2num (q-1));
+ }
+
+
$$ = n;
}
| DRUM_PITCH post_events {
%%
void
-My_lily_parser::set_yydebug (bool )
+Lily_parser::set_yydebug (bool )
{
#if 0
yydebug = 1;
}
void
-My_lily_parser::do_yyparse ()
+Lily_parser::do_yyparse ()
{
yyparse ((void*)this);
}
*/
void
-My_lily_parser::beam_check (SCM dur)
+Lily_parser::beam_check (SCM dur)
{
Duration *d = unsmob_duration (dur);
if (unsmob_music (last_beam_start_) && d->duration_log () <= 2)
*/
int
-My_lily_lexer::try_special_identifiers (SCM *destination, SCM sid)
+Lily_lexer::try_special_identifiers (SCM *destination, SCM sid)
{
if (ly_c_string_p (sid)) {
*destination = sid;