? build-stamp ? context-unique.diff ? def-rel-music-funciton.diff ? delay-music-functions.diff ? exjobb.diff3 ? fonts ? lib ? lilypond.kdevelop ? lilypond.kdevelop.pcs ? lilypond.kdevses ? optimized ? ref1.diff ? ref2.diff ? repeat.diff ? scons.cache ? Documentation/out ? Documentation/out-www ? Documentation/bibliography/out ? Documentation/bibliography/out-www ? Documentation/misc/out ? Documentation/misc/out-www ? Documentation/pictures/out ? Documentation/pictures/out-www ? Documentation/topdocs/out ? Documentation/topdocs/out-www ? Documentation/user/out ? Documentation/user/out-www ? buildscripts/out ? buildscripts/out-www ? cygwin/out ? cygwin/out-www ? debian/out ? elisp/out ? elisp/out-www ? flower/out ? flower/out-scons ? flower/out-www ? flower/include/.sconsign ? flower/include/out ? flower/include/out-www ? input/Diagram1.dia.autosave ? input/les-nereides.pdf ? input/les-nereides.ps ? input/out ? input/out-www ? input/mutopia/out ? input/mutopia/out-www ? input/mutopia/E.Satie/out ? input/mutopia/E.Satie/out-www ? input/mutopia/F.Schubert/out ? input/mutopia/F.Schubert/out-www ? input/mutopia/J.S.Bach/out ? input/mutopia/J.S.Bach/out-www ? input/mutopia/R.Schumann/out ? input/mutopia/R.Schumann/out-www ? input/mutopia/W.A.Mozart/out ? input/mutopia/W.A.Mozart/out-www ? input/no-notation/out ? input/no-notation/out-www ? input/no-notation/parse-expressions.facit ? input/no-notation/parse-expressions.ly ? input/no-notation/parse-expressions.pdf ? input/no-notation/parse-expressions.ps ? input/no-notation/to-xml.pdf ? input/no-notation/to-xml.ps ? input/regression/chord-tremolo.pdf ? input/regression/chord-tremolo.ps ? input/regression/lyric-melisma-manual.pdf ? input/regression/lyric-melisma-manual.ps ? input/regression/lyrics-melisma-beam.pdf ? input/regression/lyrics-melisma-beam.ps ? input/regression/out ? input/regression/out-www ? input/regression/tuplet-nest.pdf ? input/regression/tuplet-nest.ps ? input/template/out ? input/test/out ? input/test/out-www ? input/tutorial/out ? input/tutorial/out-www ? kpath-guile/out ? kpath-guile/out-scons ? lily/On ? lily/foo.pdf ? lily/foo.ps ? lily/lilypond ? lily/lilypond.gdt ? lily/lilypond.gpr ? lily/out ? lily/out-scons ? lily/out-www ? lily/parser.yy.ok ? lily/include/.sconsign ? lily/include/out ? lily/include/out-www ? ly/out ? ly/out-www ? make/out ? make/out-www ? mf/feta-alphabet11.600pk ? mf/feta-alphabet13.600pk ? mf/feta-alphabet14.600pk ? mf/feta-alphabet16.600pk ? mf/feta-alphabet18.600pk ? mf/feta-alphabet20.600pk ? mf/feta-alphabet23.600pk ? mf/feta-alphabet26.600pk ? mf/feta-braces-a.600pk ? mf/feta-braces-b.600pk ? mf/feta-braces-c.600pk ? mf/feta-braces-d.600pk ? mf/feta-braces-e.600pk ? mf/feta-braces-f.600pk ? mf/feta-braces-g.600pk ? mf/feta-braces-h.600pk ? mf/feta-braces-i.600pk ? mf/feta11.600pk ? mf/feta13.600pk ? mf/feta14.600pk ? mf/feta16.600pk ? mf/feta18.600pk ? mf/feta20.600pk ? mf/feta23.600pk ? mf/feta26.600pk ? mf/out ? mf/out-scons ? mf/out-www ? mf/parmesan11.600pk ? mf/parmesan13.600pk ? mf/parmesan14.600pk ? mf/parmesan16.600pk ? mf/parmesan18.600pk ? mf/parmesan20.600pk ? mf/parmesan23.600pk ? mf/parmesan26.600pk ? po/out ? po/out-www ? ps/out ? ps/out-www ? python/convertrules.pyc ? python/fontextract.pyc ? python/lilylib.pyc ? python/out ? python/out-www ? scm/ly-syntax-constructors.scm ? scm/out ? scm/out-www ? scripts/lilypond-book-36.py ? scripts/lilypond-book.py.new ? scripts/out ? scripts/out-www ? stepmake/out ? stepmake/out-www ? stepmake/bin/out ? stepmake/bin/out-www ? stepmake/bin/packagepython.pyc ? stepmake/stepmake/out ? stepmake/stepmake/out-www ? tex/out ? tex/out-www ? ttftool/out ? ttftool/out-scons ? ttftool/include/.sconsign ? ttftool/include/out ? vim/out ? vim/out-www Index: lily/parser.yy =================================================================== RCS file: /sources/lilypond/lilypond/lily/parser.yy,v retrieving revision 1.514 diff -u -r1.514 parser.yy --- lily/parser.yy 17 May 2006 17:30:48 -0000 1.514 +++ lily/parser.yy 18 May 2006 11:25:17 -0000 @@ -111,8 +111,12 @@ #define MY_MAKE_MUSIC(x) make_music_by_name (ly_symbol2scm (x)) -#define MAKE_SYNTAX_EXPRESSION(name, ...) \ - scm_apply_0 (ly_lily_module_constant (name), scm_list (__VA_ARGS__, SCM_UNDEFINED)); +/* ES TODO: +- Don't use lily module, create a new module instead. +- delay application of the function +*/ +#define MAKE_SYNTAX(name, location, ...) \ + scm_apply_0 (ly_lily_module_constant (name), scm_list_n (make_input (location), __VA_ARGS__, SCM_UNDEFINED)); Music *property_op_to_music (SCM op); SCM context_spec_music (SCM type, SCM id, SCM m, SCM ops, bool create_new); @@ -872,48 +876,30 @@ Repeated_music: REPEAT simple_string bare_unsigned Music Alternative_music { - SCM proc = ly_lily_module_constant ("make-repeat"); - SCM alts = scm_is_pair ($5) ? scm_car ($5) : SCM_EOL; - assert (unsmob_music ($4)); - SCM mus = scm_call_4 (proc, $2, scm_int2num ($3), $4, alts); - Music *r = unsmob_music (mus); - r->set_spot (*unsmob_music($4)->origin ()); - $$ = mus; + $$ = MAKE_SYNTAX ("repeat", @$, $2, $3, $4, $5); } ; Sequential_music: SEQUENTIAL '{' Music_list '}' { - Music *m = MY_MAKE_MUSIC ("SequentialMusic"); - m->set_property ("elements", scm_car ($3)); - m->set_spot (@$); - $$ = m->unprotect (); + $$ = MAKE_SYNTAX ("sequential-music", @$, scm_car ($3)); } | '{' Music_list '}' { - Music *m = MY_MAKE_MUSIC ("SequentialMusic"); - m->set_property ("elements", scm_car ($2)); - m->set_spot (@$); - $$ = m->unprotect (); + $$ = MAKE_SYNTAX ("sequential-music", @$, scm_car ($2)); } ; Simultaneous_music: SIMULTANEOUS '{' Music_list '}'{ - Music *m = MY_MAKE_MUSIC ("SimultaneousMusic"); - m->set_property ("elements", scm_car ($3)); - m->set_spot (@$); - $$ = m->unprotect (); + $$ = MAKE_SYNTAX ("simultaneous-music", @$, scm_car ($3)); } | simul_open Music_list simul_close { - Music *m = MY_MAKE_MUSIC ("SimultaneousMusic"); - m->set_property ("elements", scm_car ($2)); - m->set_spot (@$); - $$ = m->unprotect (); + $$ = MAKE_SYNTAX ("simultaneous-music", @$, scm_car ($2)); } ; Simple_music: - event_chord { $$ = $1; } + event_chord | MUSIC_IDENTIFIER | music_property_def | context_change Index: scm/lily.scm =================================================================== RCS file: /sources/lilypond/lilypond/scm/lily.scm,v retrieving revision 1.397 diff -u -r1.397 lily.scm --- scm/lily.scm 16 May 2006 11:30:55 -0000 1.397 +++ scm/lily.scm 18 May 2006 11:25:17 -0000 @@ -245,6 +245,7 @@ "chord-name.scm" "parser-ly-from-scheme.scm" + "ly-syntax-constructors.scm" "define-context-properties.scm" "translation-functions.scm"