]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/lexer.ll
remove ly_scm2str0.
[lilypond.git] / lily / lexer.ll
index fa31de9c419a0d062a89d1f1c08b7738bb69bac6..6ec3cf94b99a39353be4963c009ed7248336b30d 100644 (file)
 
 #include <iostream>
 using namespace std;
-#include "music-head.hh"
+#include "music-function.hh"
 #include "source-file.hh"
 #include "parse-scm.hh"
 #include "lily-guile.hh"
 #include "string.hh"
 #include "string-convert.hh"
-#include "my-lily-lexer.hh"
+#include "lily-lexer.hh"
 #include "interval.hh"
 #include "lily-guile.hh"
 #include "parser.hh"
@@ -57,7 +57,7 @@ RH 7 fix (?)
 void strip_trailing_white (String&);
 void strip_leading_white (String&);
 String lyric_fudge (String s);
-int music_head_type (SCM);
+int music_function_type (SCM);
 SCM lookup_markup_command (String s);
 bool is_valid_version (String s);
 
@@ -92,7 +92,7 @@ SCM (* scm_parse_error_handler) (void *);
 %option noyywrap
 %option nodefault
 %option debug
-%option yyclass="My_lily_lexer"
+%option yyclass="Lily_lexer"
 %option stack
 %option never-interactive 
 %option warn
@@ -233,8 +233,6 @@ HYPHEN              --
        {
                start_main_input ();
                main_input_b_ = true;
-               SCM nn = lookup_identifier ("pitchnames");
-               push_note_state (alist_to_hashq (nn));
        }
        else
                error (_ ("\\maininput not allowed outside init files"));
@@ -494,6 +492,9 @@ HYPHEN              --
        \> {
                return '>';
        }
+       \\score {
+               return SCORE;
+       }
        {MARKUPCOMMAND} {
                String str (YYText () + 1);
                SCM s = lookup_markup_command (str);
@@ -634,45 +635,45 @@ HYPHEN            --
 %%
 
 void
-My_lily_lexer::push_chord_state (SCM tab)
+Lily_lexer::push_chord_state (SCM tab)
 {
        pitchname_tab_stack_ = scm_cons (tab, pitchname_tab_stack_);
        yy_push_state (chords);
 }
 
 void
-My_lily_lexer::push_figuredbass_state ()
+Lily_lexer::push_figuredbass_state ()
 {
        yy_push_state (figures);
 }
 
 void
-My_lily_lexer::push_initial_state ()
+Lily_lexer::push_initial_state ()
 {
        yy_push_state (INITIAL);
 }
 
 void
-My_lily_lexer::push_lyric_state ()
+Lily_lexer::push_lyric_state ()
 {
        yy_push_state (lyrics);
 }
 
 void
-My_lily_lexer::push_markup_state ()
+Lily_lexer::push_markup_state ()
 {
        yy_push_state (markup);
 }
 
 void
-My_lily_lexer::push_note_state (SCM tab)
+Lily_lexer::push_note_state (SCM tab)
 {
        pitchname_tab_stack_ = scm_cons (tab, pitchname_tab_stack_);
        yy_push_state (notes);
 }
 
 void
-My_lily_lexer::pop_state ()
+Lily_lexer::pop_state ()
 {
        if (YYSTATE == notes || YYSTATE == chords)
                pitchname_tab_stack_ = ly_cdr (pitchname_tab_stack_);
@@ -680,7 +681,7 @@ My_lily_lexer::pop_state ()
 }
 
 int
-My_lily_lexer::identifier_type (SCM sid)
+Lily_lexer::identifier_type (SCM sid)
 {
        int k = try_special_identifiers (&yylval.scm , sid);
        return k >= 0  ? k : SCM_IDENTIFIER;
@@ -688,7 +689,7 @@ My_lily_lexer::identifier_type (SCM sid)
 
 
 int
-My_lily_lexer::scan_escaped_word (String str)
+Lily_lexer::scan_escaped_word (String str)
 {
        // use more SCM for this.
 
@@ -699,10 +700,11 @@ My_lily_lexer::scan_escaped_word (String str)
                return l;
        }
        SCM sid = lookup_identifier (str);
-       if (is_music_head (sid))
+       if (is_music_function (sid))
        {
-               yylval.scm = get_music_head_transform (sid); 
-               return music_head_type (yylval.scm);
+               yylval.scm = get_music_function_transform (sid);
+               
+               return music_function_type (yylval.scm);
        }
 
        if (sid != SCM_UNDEFINED)
@@ -720,7 +722,7 @@ My_lily_lexer::scan_escaped_word (String str)
 }
 
 int
-My_lily_lexer::scan_bare_word (String str)
+Lily_lexer::scan_bare_word (String str)
 {
        SCM sym = ly_symbol2scm (str.to_str0 ());
        if ((YYSTATE == notes) || (YYSTATE == chords)) {
@@ -747,25 +749,25 @@ My_lily_lexer::scan_bare_word (String str)
 }
 
 bool
-My_lily_lexer::is_note_state () const
+Lily_lexer::is_note_state () const
 {
        return YY_START == notes;
 }
 
 bool
-My_lily_lexer::is_chord_state () const
+Lily_lexer::is_chord_state () const
 {
        return YY_START == chords;
 }
 
 bool
-My_lily_lexer::is_lyric_state () const
+Lily_lexer::is_lyric_state () const
 {
        return YY_START == lyrics;
 }
 
 bool
-My_lily_lexer::is_figure_state () const
+Lily_lexer::is_figure_state () const
 {
        return YY_START == figures;
 }
@@ -889,31 +891,46 @@ lookup_markup_command (String s)
 
 
 int
-music_head_type (SCM func)
+music_function_type (SCM func)
 {
-       SCM type= scm_object_property (func, ly_symbol2scm ("music-head-signature"));
+       SCM type= scm_object_property (func, ly_symbol2scm ("music-function-signature-keyword"));
        if (type == ly_symbol2scm ("scm"))
        {
-               return MUSIC_HEAD_SCM;
+               return MUSIC_FUNCTION_SCM;
        }
        else if (type == ly_symbol2scm ("music"))
        {
-               return MUSIC_HEAD_MUSIC;
+               return MUSIC_FUNCTION_MUSIC;
        }
        else if (type == ly_symbol2scm ("scm-music"))
        {
-               return MUSIC_HEAD_SCM_MUSIC;
+               return MUSIC_FUNCTION_SCM_MUSIC;
+       }
+       else if (type == ly_symbol2scm ("scm-scm"))
+       {
+               return MUSIC_FUNCTION_SCM_SCM;
+       }
+       else if (type == ly_symbol2scm ("music-music"))
+       {
+               return MUSIC_FUNCTION_MUSIC_MUSIC;
        }
        else if (type == ly_symbol2scm ("scm-music-music"))
        {
-               return MUSIC_HEAD_SCM_MUSIC_MUSIC;
+               return MUSIC_FUNCTION_SCM_MUSIC_MUSIC;
        }
        else if (type == ly_symbol2scm ("scm-scm-music"))
        {
-               return MUSIC_HEAD_SCM_SCM_MUSIC;
+               return MUSIC_FUNCTION_SCM_SCM_MUSIC;
+       }
+       else if (type == ly_symbol2scm ("noarg"))
+       {
+               return MUSIC_FUNCTION;
        }
        else
-               assert (false);
+               {
+               /* TODO: print location */
+               error ("Can not find signature for music function.");
+               }
 
-       return MUSIC_HEAD_SCM_MUSIC_MUSIC;
+       return MUSIC_FUNCTION_SCM;
 }