]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/lexer.ll
* scm/define-music-types.scm (music-descriptions): remove
[lilypond.git] / lily / lexer.ll
index c6be4382d47aae37b479091ebaf0506af7153554..178ea88e97eb9d070e22359aa0458f2487158fab 100644 (file)
@@ -112,6 +112,7 @@ SCM (* scm_parse_error_handler) (void *);
 %x markup
 %x notes
 %x quote
+%x sourcefileline
 %x sourcefilename
 %x version
 
@@ -191,6 +192,9 @@ BOM_UTF8    \357\273\277
 <INITIAL,chords,lyrics,notes,figures>\\sourcefilename{WHITE}*  {
        yy_push_state (sourcefilename);
 }
+<INITIAL,chords,lyrics,notes,figures>\\sourcefileline{WHITE}*  {
+       yy_push_state (sourcefileline);
+}
 <version>\"[^"]*\"     { /* got the version number */
        string s (YYText () + 1);
        s = s.substr (0, s.rfind ('\"'));
@@ -218,6 +222,16 @@ BOM_UTF8   \357\273\277
                     scm_makfrom0str (s.c_str ()));
 
 }
+
+<sourcefileline>{INT}  {
+       int i;
+       sscanf (YYText (), "%d", &i);
+
+//     this->set_debug (1); 
+       yy_pop_state ();
+       this->here_input ().get_source_file ()->set_line (here_input ().start (), i);
+}
+
 <version>.     {
        LexerError (_ ("quoted string expected after \\version").c_str ());
        yy_pop_state ();
@@ -226,6 +240,10 @@ BOM_UTF8   \357\273\277
        LexerError (_ ("quoted string expected after \\sourcefilename").c_str ());
        yy_pop_state ();
 }
+<sourcefileline>.      {
+       LexerError (_ ("integer expected after \\sourcefileline").c_str ());
+       yy_pop_state ();
+}
 <longcomment>{
        [^\%]*          {
        }
@@ -321,7 +339,7 @@ BOM_UTF8    \357\273\277
        }
                
        yylval.scm = sval;
-       return SCM_T;
+       return SCM_TOKEN;
 }
 <INITIAL,notes,lyrics>{ 
        \<\<    {
@@ -533,7 +551,7 @@ BOM_UTF8    \357\273\277
        }
 }
 
-<<EOF>> {
+<*><<EOF>> {
        if (is_main_input_)
        {
                is_main_input_ = false;
@@ -895,7 +913,7 @@ static void init_signature_hash_table ()
        };
 
        for (int i = 0; sigs[i].symbol; i++)
-               scm_hashq_set_x (signature_hash_table, scm_gc_protect_object (ly_symbol2scm (sigs[i].symbol)),
+               scm_hashq_set_x (signature_hash_table, ly_symbol2scm (sigs[i].symbol),
                                 scm_from_int (sigs[i].token_type));
 }