]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/parser.yy
*** empty log message ***
[lilypond.git] / lily / parser.yy
index 195daf46fbd832f3d510a0c8ea8194fd59307c33..4c5413acdd595138a48d1dfe441c97c63ce3f267 100644 (file)
@@ -74,24 +74,25 @@ using namespace std;
 #include "book.hh"
 #include "context-def.hh"
 #include "dimensions.hh"
-#include "music.hh"
 #include "file-path.hh"
 #include "input-smob.hh"
 #include "input.hh"
+#include "international.hh"
 #include "lily-guile.hh"
+#include "lily-lexer.hh"
+#include "lily-parser.hh"
 #include "lilypond-input-version.hh"
 #include "main.hh"
 #include "misc.hh"
-#include "lily-lexer.hh"
-#include "lily-parser.hh"
-#include "paper-book.hh"
+#include "music.hh"
+#include "music.hh"
 #include "output-def.hh"
-#include "scm-hash.hh"
+#include "paper-book.hh"
 #include "program-option.hh"
+#include "scm-hash.hh"
 #include "score.hh"
 #include "text-interface.hh"
 #include "warn.hh"
-#include "music.hh"
 
 %}
 
@@ -100,7 +101,7 @@ using namespace std;
        Book *book;
        Output_def *outputdef;
        SCM scm;
-       String *string;
+       std::string *string;
        Music *music;
        Score *score;
        int i;
@@ -341,6 +342,7 @@ If we give names, Bison complains.
 
 %type <outputdef> output_def_body
 %type <outputdef> output_def_head
+%type <outputdef> output_def_head_with_mode_switch
 %type <outputdef> output_def
 %type <outputdef> paper_block 
 
@@ -530,9 +532,13 @@ assignment:
        assignment_id '=' identifier_init  {
                if (! is_regular_identifier ($1))
                {
+#if 0
+                       /* no longer valid with dashes in \paper{} block. */ 
                        @1.warning (_ ("identifier should have alphabetic characters only"));
+#endif
                }
 
+
                THIS->lexer_->set_identifier ($1, $3);
 
 /*
@@ -703,7 +709,7 @@ score_body:
                }
                else
                {
-                       $$->defs_.push ($2);
+                       $$->add_output_def ($2);
                }
                $2->unprotect ();
        }
@@ -757,21 +763,25 @@ output_def_head:
        }
        ;
 
+output_def_head_with_mode_switch:
+       output_def_head {
+               THIS->lexer_->push_initial_state ();
+               $$ = $1;
+       }
+       ;
 
 output_def_body:
-       output_def_head '{' {
+       output_def_head_with_mode_switch '{' {
                $$ = $1;
                $$->input_origin_.set_spot (@$);
-               THIS->lexer_->push_initial_state ();
        }
-       | output_def_head '{' OUTPUT_DEF_IDENTIFIER     {
+       | output_def_head_with_mode_switch '{' OUTPUT_DEF_IDENTIFIER    {
                $1->unprotect ();
                Output_def *o = unsmob_output_def ($3);
                o->input_origin_.set_spot (@$);
                $$ = o;
                THIS->lexer_->remove_scope ();
                THIS->lexer_->add_scope (o->scope_);
-               THIS->lexer_->push_initial_state ();
        }
        | output_def_body assignment  {
 
@@ -2742,8 +2752,8 @@ run_music_function (Lily_parser *parser, SCM expr)
 bool
 is_regular_identifier (SCM id)
 {
-  String str = ly_scm2string (id);
-  char const *s = str.to_str0 ();
+  std::string str = ly_scm2string (id);
+  char const *s = str.c_str ();
 
   bool v = true;
 #if 0