]> git.donarmstrong.com Git - lilypond.git/commitdiff
* scm/ly-syntax-constructors.scm: New file. Converted a few syntax
authorErik Sandberg <mandolaerik@gmail.com>
Fri, 19 May 2006 06:43:37 +0000 (06:43 +0000)
committerErik Sandberg <mandolaerik@gmail.com>
Fri, 19 May 2006 06:43:37 +0000 (06:43 +0000)
        rules to Scheme.

ChangeLog
lily/parser.yy
scm/lily.scm

index 5079432e9c66f6cc376f5a198d2bf423610d2a2d..0f6d236466dadb1ef11abbd1577675819f7f103f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-18  Erik Sandberg  <mandolaerik@gmail.com>
+       
+       * scm/ly-syntax-constructors.scm: New file. Converted a few syntax
+       rules to Scheme.
+
 2006-05-18  Han-Wen Nienhuys  <hanwen@lilypond.org>
 
        * Documentation/user/changing-defaults.itely (Contexts explained):
index b8c7cd738f8a6da6c5d1433c140703367322bd4f..dddac1cfbe6099fe65f83ea51158c0f92c2733d8 100644 (file)
@@ -111,8 +111,12 @@ using namespace std;
 
 #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);
@@ -864,7 +868,7 @@ Alternative_music:
                $$ = SCM_EOL;
        }
        | ALTERNATIVE '{' Music_list '}' {
-               $$ = $3;
+               $$ = scm_car ($3);
        }
        ;
 
@@ -872,48 +876,30 @@ Alternative_music:
 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, scm_int2num ($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 f0cda6749e63f53e632f927604607a8955e0aef5..292a5a90563cdefd9919fbb49c2fbe877a7cff02 100644 (file)
@@ -245,6 +245,7 @@ The syntax is the same as `define*-public'."
            "chord-name.scm"
 
            "parser-ly-from-scheme.scm"
+           "ly-syntax-constructors.scm"
            
            "define-context-properties.scm"
            "translation-functions.scm"