]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/lexer.ll
*** empty log message ***
[lilypond.git] / lily / lexer.ll
index 0a4db9346160b2648accf5d6f10b1026b9c304c3..abd0c101de8293f12f001f706d85ae46eb4f0b52 100644 (file)
@@ -124,6 +124,8 @@ ACCENT              \\[`'"^]
 NATIONAL       [\001-\006\021-\027\031\036\200-\377]
 TEX            {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL}
 WORD           {A}{AN}*
+DASHED_WORD            {A}({AN}|-)*
+DASHED_KEY_WORD                \\{DASHED_WORD}
 ALPHAWORD      {A}+
 DIGIT          {N}
 UNSIGNED       {N}+
@@ -212,7 +214,7 @@ BOM_UTF8    \357\273\277
        LexerError (_ ("quoted string expected after \\version").c_str ());
        yy_pop_state ();
 }
-<sourcefilename>>.     {
+<sourcefilename>     {
        LexerError (_ ("quoted string expected after \\sourcefilename").c_str ());
        yy_pop_state ();
 }
@@ -302,7 +304,7 @@ BOM_UTF8    \357\273\277
        {
                yyinput ();
        }
-       char_count_stack_.top () += n;
+       char_count_stack_.back () += n;
 
        if (unpack_identifier (sval) != SCM_UNDEFINED)
        {
@@ -559,6 +561,14 @@ BOM_UTF8   \357\273\277
                yyterminate ();
 }
 
+<INITIAL>{
+       {DASHED_WORD}   {
+               return scan_bare_word (YYText ());
+       }
+       {DASHED_KEY_WORD}       {
+               return scan_escaped_word (YYText () + 1);
+       }
+}
 
 {WORD} {
        return scan_bare_word (YYText ());
@@ -855,7 +865,7 @@ scan_fraction (std::string frac)
 {
        ssize i = frac.find ('/');
        std::string left = frac.substr (0, i);
-       std::string right = frac.substr (i - 1);
+       std::string right = frac.substr (i + 1, (frac.length () - i + 1));
 
        int n = String_convert::dec2int (left);
        int d = String_convert::dec2int (right);