{-# LANGUAGE OverloadedStrings #-}
module Skylighting.Syntax.Lilypond (syntax) where

import Skylighting.Types
import Data.Map
import Skylighting.Regex
import qualified Data.Set

syntax :: Syntax
syntax = Syntax
  { sName = "LilyPond"
  , sFilename = "lilypond.xml"
  , sShortname = "Lilypond"
  , sContexts =
      fromList
        [ ( "assignment"
          , Context
              { cName = "assignment"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\b(dash(Hat|Plus|Dash|Bar|Larger|Dot|Underscore)|fermataMarkup|pipeSymbol|slashSeparator)\\b"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\b(dash(Hat|Plus|Dash|Bar|Larger|Dot|Underscore)|fermataMarkup|pipeSymbol|slashSeparator)\\b")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[a-z]+"
                              , reCompiled = Just (compileRegex False "[a-z]+")
                              , reCaseSensitive = False
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = [ Pop ]
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "basic"
          , Context
              { cName = "basic"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = Detect2Chars '%' '{'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "commentblock" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '%'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "commentline" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '"'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "string" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '#'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "scheme" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '$'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "schemesub" ) ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "chord"
          , Context
              { cName = "chord"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '>'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "chordend" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z]))"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z]))")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "chordpitch" ) ]
                      }
                  , Rule
                      { rMatcher = AnyChar "<{}srR"
                      , rAttribute = ErrorTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "music" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "chordend"
          , Context
              { cName = "chordend"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "(\\\\(longa|breve)\\b|(1|2|4|8|16|32|64|128|256|512|1024|2048)(?!\\d))(\\s*\\.+)?(\\s*\\*\\s*\\d+(/\\d+)?)*"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "(\\\\(longa|breve)\\b|(1|2|4|8|16|32|64|128|256|512|1024|2048)(?!\\d))(\\s*\\.+)?(\\s*\\*\\s*\\d+(/\\d+)?)*")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop ]
                      }
                  ]
              , cAttribute = DataTypeTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop , Pop ]
              , cDynamic = False
              }
          )
        , ( "chordmode"
          , Context
              { cName = "chordmode"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "chordmode2" ) ]
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = KeywordTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "chordmode2"
          , Context
              { cName = "chordmode2"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "chordrules" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "chordpitch"
          , Context
              { cName = "chordpitch"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "=\\s*('+|,+)?"
                              , reCompiled = Just (compileRegex True "=\\s*('+|,+)?")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DecValTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "(\\\\(longa|breve)\\b|(1|2|4|8|16|32|64|128|256|512|1024|2048)(?!\\d))(\\s*\\.+)?(\\s*\\*\\s*\\d+(/\\d+)?)*"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "(\\\\(longa|breve)\\b|(1|2|4|8|16|32|64|128|256|512|1024|2048)(?!\\d))(\\s*\\.+)?(\\s*\\*\\s*\\d+(/\\d+)?)*")
                              , reCaseSensitive = True
                              }
                      , rAttribute = ErrorTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\d+"
                              , reCompiled = Just (compileRegex True "\\d+")
                              , reCaseSensitive = True
                              }
                      , rAttribute = ErrorTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "chordrules"
          , Context
              { cName = "chordrules"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "chordrules" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  ":?([\\.^]?\\d+[-+]?|(m|dim|aug|maj|sus)(?![A-Za-z]))*(/\\+?\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z])))?"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       ":?([\\.^]?\\d+[-+]?|(m|dim|aug|maj|sus)(?![A-Za-z]))*(/\\+?\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z])))?")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "music" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "command"
          , Context
              { cName = "command"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = Detect2Chars '\\' '\\'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\note(mode|s)(?![A-Za-z])"
                              , reCompiled =
                                  Just (compileRegex True "\\\\note(mode|s)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "notemode" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\drum(mode|s)(?![A-Za-z])"
                              , reCompiled =
                                  Just (compileRegex True "\\\\drum(mode|s)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "drummode" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\chord(mode|s)(?![A-Za-z])"
                              , reCompiled =
                                  Just (compileRegex True "\\\\chord(mode|s)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "chordmode" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\figure(mode|s)(?![A-Za-z])"
                              , reCompiled =
                                  Just (compileRegex True "\\\\figure(mode|s)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "figuremode" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\(lyric(mode|s)|addlyrics)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex True "\\\\(lyric(mode|s)|addlyrics)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "lyricmode" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\lyricsto(?![A-Za-z])"
                              , reCompiled = Just (compileRegex True "\\\\lyricsto(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "lyricsto" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\markup(lines)?(?![A-Za-z])"
                              , reCompiled =
                                  Just (compileRegex True "\\\\markup(lines)?(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = BaseNTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "markup" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\(header|paper|layout|midi|with)\\b"
                              , reCompiled =
                                  Just (compileRegex True "\\\\(header|paper|layout|midi|with)\\b")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "section" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\(new|context|change)\\b"
                              , reCompiled =
                                  Just (compileRegex True "\\\\(new|context|change)\\b")
                              , reCaseSensitive = True
                              }
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "context" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\(un)?set\\b"
                              , reCompiled = Just (compileRegex True "\\\\(un)?set\\b")
                              , reCaseSensitive = True
                              }
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "set" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\(override(Property)?|revert)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True "\\\\(override(Property)?|revert)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "override" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\skip(?![A-Za-z])"
                              , reCompiled = Just (compileRegex True "\\\\skip(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "duration" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\tempo(?![A-Za-z])"
                              , reCompiled = Just (compileRegex True "\\\\tempo(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "tempo" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(accepts|alias|consists|defaultchild|denies|description|grobdescriptions|include|invalid|language|name|objectid|once|remove|sequential|simultaneous|type|version|score|book|bookpart)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(accepts|alias|consists|defaultchild|denies|description|grobdescriptions|include|invalid|language|name|objectid|once|remove|sequential|simultaneous|type|version|score|book|bookpart)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\((aiken|funk|sacredHarp|southernHarmony|walker)Heads(Minor)?)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\((aiken|funk|sacredHarp|southernHarmony|walker)Heads(Minor)?)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(acciaccatura|addQuote|afterGrace|allowPageTurn|alternative|apply(Context|Music|Output)|appoggiatura|arpeggio(Arrow(Down|Up)|Bracket|Normal|Parenthesis)?|(a|de)scendens|auctum|augmentum|autoBeamO(ff|n)|autochange|balloon(Grob)?Text|bar|barNumberCheck|bendAfter|breathe|break|cadenzaO(ff|n)|cavum|clef(\\s+(treble|violin|G|alto|C|tenor|(sub)?bass|F|french|(mezzo)?soprano|(var)?baritone|percussion|tab))?|(end)?(de)?cr|cresc(TextCresc|Hairpin))(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(acciaccatura|addQuote|afterGrace|allowPageTurn|alternative|apply(Context|Music|Output)|appoggiatura|arpeggio(Arrow(Down|Up)|Bracket|Normal|Parenthesis)?|(a|de)scendens|auctum|augmentum|autoBeamO(ff|n)|autochange|balloon(Grob)?Text|bar|barNumberCheck|bendAfter|breathe|break|cadenzaO(ff|n)|cavum|clef(\\s+(treble|violin|G|alto|C|tenor|(sub)?bass|F|french|(mezzo)?soprano|(var)?baritone|percussion|tab))?|(end)?(de)?cr|cresc(TextCresc|Hairpin))(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\((cue|transposedCue)During|default|deminutum|dim(Text(Decresc|Decr|Dim)|Hairpin)|display(Lily)?Music|divisio(Maior|Maxima|Minima)|(dynamic|dots|phrasingSlur|slur|stem|tie|tuplet)(Down|Neutral|Up)|(balloon|text)LengthO(ff|n)|featherDurations|figure(mode|s)|finalis|flexa|(french|german|italian|semiGerman)Chords|glissando|grace|harmonic|(unH|h)ideNotes|(hide|show)StaffSwitch|inclinatum|(keep|remove)WithTag|key(\\s+\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z])))?|killCues)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\((cue|transposedCue)During|default|deminutum|dim(Text(Decresc|Decr|Dim)|Hairpin)|display(Lily)?Music|divisio(Maior|Maxima|Minima)|(dynamic|dots|phrasingSlur|slur|stem|tie|tuplet)(Down|Neutral|Up)|(balloon|text)LengthO(ff|n)|featherDurations|figure(mode|s)|finalis|flexa|(french|german|italian|semiGerman)Chords|glissando|grace|harmonic|(unH|h)ideNotes|(hide|show)StaffSwitch|inclinatum|(keep|remove)WithTag|key(\\s+\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z])))?|killCues)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(label|laissezVibrer|linea|makeClusters|mark|maxima|melisma(End)?|mergeDifferently(Head|Dott)edO(ff|n)|newSpacingSection|no(Beam|Break|PageBreak|PageTurn)|normalsize|numericTimeSignature|octaveCheck|oneVoice|oriscus|ottava|page(-ref|Break|Turn)|parallelMusic|parenthesize|partcombine|partial(\\s*(\\\\(longa|breve)\\b|(1|2|4|8|16|32|64|128|256|512|1024|2048)(?!\\d))(\\s*\\.+)?(\\s*\\*\\s*\\d+(/\\d+)?)*)?|pes|pitchedTrill)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(label|laissezVibrer|linea|makeClusters|mark|maxima|melisma(End)?|mergeDifferently(Head|Dott)edO(ff|n)|newSpacingSection|no(Beam|Break|PageBreak|PageTurn)|normalsize|numericTimeSignature|octaveCheck|oneVoice|oriscus|ottava|page(-ref|Break|Turn)|parallelMusic|parenthesize|partcombine|partial(\\s*(\\\\(longa|breve)\\b|(1|2|4|8|16|32|64|128|256|512|1024|2048)(?!\\d))(\\s*\\.+)?(\\s*\\*\\s*\\d+(/\\d+)?)*)?|pes|pitchedTrill)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(pointAndClickO(ff|n)|quilisma|quoteDuring|relative(\\s+\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z])))?|RemoveEmptyStaffContext|repeat(\\s+(unfold|volta|tremolo|percent)(\\s+\\d+)?)?|repeatTie|resetRelativeOctave|rest|scaleDurations|scoreTweak|easyHeadsO(ff|n)|shift(Durations|Off|On{1,3})|(slur|tie)(Both|Dashed|Dotted|Solid)|small|spacingTweaks)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(pointAndClickO(ff|n)|quilisma|quoteDuring|relative(\\s+\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z])))?|RemoveEmptyStaffContext|repeat(\\s+(unfold|volta|tremolo|percent)(\\s+\\d+)?)?|repeatTie|resetRelativeOctave|rest|scaleDurations|scoreTweak|easyHeadsO(ff|n)|shift(Durations|Off|On{1,3})|(slur|tie)(Both|Dashed|Dotted|Solid)|small|spacingTweaks)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\((start|stop)(Group|(Text|Trill)Span|Staff)|stemBoth|stropha|super|(sustain|sostenuto)O(ff|n)|table-of-contents|tag|times?(\\s*\\d+/\\d+)?|tiny|tocItem)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\((start|stop)(Group|(Text|Trill)Span|Staff)|stemBoth|stropha|super|(sustain|sostenuto)O(ff|n)|table-of-contents|tag|times?(\\s*\\d+/\\d+)?|tiny|tocItem)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(transpose(\\s+\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z]))\\s*\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z])))?|transposition(\\s+\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z]))))(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(transpose(\\s+\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z]))\\s*\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z])))?|transposition(\\s+\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z]))))(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(tweak|unfoldRepeats|virg(ul)?a|voice(One|Two|Three|Four)|withMusicProperty|cm|mm|in|pt|major|minor|ionian|locrian|aeolian|mixolydian|lydian|phrygian|dorian)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(tweak|unfoldRepeats|virg(ul)?a|voice(One|Two|Three|Four)|withMusicProperty|cm|mm|in|pt|major|minor|ionian|locrian|aeolian|mixolydian|lydian|phrygian|dorian)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(dash(Hat|Plus|Dash|Bar|Larger|Dot|Underscore)|fermataMarkup|pipeSymbol|slashSeparator)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(dash(Hat|Plus|Dash|Bar|Larger|Dot|Underscore)|fermataMarkup|pipeSymbol|slashSeparator)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\(consistsend)(?![A-Za-z])"
                              , reCompiled =
                                  Just (compileRegex True "\\\\(consistsend)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(arpeggio(Up|Down|Neutral)|newpage|script(Up|Down|Both)|(empty|fat)Text|setEasyHeads|(default|voice|modernVoice|piano|forget)Accidentals|(modern(Voice)?|piano)Cautionaries|noResetKey|compressMusic|octave|(sustain|sostenuto)(Down|Up)|set(Hairpin|Text)(Cresc|Decresc|Dim)|setTextDecr)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(arpeggio(Up|Down|Neutral)|newpage|script(Up|Down|Both)|(empty|fat)Text|setEasyHeads|(default|voice|modernVoice|piano|forget)Accidentals|(modern(Voice)?|piano)Cautionaries|noResetKey|compressMusic|octave|(sustain|sostenuto)(Down|Up)|set(Hairpin|Text)(Cresc|Decresc|Dim)|setTextDecr)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\(translator|newcontext)\\b"
                              , reCompiled =
                                  Just (compileRegex True "\\\\(translator|newcontext)\\b")
                              , reCaseSensitive = True
                              }
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "context" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\property(?![A-Za-z])"
                              , reCompiled = Just (compileRegex True "\\\\property(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "override" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\[A-Za-z]+"
                              , reCompiled = Just (compileRegex True "\\\\[A-Za-z]+")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '\\'
                      , rAttribute = ErrorTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = [ Pop ]
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "commentblock"
          , Context
              { cName = "commentblock"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = Detect2Chars '%' '}'
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "Alerts" , "" )
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = CommentTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "commentline"
          , Context
              { cName = "commentline"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = IncludeRules ( "Alerts" , "" )
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = CommentTok
              , cLineEmptyContext = []
              , cLineEndContext = [ Pop ]
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "connect"
          , Context
              { cName = "connect"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = AnyChar ".-+|>^_12345"
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = StringTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "context"
          , Context
              { cName = "context"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "ChoirStaff"
                               , "ChordNames"
                               , "CueVoice"
                               , "Devnull"
                               , "DrumStaff"
                               , "DrumVoice"
                               , "Dynamics"
                               , "FiguredBass"
                               , "FretBoards"
                               , "Global"
                               , "GrandStaff"
                               , "GregorianTranscriptionStaff"
                               , "GregorianTranscriptionVoice"
                               , "Lyrics"
                               , "MensuralStaff"
                               , "MensuralVoice"
                               , "NoteNames"
                               , "PianoStaff"
                               , "RhythmicStaff"
                               , "Score"
                               , "Staff"
                               , "StaffGroup"
                               , "TabStaff"
                               , "TabVoice"
                               , "Timing"
                               , "VaticanaStaff"
                               , "VaticanaVoice"
                               , "Voice"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "context2" ) ]
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet True [ "InnerChoirStaff" , "InnerStaffGroup" ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "context2" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[A-Za-z]+"
                              , reCompiled = Just (compileRegex True "[A-Za-z]+")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "context2" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "section2" ) ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "context2"
          , Context
              { cName = "context2"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "=(\\s*[A-Za-z]+)?"
                              , reCompiled = Just (compileRegex True "=(\\s*[A-Za-z]+)?")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop , Pop ]
              , cDynamic = False
              }
          )
        , ( "default"
          , Context
              { cName = "default"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = Detect2Chars '<' '<'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = Detect2Chars '>' '>'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '|'
                      , rAttribute = DecValTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '\\'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = True
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "command" ) ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "basic" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "drumchord"
          , Context
              { cName = "drumchord"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "acousticbassdrum"
                               , "acousticsnare"
                               , "agh"
                               , "agl"
                               , "bassdrum"
                               , "bd"
                               , "bda"
                               , "boh"
                               , "bohm"
                               , "boho"
                               , "bol"
                               , "bolm"
                               , "bolo"
                               , "cab"
                               , "cabasa"
                               , "cb"
                               , "cgh"
                               , "cghm"
                               , "cgho"
                               , "cgl"
                               , "cglm"
                               , "cglo"
                               , "chinesecymbal"
                               , "cl"
                               , "claves"
                               , "closedhihat"
                               , "cowbell"
                               , "crashcymbal"
                               , "crashcymbala"
                               , "crashcymbalb"
                               , "cuim"
                               , "cuio"
                               , "cymc"
                               , "cymca"
                               , "cymcb"
                               , "cymch"
                               , "cymr"
                               , "cymra"
                               , "cymrb"
                               , "cyms"
                               , "da"
                               , "db"
                               , "dc"
                               , "dd"
                               , "de"
                               , "electricsnare"
                               , "fivedown"
                               , "fiveup"
                               , "fourdown"
                               , "fourup"
                               , "gui"
                               , "guil"
                               , "guiro"
                               , "guis"
                               , "halfopenhihat"
                               , "handclap"
                               , "hc"
                               , "hh"
                               , "hhc"
                               , "hhho"
                               , "hho"
                               , "hhp"
                               , "hiagogo"
                               , "hibongo"
                               , "hiconga"
                               , "highfloortom"
                               , "hightom"
                               , "hihat"
                               , "himidtom"
                               , "hisidestick"
                               , "hitimbale"
                               , "hiwoodblock"
                               , "loagogo"
                               , "lobongo"
                               , "loconga"
                               , "longguiro"
                               , "longwhistle"
                               , "losidestick"
                               , "lotimbale"
                               , "lowfloortom"
                               , "lowmidtom"
                               , "lowoodblock"
                               , "lowtom"
                               , "mar"
                               , "maracas"
                               , "mutecuica"
                               , "mutehibongo"
                               , "mutehiconga"
                               , "mutelobongo"
                               , "muteloconga"
                               , "mutetriangle"
                               , "onedown"
                               , "oneup"
                               , "opencuica"
                               , "openhibongo"
                               , "openhiconga"
                               , "openhihat"
                               , "openlobongo"
                               , "openloconga"
                               , "opentriangle"
                               , "pedalhihat"
                               , "rb"
                               , "ridebell"
                               , "ridecymbal"
                               , "ridecymbala"
                               , "ridecymbalb"
                               , "shortguiro"
                               , "shortwhistle"
                               , "sidestick"
                               , "sn"
                               , "sna"
                               , "snare"
                               , "sne"
                               , "splashcymbal"
                               , "ss"
                               , "ssh"
                               , "ssl"
                               , "tamb"
                               , "tambourine"
                               , "tamtam"
                               , "threedown"
                               , "threeup"
                               , "timh"
                               , "timl"
                               , "tomfh"
                               , "tomfl"
                               , "tomh"
                               , "toml"
                               , "tommh"
                               , "tomml"
                               , "tri"
                               , "triangle"
                               , "trim"
                               , "trio"
                               , "tt"
                               , "twodown"
                               , "twoup"
                               , "ua"
                               , "ub"
                               , "uc"
                               , "ud"
                               , "ue"
                               , "vibraslap"
                               , "vibs"
                               , "wbh"
                               , "wbl"
                               , "whl"
                               , "whs"
                               ])
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "chord" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "drummode"
          , Context
              { cName = "drummode"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "drummode2" ) ]
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = KeywordTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "drummode2"
          , Context
              { cName = "drummode2"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "drumrules" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "drumrules"
          , Context
              { cName = "drumrules"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "drumrules" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "<(?!<)"
                              , reCompiled = Just (compileRegex True "<(?!<)")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "drumchord" ) ]
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "acousticbassdrum"
                               , "acousticsnare"
                               , "agh"
                               , "agl"
                               , "bassdrum"
                               , "bd"
                               , "bda"
                               , "boh"
                               , "bohm"
                               , "boho"
                               , "bol"
                               , "bolm"
                               , "bolo"
                               , "cab"
                               , "cabasa"
                               , "cb"
                               , "cgh"
                               , "cghm"
                               , "cgho"
                               , "cgl"
                               , "cglm"
                               , "cglo"
                               , "chinesecymbal"
                               , "cl"
                               , "claves"
                               , "closedhihat"
                               , "cowbell"
                               , "crashcymbal"
                               , "crashcymbala"
                               , "crashcymbalb"
                               , "cuim"
                               , "cuio"
                               , "cymc"
                               , "cymca"
                               , "cymcb"
                               , "cymch"
                               , "cymr"
                               , "cymra"
                               , "cymrb"
                               , "cyms"
                               , "da"
                               , "db"
                               , "dc"
                               , "dd"
                               , "de"
                               , "electricsnare"
                               , "fivedown"
                               , "fiveup"
                               , "fourdown"
                               , "fourup"
                               , "gui"
                               , "guil"
                               , "guiro"
                               , "guis"
                               , "halfopenhihat"
                               , "handclap"
                               , "hc"
                               , "hh"
                               , "hhc"
                               , "hhho"
                               , "hho"
                               , "hhp"
                               , "hiagogo"
                               , "hibongo"
                               , "hiconga"
                               , "highfloortom"
                               , "hightom"
                               , "hihat"
                               , "himidtom"
                               , "hisidestick"
                               , "hitimbale"
                               , "hiwoodblock"
                               , "loagogo"
                               , "lobongo"
                               , "loconga"
                               , "longguiro"
                               , "longwhistle"
                               , "losidestick"
                               , "lotimbale"
                               , "lowfloortom"
                               , "lowmidtom"
                               , "lowoodblock"
                               , "lowtom"
                               , "mar"
                               , "maracas"
                               , "mutecuica"
                               , "mutehibongo"
                               , "mutehiconga"
                               , "mutelobongo"
                               , "muteloconga"
                               , "mutetriangle"
                               , "onedown"
                               , "oneup"
                               , "opencuica"
                               , "openhibongo"
                               , "openhiconga"
                               , "openhihat"
                               , "openlobongo"
                               , "openloconga"
                               , "opentriangle"
                               , "pedalhihat"
                               , "rb"
                               , "ridebell"
                               , "ridecymbal"
                               , "ridecymbala"
                               , "ridecymbalb"
                               , "shortguiro"
                               , "shortwhistle"
                               , "sidestick"
                               , "sn"
                               , "sna"
                               , "snare"
                               , "sne"
                               , "splashcymbal"
                               , "ss"
                               , "ssh"
                               , "ssl"
                               , "tamb"
                               , "tambourine"
                               , "tamtam"
                               , "threedown"
                               , "threeup"
                               , "timh"
                               , "timl"
                               , "tomfh"
                               , "tomfl"
                               , "tomh"
                               , "toml"
                               , "tommh"
                               , "tomml"
                               , "tri"
                               , "triangle"
                               , "trim"
                               , "trio"
                               , "tt"
                               , "twodown"
                               , "twoup"
                               , "ua"
                               , "ub"
                               , "uc"
                               , "ud"
                               , "ue"
                               , "vibraslap"
                               , "vibs"
                               , "wbh"
                               , "wbl"
                               , "whl"
                               , "whs"
                               ])
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "duration" ) ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "music" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "duration"
          , Context
              { cName = "duration"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "(\\\\(longa|breve)\\b|(1|2|4|8|16|32|64|128|256|512|1024|2048)(?!\\d))(\\s*\\.+)?(\\s*\\*\\s*\\d+(/\\d+)?)*"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "(\\\\(longa|breve)\\b|(1|2|4|8|16|32|64|128|256|512|1024|2048)(?!\\d))(\\s*\\.+)?(\\s*\\*\\s*\\d+(/\\d+)?)*")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\d+"
                              , reCompiled = Just (compileRegex True "\\d+")
                              , reCaseSensitive = True
                              }
                      , rAttribute = ErrorTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "figure"
          , Context
              { cName = "figure"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '>'
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "chordend" ) ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "basic" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\markup(lines)?(?![A-Za-z])"
                              , reCompiled =
                                  Just (compileRegex True "\\\\markup(lines)?(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = BaseNTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "markup" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\skip(?![A-Za-z])"
                              , reCompiled = Just (compileRegex True "\\\\skip(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "duration" ) ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "figuremode"
          , Context
              { cName = "figuremode"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "figuremode2" ) ]
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = KeywordTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "figuremode2"
          , Context
              { cName = "figuremode2"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "figurerules" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "figurerules"
          , Context
              { cName = "figurerules"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "figurerules" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = DetectChar '<'
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "figure" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\b[srR](?![A-Za-z])"
                              , reCompiled = Just (compileRegex True "\\b[srR](?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "duration" ) ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "default" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "lilypond"
          , Context
              { cName = "lilypond"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "music" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\b[a-z]+\\s*="
                              , reCompiled = Just (compileRegex False "\\b[a-z]+\\s*=")
                              , reCaseSensitive = False
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = True
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "assignment" ) ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "lyricmode"
          , Context
              { cName = "lyricmode"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "lyricmode2" ) ]
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = KeywordTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "lyricmode2"
          , Context
              { cName = "lyricmode2"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "lyricrules" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "lyricrules"
          , Context
              { cName = "lyricrules"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "lyricrules" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "(\\w+-{2,}|\\w+_{2,}|-{2,}\\w+|_{2,}\\w+)"
                              , reCompiled =
                                  Just
                                    (compileRegex True "(\\w+-{2,}|\\w+_{2,}|-{2,}\\w+|_{2,}\\w+)")
                              , reCaseSensitive = True
                              }
                      , rAttribute = ErrorTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "(\\\\(longa|breve)\\b|(1|2|4|8|16|32|64|128|256|512|1024|2048)(?!\\d))(\\s*\\.+)?(\\s*\\*\\s*\\d+(/\\d+)?)*"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "(\\\\(longa|breve)\\b|(1|2|4|8|16|32|64|128|256|512|1024|2048)(?!\\d))(\\s*\\.+)?(\\s*\\*\\s*\\d+(/\\d+)?)*")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "(--|__|_)"
                              , reCompiled = Just (compileRegex True "(--|__|_)")
                              , reCaseSensitive = True
                              }
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "default" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\S+\\}"
                              , reCompiled = Just (compileRegex True "\\S+\\}")
                              , reCaseSensitive = True
                              }
                      , rAttribute = ErrorTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "lyricsto"
          , Context
              { cName = "lyricsto"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\"(\\\\[\"\\\\]|[^\"\\\\])+\""
                              , reCompiled =
                                  Just (compileRegex True "\"(\\\\[\"\\\\]|[^\"\\\\])+\"")
                              , reCaseSensitive = True
                              }
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "lyricsto2" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[A-Za-z]+"
                              , reCompiled = Just (compileRegex True "[A-Za-z]+")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "lyricsto2" ) ]
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = KeywordTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "lyricsto2"
          , Context
              { cName = "lyricsto2"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "lyricsto3" ) ]
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop , Pop ]
              , cDynamic = False
              }
          )
        , ( "lyricsto3"
          , Context
              { cName = "lyricsto3"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop , Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "lyricrules" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "markup"
          , Context
              { cName = "markup"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "markup2" ) ]
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\score\\b"
                              , reCompiled = Just (compileRegex True "\\\\score\\b")
                              , reCaseSensitive = True
                              }
                      , rAttribute = BaseNTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "notemode" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(markup|bold|(rounded-)?box|bracket|caps|(center|general|left|right)-align|circle|((center|dir|left|right)-)?column|combine|concat|dynamic|fill-line|finger|fontCaps|(abs-)?fontsize|fraction|halign|hbracket|hcenter-in|hcenter|hspace|huge|italic|justify|larger?|line|lower|magnify|medium|normal-size-(sub|super)|normal-text|normalsize|number|on-the-fly|override|pad-(around|markup|to-box|x)|page-ref|postscript|put-adjacent|raise|roman|rotate|sans|small(er)?|smallCaps|sub|super|teeny|text|tiny|translate(-scaled)?|transparent|typewriter|underline|upright|vcenter|whiteout|with-(color|dimensions|url)|wordwrap|(markup|column-|justified-|override-|wordwrap-)lines|wordwrap-(string-)?internal)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(markup|bold|(rounded-)?box|bracket|caps|(center|general|left|right)-align|circle|((center|dir|left|right)-)?column|combine|concat|dynamic|fill-line|finger|fontCaps|(abs-)?fontsize|fraction|halign|hbracket|hcenter-in|hcenter|hspace|huge|italic|justify|larger?|line|lower|magnify|medium|normal-size-(sub|super)|normal-text|normalsize|number|on-the-fly|override|pad-(around|markup|to-box|x)|page-ref|postscript|put-adjacent|raise|roman|rotate|sans|small(er)?|smallCaps|sub|super|teeny|text|tiny|translate(-scaled)?|transparent|typewriter|underline|upright|vcenter|whiteout|with-(color|dimensions|url)|wordwrap|(markup|column-|justified-|override-|wordwrap-)lines|wordwrap-(string-)?internal)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = BaseNTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(arrow-head|beam|char|(semi|sesqui|double)?(flat|sharp)|draw-(circle|line)|epsfile|eyeglasses|filled-box|fret-diagram(-terse|-verbose)?|fromproperty|harp-pedal|(justify|wordwrap)-(field|string)|left-brace|lookup|markalphabet|markletter|musicglyph|natural|note-by-number|note|null|path|right-brace|simple|(back)?slashed-digit|stencil|strut|tied-lyric|triangle|verbatim-file)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(arrow-head|beam|char|(semi|sesqui|double)?(flat|sharp)|draw-(circle|line)|epsfile|eyeglasses|filled-box|fret-diagram(-terse|-verbose)?|fromproperty|harp-pedal|(justify|wordwrap)-(field|string)|left-brace|lookup|markalphabet|markletter|musicglyph|natural|note-by-number|note|null|path|right-brace|simple|(back)?slashed-digit|stencil|strut|tied-lyric|triangle|verbatim-file)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = BaseNTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = DetectChar '#'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "scheme" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[^\"\\s\\\\#%{}$]+"
                              , reCompiled = Just (compileRegex True "[^\"\\s\\\\#%{}$]+")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "markup2"
          , Context
              { cName = "markup2"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "markuprules" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "markuprules"
          , Context
              { cName = "markuprules"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "markuprules" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\score\\b"
                              , reCompiled = Just (compileRegex True "\\\\score\\b")
                              , reCaseSensitive = True
                              }
                      , rAttribute = BaseNTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "notemode" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(arrow-head|beam|char|(semi|sesqui|double)?(flat|sharp)|draw-(circle|line)|epsfile|eyeglasses|filled-box|fret-diagram(-terse|-verbose)?|fromproperty|harp-pedal|(justify|wordwrap)-(field|string)|left-brace|lookup|markalphabet|markletter|musicglyph|natural|note-by-number|note|null|path|right-brace|simple|(back)?slashed-digit|stencil|strut|tied-lyric|triangle|verbatim-file|markup|bold|(rounded-)?box|bracket|caps|(center|general|left|right)-align|circle|((center|dir|left|right)-)?column|combine|concat|dynamic|fill-line|finger|fontCaps|(abs-)?fontsize|fraction|halign|hbracket|hcenter-in|hcenter|hspace|huge|italic|justify|larger?|line|lower|magnify|medium|normal-size-(sub|super)|normal-text|normalsize|number|on-the-fly|override|pad-(around|markup|to-box|x)|page-ref|postscript|put-adjacent|raise|roman|rotate|sans|small(er)?|smallCaps|sub|super|teeny|text|tiny|translate(-scaled)?|transparent|typewriter|underline|upright|vcenter|whiteout|with-(color|dimensions|url)|wordwrap|(markup|column-|justified-|override-|wordwrap-)lines|wordwrap-(string-)?internal)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(arrow-head|beam|char|(semi|sesqui|double)?(flat|sharp)|draw-(circle|line)|epsfile|eyeglasses|filled-box|fret-diagram(-terse|-verbose)?|fromproperty|harp-pedal|(justify|wordwrap)-(field|string)|left-brace|lookup|markalphabet|markletter|musicglyph|natural|note-by-number|note|null|path|right-brace|simple|(back)?slashed-digit|stencil|strut|tied-lyric|triangle|verbatim-file|markup|bold|(rounded-)?box|bracket|caps|(center|general|left|right)-align|circle|((center|dir|left|right)-)?column|combine|concat|dynamic|fill-line|finger|fontCaps|(abs-)?fontsize|fraction|halign|hbracket|hcenter-in|hcenter|hspace|huge|italic|justify|larger?|line|lower|magnify|medium|normal-size-(sub|super)|normal-text|normalsize|number|on-the-fly|override|pad-(around|markup|to-box|x)|page-ref|postscript|put-adjacent|raise|roman|rotate|sans|small(er)?|smallCaps|sub|super|teeny|text|tiny|translate(-scaled)?|transparent|typewriter|underline|upright|vcenter|whiteout|with-(color|dimensions|url)|wordwrap|(markup|column-|justified-|override-|wordwrap-)lines|wordwrap-(string-)?internal)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = BaseNTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\(bigger|h?center)(?![A-Za-z])"
                              , reCompiled =
                                  Just (compileRegex True "\\\\(bigger|h?center)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = BaseNTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\[A-Za-z]+(-[A-Za-z]+)*"
                              , reCompiled =
                                  Just (compileRegex True "\\\\[A-Za-z]+(-[A-Za-z]+)*")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "basic" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "music"
          , Context
              { cName = "music"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = AnyChar "()~"
                      , rAttribute = CharTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = AnyChar "[]"
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = AnyChar "-_^"
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "connect" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '\\'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = True
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "musiccommand" ) ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "default" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '<'
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "chord" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '>'
                      , rAttribute = ErrorTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[a-z]+\\d+\\.*[,']+"
                              , reCompiled = Just (compileRegex True "[a-z]+\\d+\\.*[,']+")
                              , reCaseSensitive = True
                              }
                      , rAttribute = ErrorTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "(\\b[srR](?![A-Za-z])|\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z])))"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "(\\b[srR](?![A-Za-z])|\\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|(?![A-Za-z])))")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "pitch" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = ":\\d*"
                              , reCompiled = Just (compileRegex True ":\\d*")
                              , reCaseSensitive = True
                              }
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "musiccommand"
          , Context
              { cName = "musiccommand"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(p{1,5}|mp|mf|f{1,5}|s?fp|sff?|spp?|[sr]?fz|cresc|decresc|dim)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(p{1,5}|mp|mf|f{1,5}|s?fp|sff?|spp?|[sr]?fz|cresc|decresc|dim)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\[<!>]"
                              , reCompiled = Just (compileRegex True "\\\\[<!>]")
                              , reCaseSensitive = True
                              }
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\\\(\\d+|accent|marcato|staccat(issim)?o|espressivo|tenuto|portato|(up|down)(bow|mordent|prall)|flageolet|thumb|[lr](heel|toe)|open|stopped|turn|reverseturn|trill|mordent|prall(prall|mordent|down|up)?|lineprall|signumcongruentiae|(short|long|verylong)?fermata|segno|(var)?coda|snappizzicato|halfopen)(?![A-Za-z])"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\\\(\\d+|accent|marcato|staccat(issim)?o|espressivo|tenuto|portato|(up|down)(bow|mordent|prall)|flageolet|thumb|[lr](heel|toe)|open|stopped|turn|reverseturn|trill|mordent|prall(prall|mordent|down|up)?|lineprall|signumcongruentiae|(short|long|verylong)?fermata|segno|(var)?coda|snappizzicato|halfopen)(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\[()]"
                              , reCompiled = Just (compileRegex True "\\\\[()]")
                              , reCaseSensitive = True
                              }
                      , rAttribute = CharTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\[][]"
                              , reCompiled = Just (compileRegex True "\\\\[][]")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "command" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = [ Pop ]
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "notemode"
          , Context
              { cName = "notemode"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "notemode2" ) ]
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = KeywordTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "notemode2"
          , Context
              { cName = "notemode2"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "noterules" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "noterules"
          , Context
              { cName = "noterules"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "noterules" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "music" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "override"
          , Context
              { cName = "override"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "ChoirStaff"
                               , "ChordNames"
                               , "CueVoice"
                               , "Devnull"
                               , "DrumStaff"
                               , "DrumVoice"
                               , "Dynamics"
                               , "FiguredBass"
                               , "FretBoards"
                               , "Global"
                               , "GrandStaff"
                               , "GregorianTranscriptionStaff"
                               , "GregorianTranscriptionVoice"
                               , "Lyrics"
                               , "MensuralStaff"
                               , "MensuralVoice"
                               , "NoteNames"
                               , "PianoStaff"
                               , "RhythmicStaff"
                               , "Score"
                               , "Staff"
                               , "StaffGroup"
                               , "TabStaff"
                               , "TabVoice"
                               , "Timing"
                               , "VaticanaStaff"
                               , "VaticanaVoice"
                               , "Voice"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet True [ "InnerChoirStaff" , "InnerStaffGroup" ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '.'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "Accidental"
                               , "AccidentalCautionary"
                               , "AccidentalPlacement"
                               , "AccidentalSuggestion"
                               , "Ambitus"
                               , "AmbitusAccidental"
                               , "AmbitusLine"
                               , "AmbitusNoteHead"
                               , "Arpeggio"
                               , "BalloonTextItem"
                               , "BarLine"
                               , "BarNumber"
                               , "BassFigure"
                               , "BassFigureAlignment"
                               , "BassFigureAlignmentPositioning"
                               , "BassFigureBracket"
                               , "BassFigureContinuation"
                               , "BassFigureLine"
                               , "Beam"
                               , "BendAfter"
                               , "BreakAlignGroup"
                               , "BreakAlignment"
                               , "BreathingSign"
                               , "ChordName"
                               , "Clef"
                               , "ClusterSpanner"
                               , "ClusterSpannerBeacon"
                               , "CombineTextScript"
                               , "Custos"
                               , "DotColumn"
                               , "Dots"
                               , "DoublePercentRepeat"
                               , "DoublePercentRepeatCounter"
                               , "DynamicLineSpanner"
                               , "DynamicText"
                               , "DynamicTextSpanner"
                               , "Episema"
                               , "Fingering"
                               , "FretBoard"
                               , "Glissando"
                               , "GraceSpacing"
                               , "GridLine"
                               , "GridPoint"
                               , "Hairpin"
                               , "HarmonicParenthesesItem"
                               , "HorizontalBracket"
                               , "InstrumentName"
                               , "InstrumentSwitch"
                               , "KeyCancellation"
                               , "KeySignature"
                               , "LaissezVibrerTie"
                               , "LaissezVibrerTieColumn"
                               , "LedgerLineSpanner"
                               , "LeftEdge"
                               , "LigatureBracket"
                               , "LyricExtender"
                               , "LyricHyphen"
                               , "LyricSpace"
                               , "LyricText"
                               , "MeasureGrouping"
                               , "MelodyItem"
                               , "MensuralLigature"
                               , "MetronomeMark"
                               , "MultiMeasureRest"
                               , "MultiMeasureRestNumber"
                               , "MultiMeasureRestText"
                               , "NonMusicalPaperColumn"
                               , "NoteCollision"
                               , "NoteColumn"
                               , "NoteHead"
                               , "NoteName"
                               , "NoteSpacing"
                               , "OctavateEight"
                               , "OttavaBracket"
                               , "PaperColumn"
                               , "ParenthesesItem"
                               , "PercentRepeat"
                               , "PercentRepeatCounter"
                               , "PhrasingSlur"
                               , "PianoPedalBracket"
                               , "RehearsalMark"
                               , "RepeatSlash"
                               , "RepeatTie"
                               , "RepeatTieColumn"
                               , "Rest"
                               , "RestCollision"
                               , "Script"
                               , "ScriptColumn"
                               , "ScriptRow"
                               , "SeparationItem"
                               , "Slur"
                               , "SostenutoPedal"
                               , "SostenutoPedalLineSpanner"
                               , "SpacingSpanner"
                               , "SpanBar"
                               , "StaffGrouper"
                               , "StaffSpacing"
                               , "StaffSymbol"
                               , "StanzaNumber"
                               , "Stem"
                               , "StemTremolo"
                               , "StringNumber"
                               , "StrokeFinger"
                               , "SustainPedal"
                               , "SustainPedalLineSpanner"
                               , "System"
                               , "SystemStartBar"
                               , "SystemStartBrace"
                               , "SystemStartBracket"
                               , "SystemStartSquare"
                               , "TabNoteHead"
                               , "TextScript"
                               , "TextSpanner"
                               , "Tie"
                               , "TieColumn"
                               , "TimeSignature"
                               , "TrillPitchAccidental"
                               , "TrillPitchGroup"
                               , "TrillPitchHead"
                               , "TrillSpanner"
                               , "TupletBracket"
                               , "TupletNumber"
                               , "UnaCordaPedal"
                               , "UnaCordaPedalLineSpanner"
                               , "VaticanaLigature"
                               , "VerticalAlignment"
                               , "VerticalAxisGroup"
                               , "VoiceFollower"
                               , "VoltaBracket"
                               , "VoltaBracketSpanner"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[A-Za-z]+(?=\\s*\\.)"
                              , reCompiled = Just (compileRegex True "[A-Za-z]+(?=\\s*\\.)")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[A-Za-z]+"
                              , reCompiled = Just (compileRegex True "[A-Za-z]+")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "pitch"
          , Context
              { cName = "pitch"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "=\\s*('+|,+)?"
                              , reCompiled = Just (compileRegex True "=\\s*('+|,+)?")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DecValTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = AnyChar "!?"
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "duration" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "scheme"
          , Context
              { cName = "scheme"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = FloatTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Push ( "LilyPond" , "scheme2" ) ]
              , cDynamic = False
              }
          )
        , ( "scheme2"
          , Context
              { cName = "scheme2"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '('
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "scheme3" ) ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "schemerules" )
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = True
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop ]
                      }
                  ]
              , cAttribute = FloatTok
              , cLineEmptyContext = []
              , cLineEndContext = [ Pop , Pop ]
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "scheme3"
          , Context
              { cName = "scheme3"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar ')'
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop , Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "schemerules" )
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = FloatTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "schemecommentblock"
          , Context
              { cName = "schemecommentblock"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = Detect2Chars '!' '#'
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "Alerts" , "" )
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = CommentTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "schemecommentline"
          , Context
              { cName = "schemecommentline"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = IncludeRules ( "Alerts" , "" )
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = CommentTok
              , cLineEmptyContext = []
              , cLineEndContext = [ Pop ]
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "schemelily"
          , Context
              { cName = "schemelily"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = Detect2Chars '#' '}'
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "lilypond" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "schemequote"
          , Context
              { cName = "schemequote"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\b(define|defined\\?|define\\*(-public)?|define-(\\*|builtin-markup-(list-)?command|class|(extra-)?display-method|fonts?|grob-property|ly-syntax(-loc|-simple)?|macro(-public)?|markup-(list-)command|method|module|music-function|post-event-display-method|public(-macro|-toplevel)?|safe-public|span-event-display-method)|defmacro(\\*(-public)?)?|lambda\\*?|and|or|if|cond|case|let\\*?|letrec|begin|do|delay|set!|else|(quasi)?quote|unquote(-splicing)?|(define|let|letrec)-syntax|syntax-rules)(?=($|\\s|\\)))"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\b(define|defined\\?|define\\*(-public)?|define-(\\*|builtin-markup-(list-)?command|class|(extra-)?display-method|fonts?|grob-property|ly-syntax(-loc|-simple)?|macro(-public)?|markup-(list-)command|method|module|music-function|post-event-display-method|public(-macro|-toplevel)?|safe-public|span-event-display-method)|defmacro(\\*(-public)?)?|lambda\\*?|and|or|if|cond|case|let\\*?|letrec|begin|do|delay|set!|else|(quasi)?quote|unquote(-splicing)?|(define|let|letrec)-syntax|syntax-rules)(?=($|\\s|\\)))")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\b(not|boolean\\?|eq\\?|eqv\\?|equal\\?|pair\\?|cons|set-c[ad]r!|c[ad]{1,4}r|null\\?|list\\?|list|length|append|reverse|list-ref|mem[qv]|member|ass[qv]|assoc|symbol\\?|symbol->string|string->symbol|number\\?|complex\\?|real\\?|rational\\?|integer\\?|exact\\?|inexact\\?|zero\\?|positive\\?|negative\\?|odd\\?|even\\?|max|min|abs|quotient|remainder|modulo|gcd|lcm|numerator|denominator|floor|ceiling|truncate|round|rationalize|exp|log|sin|cos|tan|asin|acos|atan|sqrt|expt|make-rectangular|make-polar|real-part|imag-part|magnitude|angle|exact->inexact|inexact->exact|number->string|string->number)(?=($|\\s|\\)))"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\b(not|boolean\\?|eq\\?|eqv\\?|equal\\?|pair\\?|cons|set-c[ad]r!|c[ad]{1,4}r|null\\?|list\\?|list|length|append|reverse|list-ref|mem[qv]|member|ass[qv]|assoc|symbol\\?|symbol->string|string->symbol|number\\?|complex\\?|real\\?|rational\\?|integer\\?|exact\\?|inexact\\?|zero\\?|positive\\?|negative\\?|odd\\?|even\\?|max|min|abs|quotient|remainder|modulo|gcd|lcm|numerator|denominator|floor|ceiling|truncate|round|rationalize|exp|log|sin|cos|tan|asin|acos|atan|sqrt|expt|make-rectangular|make-polar|real-part|imag-part|magnitude|angle|exact->inexact|inexact->exact|number->string|string->number)(?=($|\\s|\\)))")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\b(char((-ci)?(=\\?|<\\?|>\\?|<=\\?|>=\\?)|-alphabetic\\?|\\?|-numeric\\?|-whitespace\\?|-upper-case\\?|-lower-case\\?|->integer|-upcase|-downcase|-ready\\?)|integer->char|make-string|string(\\?|-copy|-fill!|-length|-ref|-set!|(-ci)?(=\\?|<\\?|>\\?|<=\\?|>=\\?)|-append)|substring|make-vector|vector(\\?|-length|-ref|-set!|-fill!)?|procedure\\?|apply|map|for-each|force|call-with-(current-continuation|(in|out)put-file)|(in|out)put-port\\?|current-(in|out)put-port|open-(in|out)put-file|close-(in|out)put-port|eof-object\\?|read|(read|peek)-char|write(-char)?|display|newline|call/cc|list-tail|string->list|list->string|vector->list|list->vector|with-input-from-file|with-output-to-file|load|transcript-(on|off)|eval|dynamic-wind|port\\?|values|call-with-values|(scheme-report-|null-|interaction-)environment)(?=($|\\s|\\)))"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\b(char((-ci)?(=\\?|<\\?|>\\?|<=\\?|>=\\?)|-alphabetic\\?|\\?|-numeric\\?|-whitespace\\?|-upper-case\\?|-lower-case\\?|->integer|-upcase|-downcase|-ready\\?)|integer->char|make-string|string(\\?|-copy|-fill!|-length|-ref|-set!|(-ci)?(=\\?|<\\?|>\\?|<=\\?|>=\\?)|-append)|substring|make-vector|vector(\\?|-length|-ref|-set!|-fill!)?|procedure\\?|apply|map|for-each|force|call-with-(current-continuation|(in|out)put-file)|(in|out)put-port\\?|current-(in|out)put-port|open-(in|out)put-file|close-(in|out)put-port|eof-object\\?|read|(read|peek)-char|write(-char)?|display|newline|call/cc|list-tail|string->list|list->string|vector->list|list->vector|with-input-from-file|with-output-to-file|load|transcript-(on|off)|eval|dynamic-wind|port\\?|values|call-with-values|(scheme-report-|null-|interaction-)environment)(?=($|\\s|\\)))")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = FloatTok
              , cLineEmptyContext = []
              , cLineEndContext = [ Pop ]
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "schemerules"
          , Context
              { cName = "schemerules"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '('
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "schemerules" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar ')'
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = DetectChar '"'
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "schemestring" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar ';'
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "schemecommentline" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '$'
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "schemesub" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '\''
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "schemequote" ) ]
                      }
                  , Rule
                      { rMatcher = Detect2Chars '#' '!'
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "schemecommentblock" ) ]
                      }
                  , Rule
                      { rMatcher = Detect2Chars '#' '{'
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "schemelily" ) ]
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "AbsoluteDynamicEvent"
                               , "AnnotateOutputEvent"
                               , "ApplyContext"
                               , "ApplyOutputEvent"
                               , "ArpeggioEvent"
                               , "ArticulationEvent"
                               , "AutoChangeMusic"
                               , "BarCheck"
                               , "BassFigureEvent"
                               , "BeamEvent"
                               , "BeamForbidEvent"
                               , "BendAfterEvent"
                               , "BreathingEvent"
                               , "ClusterNoteEvent"
                               , "ContextChange"
                               , "ContextSpeccedMusic"
                               , "CrescendoEvent"
                               , "DecrescendoEvent"
                               , "Event"
                               , "EventChord"
                               , "ExtenderEvent"
                               , "FingeringEvent"
                               , "GlissandoEvent"
                               , "GraceMusic"
                               , "HarmonicEvent"
                               , "HyphenEvent"
                               , "KeyChangeEvent"
                               , "LabelEvent"
                               , "LaissezVibrerEvent"
                               , "LigatureEvent"
                               , "LineBreakEvent"
                               , "LyricCombineMusic"
                               , "LyricEvent"
                               , "MarkEvent"
                               , "MultiMeasureRestEvent"
                               , "MultiMeasureRestMusic"
                               , "MultiMeasureTextEvent"
                               , "Music"
                               , "NoteEvent"
                               , "NoteGroupingEvent"
                               , "OverrideProperty"
                               , "PageBreakEvent"
                               , "PageTurnEvent"
                               , "PartCombineMusic"
                               , "PercentEvent"
                               , "PercentRepeatedMusic"
                               , "PesOrFlexaEvent"
                               , "PhrasingSlurEvent"
                               , "PropertySet"
                               , "PropertyUnset"
                               , "QuoteMusic"
                               , "RelativeOctaveCheck"
                               , "RelativeOctaveMusic"
                               , "RepeatTieEvent"
                               , "RepeatedMusic"
                               , "RestEvent"
                               , "RevertProperty"
                               , "ScriptEvent"
                               , "SequentialMusic"
                               , "SimultaneousMusic"
                               , "SkipEvent"
                               , "SkipMusic"
                               , "SlurEvent"
                               , "SoloOneEvent"
                               , "SoloTwoEvent"
                               , "SostenutoEvent"
                               , "SpacingSectionEvent"
                               , "SpanEvent"
                               , "StaffSpanEvent"
                               , "StringNumberEvent"
                               , "StrokeFingerEvent"
                               , "SustainEvent"
                               , "TextScriptEvent"
                               , "TextSpanEvent"
                               , "TieEvent"
                               , "TimeScaledMusic"
                               , "TransposedMusic"
                               , "TremoloEvent"
                               , "TremoloRepeatedMusic"
                               , "TremoloSpanEvent"
                               , "TrillSpanEvent"
                               , "TupletSpanEvent"
                               , "UnaCordaEvent"
                               , "UnfoldedRepeatedMusic"
                               , "UnisonoEvent"
                               , "UnrelativableMusic"
                               , "VoiceSeparator"
                               , "VoltaRepeatedMusic"
                               ])
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "ChoirStaff"
                               , "ChordNames"
                               , "CueVoice"
                               , "Devnull"
                               , "DrumStaff"
                               , "DrumVoice"
                               , "Dynamics"
                               , "FiguredBass"
                               , "FretBoards"
                               , "Global"
                               , "GrandStaff"
                               , "GregorianTranscriptionStaff"
                               , "GregorianTranscriptionVoice"
                               , "Lyrics"
                               , "MensuralStaff"
                               , "MensuralVoice"
                               , "NoteNames"
                               , "PianoStaff"
                               , "RhythmicStaff"
                               , "Score"
                               , "Staff"
                               , "StaffGroup"
                               , "TabStaff"
                               , "TabVoice"
                               , "Timing"
                               , "VaticanaStaff"
                               , "VaticanaVoice"
                               , "Voice"
                               ])
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "Accidental"
                               , "AccidentalCautionary"
                               , "AccidentalPlacement"
                               , "AccidentalSuggestion"
                               , "Ambitus"
                               , "AmbitusAccidental"
                               , "AmbitusLine"
                               , "AmbitusNoteHead"
                               , "Arpeggio"
                               , "BalloonTextItem"
                               , "BarLine"
                               , "BarNumber"
                               , "BassFigure"
                               , "BassFigureAlignment"
                               , "BassFigureAlignmentPositioning"
                               , "BassFigureBracket"
                               , "BassFigureContinuation"
                               , "BassFigureLine"
                               , "Beam"
                               , "BendAfter"
                               , "BreakAlignGroup"
                               , "BreakAlignment"
                               , "BreathingSign"
                               , "ChordName"
                               , "Clef"
                               , "ClusterSpanner"
                               , "ClusterSpannerBeacon"
                               , "CombineTextScript"
                               , "Custos"
                               , "DotColumn"
                               , "Dots"
                               , "DoublePercentRepeat"
                               , "DoublePercentRepeatCounter"
                               , "DynamicLineSpanner"
                               , "DynamicText"
                               , "DynamicTextSpanner"
                               , "Episema"
                               , "Fingering"
                               , "FretBoard"
                               , "Glissando"
                               , "GraceSpacing"
                               , "GridLine"
                               , "GridPoint"
                               , "Hairpin"
                               , "HarmonicParenthesesItem"
                               , "HorizontalBracket"
                               , "InstrumentName"
                               , "InstrumentSwitch"
                               , "KeyCancellation"
                               , "KeySignature"
                               , "LaissezVibrerTie"
                               , "LaissezVibrerTieColumn"
                               , "LedgerLineSpanner"
                               , "LeftEdge"
                               , "LigatureBracket"
                               , "LyricExtender"
                               , "LyricHyphen"
                               , "LyricSpace"
                               , "LyricText"
                               , "MeasureGrouping"
                               , "MelodyItem"
                               , "MensuralLigature"
                               , "MetronomeMark"
                               , "MultiMeasureRest"
                               , "MultiMeasureRestNumber"
                               , "MultiMeasureRestText"
                               , "NonMusicalPaperColumn"
                               , "NoteCollision"
                               , "NoteColumn"
                               , "NoteHead"
                               , "NoteName"
                               , "NoteSpacing"
                               , "OctavateEight"
                               , "OttavaBracket"
                               , "PaperColumn"
                               , "ParenthesesItem"
                               , "PercentRepeat"
                               , "PercentRepeatCounter"
                               , "PhrasingSlur"
                               , "PianoPedalBracket"
                               , "RehearsalMark"
                               , "RepeatSlash"
                               , "RepeatTie"
                               , "RepeatTieColumn"
                               , "Rest"
                               , "RestCollision"
                               , "Script"
                               , "ScriptColumn"
                               , "ScriptRow"
                               , "SeparationItem"
                               , "Slur"
                               , "SostenutoPedal"
                               , "SostenutoPedalLineSpanner"
                               , "SpacingSpanner"
                               , "SpanBar"
                               , "StaffGrouper"
                               , "StaffSpacing"
                               , "StaffSymbol"
                               , "StanzaNumber"
                               , "Stem"
                               , "StemTremolo"
                               , "StringNumber"
                               , "StrokeFinger"
                               , "SustainPedal"
                               , "SustainPedalLineSpanner"
                               , "System"
                               , "SystemStartBar"
                               , "SystemStartBrace"
                               , "SystemStartBracket"
                               , "SystemStartSquare"
                               , "TabNoteHead"
                               , "TextScript"
                               , "TextSpanner"
                               , "Tie"
                               , "TieColumn"
                               , "TimeSignature"
                               , "TrillPitchAccidental"
                               , "TrillPitchGroup"
                               , "TrillPitchHead"
                               , "TrillSpanner"
                               , "TupletBracket"
                               , "TupletNumber"
                               , "UnaCordaPedal"
                               , "UnaCordaPedalLineSpanner"
                               , "VaticanaLigature"
                               , "VerticalAlignment"
                               , "VerticalAxisGroup"
                               , "VoiceFollower"
                               , "VoltaBracket"
                               , "VoltaBracketSpanner"
                               ])
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[-+]?(\\d+(\\.\\d+)?|\\.\\d+)"
                              , reCompiled =
                                  Just (compileRegex True "[-+]?(\\d+(\\.\\d+)?|\\.\\d+)")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DecValTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "#(t|f|b[-+]?[01.]+|o[-+]?[0-7.]+|d[-+]?[0-9.]+|x[-+]?[0-9a-f.]+)"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       False
                                       "#(t|f|b[-+]?[01.]+|o[-+]?[0-7.]+|d[-+]?[0-9.]+|x[-+]?[0-9a-f.]+)")
                              , reCaseSensitive = False
                              }
                      , rAttribute = DecValTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[+-](inf|nan)\\.0"
                              , reCompiled = Just (compileRegex True "[+-](inf|nan)\\.0")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DecValTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\b(define|defined\\?|define\\*(-public)?|define-(\\*|builtin-markup-(list-)?command|class|(extra-)?display-method|fonts?|grob-property|ly-syntax(-loc|-simple)?|macro(-public)?|markup-(list-)command|method|module|music-function|post-event-display-method|public(-macro|-toplevel)?|safe-public|span-event-display-method)|defmacro(\\*(-public)?)?|lambda\\*?|and|or|if|cond|case|let\\*?|letrec|begin|do|delay|set!|else|(quasi)?quote|unquote(-splicing)?|(define|let|letrec)-syntax|syntax-rules)(?=($|\\s|\\)))"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\b(define|defined\\?|define\\*(-public)?|define-(\\*|builtin-markup-(list-)?command|class|(extra-)?display-method|fonts?|grob-property|ly-syntax(-loc|-simple)?|macro(-public)?|markup-(list-)command|method|module|music-function|post-event-display-method|public(-macro|-toplevel)?|safe-public|span-event-display-method)|defmacro(\\*(-public)?)?|lambda\\*?|and|or|if|cond|case|let\\*?|letrec|begin|do|delay|set!|else|(quasi)?quote|unquote(-splicing)?|(define|let|letrec)-syntax|syntax-rules)(?=($|\\s|\\)))")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\b(not|boolean\\?|eq\\?|eqv\\?|equal\\?|pair\\?|cons|set-c[ad]r!|c[ad]{1,4}r|null\\?|list\\?|list|length|append|reverse|list-ref|mem[qv]|member|ass[qv]|assoc|symbol\\?|symbol->string|string->symbol|number\\?|complex\\?|real\\?|rational\\?|integer\\?|exact\\?|inexact\\?|zero\\?|positive\\?|negative\\?|odd\\?|even\\?|max|min|abs|quotient|remainder|modulo|gcd|lcm|numerator|denominator|floor|ceiling|truncate|round|rationalize|exp|log|sin|cos|tan|asin|acos|atan|sqrt|expt|make-rectangular|make-polar|real-part|imag-part|magnitude|angle|exact->inexact|inexact->exact|number->string|string->number)(?=($|\\s|\\)))"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\b(not|boolean\\?|eq\\?|eqv\\?|equal\\?|pair\\?|cons|set-c[ad]r!|c[ad]{1,4}r|null\\?|list\\?|list|length|append|reverse|list-ref|mem[qv]|member|ass[qv]|assoc|symbol\\?|symbol->string|string->symbol|number\\?|complex\\?|real\\?|rational\\?|integer\\?|exact\\?|inexact\\?|zero\\?|positive\\?|negative\\?|odd\\?|even\\?|max|min|abs|quotient|remainder|modulo|gcd|lcm|numerator|denominator|floor|ceiling|truncate|round|rationalize|exp|log|sin|cos|tan|asin|acos|atan|sqrt|expt|make-rectangular|make-polar|real-part|imag-part|magnitude|angle|exact->inexact|inexact->exact|number->string|string->number)(?=($|\\s|\\)))")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\b(char((-ci)?(=\\?|<\\?|>\\?|<=\\?|>=\\?)|-alphabetic\\?|\\?|-numeric\\?|-whitespace\\?|-upper-case\\?|-lower-case\\?|->integer|-upcase|-downcase|-ready\\?)|integer->char|make-string|string(\\?|-copy|-fill!|-length|-ref|-set!|(-ci)?(=\\?|<\\?|>\\?|<=\\?|>=\\?)|-append)|substring|make-vector|vector(\\?|-length|-ref|-set!|-fill!)?|procedure\\?|apply|map|for-each|force|call-with-(current-continuation|(in|out)put-file)|(in|out)put-port\\?|current-(in|out)put-port|open-(in|out)put-file|close-(in|out)put-port|eof-object\\?|read|(read|peek)-char|write(-char)?|display|newline|call/cc|list-tail|string->list|list->string|vector->list|list->vector|with-input-from-file|with-output-to-file|load|transcript-(on|off)|eval|dynamic-wind|port\\?|values|call-with-values|(scheme-report-|null-|interaction-)environment)(?=($|\\s|\\)))"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\b(char((-ci)?(=\\?|<\\?|>\\?|<=\\?|>=\\?)|-alphabetic\\?|\\?|-numeric\\?|-whitespace\\?|-upper-case\\?|-lower-case\\?|->integer|-upcase|-downcase|-ready\\?)|integer->char|make-string|string(\\?|-copy|-fill!|-length|-ref|-set!|(-ci)?(=\\?|<\\?|>\\?|<=\\?|>=\\?)|-append)|substring|make-vector|vector(\\?|-length|-ref|-set!|-fill!)?|procedure\\?|apply|map|for-each|force|call-with-(current-continuation|(in|out)put-file)|(in|out)put-port\\?|current-(in|out)put-port|open-(in|out)put-file|close-(in|out)put-port|eof-object\\?|read|(read|peek)-char|write(-char)?|display|newline|call/cc|list-tail|string->list|list->string|vector->list|list->vector|with-input-from-file|with-output-to-file|load|transcript-(on|off)|eval|dynamic-wind|port\\?|values|call-with-values|(scheme-report-|null-|interaction-)environment)(?=($|\\s|\\)))")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[a-zA-Z#][^\\s(){}[\\];$\"]*"
                              , reCompiled =
                                  Just (compileRegex True "[a-zA-Z#][^\\s(){}[\\];$\"]*")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = FloatTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "schemestring"
          , Context
              { cName = "schemestring"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '"'
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\[0fnrtav\\\\\"]"
                              , reCompiled = Just (compileRegex True "\\\\[0fnrtav\\\\\"]")
                              , reCaseSensitive = True
                              }
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = StringTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "schemesub"
          , Context
              { cName = "schemesub"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[a-zA-Z#][^\\s(){}[\\];$\"]*"
                              , reCompiled =
                                  Just (compileRegex True "[a-zA-Z#][^\\s(){}[\\];$\"]*")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DecValTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = DecValTok
              , cLineEmptyContext = []
              , cLineEndContext = [ Pop ]
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "section"
          , Context
              { cName = "section"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "section2" ) ]
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = KeywordTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "section2"
          , Context
              { cName = "section2"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop , Pop ]
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "sectionrules" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "sectionrules"
          , Context
              { cName = "sectionrules"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '}'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = DetectChar '{'
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "sectionrules" ) ]
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "ChoirStaff"
                               , "ChordNames"
                               , "CueVoice"
                               , "Devnull"
                               , "DrumStaff"
                               , "DrumVoice"
                               , "Dynamics"
                               , "FiguredBass"
                               , "FretBoards"
                               , "Global"
                               , "GrandStaff"
                               , "GregorianTranscriptionStaff"
                               , "GregorianTranscriptionVoice"
                               , "Lyrics"
                               , "MensuralStaff"
                               , "MensuralVoice"
                               , "NoteNames"
                               , "PianoStaff"
                               , "RhythmicStaff"
                               , "Score"
                               , "Staff"
                               , "StaffGroup"
                               , "TabStaff"
                               , "TabVoice"
                               , "Timing"
                               , "VaticanaStaff"
                               , "VaticanaVoice"
                               , "Voice"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet True [ "InnerChoirStaff" , "InnerStaffGroup" ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "(\"?)\\b((Accidental|Ambitus|Arpeggio|Auto_beam|Axis_group|Balloon|Bar|Bar_number|Beam|Bend|Break_align|Breathing_sign|Chord_name|Chord_tremolo|Clef|Cluster_spanner|Collision|Completion_heads|Custos|Default_bar_line|Dot_column|Dots|Drum_notes|Dynami_align|Dynamic|Episema|Extender|Figured_bass|Figured_bass_position|Fingering|Font_size|Forbid_line_break|Fretboard|Glissando|Grace_beam|Grace|Grace_spacing|Grid_line_span|Grid_point|Grob_pq|Hara_kiri|Horizontal_bracket)_engraver)\\b\\1"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "(\"?)\\b((Accidental|Ambitus|Arpeggio|Auto_beam|Axis_group|Balloon|Bar|Bar_number|Beam|Bend|Break_align|Breathing_sign|Chord_name|Chord_tremolo|Clef|Cluster_spanner|Collision|Completion_heads|Custos|Default_bar_line|Dot_column|Dots|Drum_notes|Dynami_align|Dynamic|Episema|Extender|Figured_bass|Figured_bass_position|Fingering|Font_size|Forbid_line_break|Fretboard|Glissando|Grace_beam|Grace|Grace_spacing|Grid_line_span|Grid_point|Grob_pq|Hara_kiri|Horizontal_bracket)_engraver)\\b\\1")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "(\"?)\\b((Hyphen|Instrument_name|Instrument_switch|Key|Laissez_vibrer|Ledger_line|Ligature_bracket|Lyric|Mark|Measure_grouping|Melody|Mensural_ligature|Metronome_mark|Multi_measure_rest|New_dynamic|New_fingering|Note_head_line|Note_heads|Note_name|Note_spacing|Ottava_spanner|Output_property|Page_turn|Paper_column|Parenthesis|Part_combine|Percent_repeat|Phrasing_slur|Piano_pedal_align|Piano_pedal|Pitch_squash|Pitched_trill|Repeat_acknowledge|Repeat_tie|Rest_collision|Rest|Rhythmic_column|Scheme|Script_column|Script|Script_row)_engraver)\\b\\1"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "(\"?)\\b((Hyphen|Instrument_name|Instrument_switch|Key|Laissez_vibrer|Ledger_line|Ligature_bracket|Lyric|Mark|Measure_grouping|Melody|Mensural_ligature|Metronome_mark|Multi_measure_rest|New_dynamic|New_fingering|Note_head_line|Note_heads|Note_name|Note_spacing|Ottava_spanner|Output_property|Page_turn|Paper_column|Parenthesis|Part_combine|Percent_repeat|Phrasing_slur|Piano_pedal_align|Piano_pedal|Pitch_squash|Pitched_trill|Repeat_acknowledge|Repeat_tie|Rest_collision|Rest|Rhythmic_column|Scheme|Script_column|Script|Script_row)_engraver)\\b\\1")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "(\"?)\\b((Separating_line_group|Slash_repeat|Slur|Spacing|Span_arpeggio|Span_bar|Spanner_break_forbid|Staff_collecting|Staff_symbol|Stanza_number_align|Stanza_number|Stem|String_number|Swallow|System_start_delimiter|Tab_harmonic|Tab_note_heads|Tab_staff_symbol|Text|Text_spanner|Tie|Time_signature|Trill_spanner|Tuplet|Tweak|Vaticana_ligature|Vertical_align|Vertically_spaced_contexts|Volta)_engraver)\\b\\1"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "(\"?)\\b((Separating_line_group|Slash_repeat|Slur|Spacing|Span_arpeggio|Span_bar|Spanner_break_forbid|Staff_collecting|Staff_symbol|Stanza_number_align|Stanza_number|Stem|String_number|Swallow|System_start_delimiter|Tab_harmonic|Tab_note_heads|Tab_staff_symbol|Text|Text_spanner|Tie|Time_signature|Trill_spanner|Tuplet|Tweak|Vaticana_ligature|Vertical_align|Vertically_spaced_contexts|Volta)_engraver)\\b\\1")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "(\"?)\\b((Beam|Control_track|Drum_note|Dynamic|Key|Lyric|Note|Piano_pedal|Slur|Staff|Swallow|Tempo|Tie|Time_signature)_performer)\\b\\1"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "(\"?)\\b((Beam|Control_track|Drum_note|Dynamic|Key|Lyric|Note|Piano_pedal|Slur|Staff|Swallow|Tempo|Tie|Time_signature)_performer)\\b\\1")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "(\"?)\\b((Note_swallow|Rest_swallow|Skip_event_swallow|Timing)_translator)\\b\\1"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "(\"?)\\b((Note_swallow|Rest_swallow|Skip_event_swallow|Timing)_translator)\\b\\1")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "Accidental"
                               , "AccidentalCautionary"
                               , "AccidentalPlacement"
                               , "AccidentalSuggestion"
                               , "Ambitus"
                               , "AmbitusAccidental"
                               , "AmbitusLine"
                               , "AmbitusNoteHead"
                               , "Arpeggio"
                               , "BalloonTextItem"
                               , "BarLine"
                               , "BarNumber"
                               , "BassFigure"
                               , "BassFigureAlignment"
                               , "BassFigureAlignmentPositioning"
                               , "BassFigureBracket"
                               , "BassFigureContinuation"
                               , "BassFigureLine"
                               , "Beam"
                               , "BendAfter"
                               , "BreakAlignGroup"
                               , "BreakAlignment"
                               , "BreathingSign"
                               , "ChordName"
                               , "Clef"
                               , "ClusterSpanner"
                               , "ClusterSpannerBeacon"
                               , "CombineTextScript"
                               , "Custos"
                               , "DotColumn"
                               , "Dots"
                               , "DoublePercentRepeat"
                               , "DoublePercentRepeatCounter"
                               , "DynamicLineSpanner"
                               , "DynamicText"
                               , "DynamicTextSpanner"
                               , "Episema"
                               , "Fingering"
                               , "FretBoard"
                               , "Glissando"
                               , "GraceSpacing"
                               , "GridLine"
                               , "GridPoint"
                               , "Hairpin"
                               , "HarmonicParenthesesItem"
                               , "HorizontalBracket"
                               , "InstrumentName"
                               , "InstrumentSwitch"
                               , "KeyCancellation"
                               , "KeySignature"
                               , "LaissezVibrerTie"
                               , "LaissezVibrerTieColumn"
                               , "LedgerLineSpanner"
                               , "LeftEdge"
                               , "LigatureBracket"
                               , "LyricExtender"
                               , "LyricHyphen"
                               , "LyricSpace"
                               , "LyricText"
                               , "MeasureGrouping"
                               , "MelodyItem"
                               , "MensuralLigature"
                               , "MetronomeMark"
                               , "MultiMeasureRest"
                               , "MultiMeasureRestNumber"
                               , "MultiMeasureRestText"
                               , "NonMusicalPaperColumn"
                               , "NoteCollision"
                               , "NoteColumn"
                               , "NoteHead"
                               , "NoteName"
                               , "NoteSpacing"
                               , "OctavateEight"
                               , "OttavaBracket"
                               , "PaperColumn"
                               , "ParenthesesItem"
                               , "PercentRepeat"
                               , "PercentRepeatCounter"
                               , "PhrasingSlur"
                               , "PianoPedalBracket"
                               , "RehearsalMark"
                               , "RepeatSlash"
                               , "RepeatTie"
                               , "RepeatTieColumn"
                               , "Rest"
                               , "RestCollision"
                               , "Script"
                               , "ScriptColumn"
                               , "ScriptRow"
                               , "SeparationItem"
                               , "Slur"
                               , "SostenutoPedal"
                               , "SostenutoPedalLineSpanner"
                               , "SpacingSpanner"
                               , "SpanBar"
                               , "StaffGrouper"
                               , "StaffSpacing"
                               , "StaffSymbol"
                               , "StanzaNumber"
                               , "Stem"
                               , "StemTremolo"
                               , "StringNumber"
                               , "StrokeFinger"
                               , "SustainPedal"
                               , "SustainPedalLineSpanner"
                               , "System"
                               , "SystemStartBar"
                               , "SystemStartBrace"
                               , "SystemStartBracket"
                               , "SystemStartSquare"
                               , "TabNoteHead"
                               , "TextScript"
                               , "TextSpanner"
                               , "Tie"
                               , "TieColumn"
                               , "TimeSignature"
                               , "TrillPitchAccidental"
                               , "TrillPitchGroup"
                               , "TrillPitchHead"
                               , "TrillSpanner"
                               , "TupletBracket"
                               , "TupletNumber"
                               , "UnaCordaPedal"
                               , "UnaCordaPedalLineSpanner"
                               , "VaticanaLigature"
                               , "VerticalAlignment"
                               , "VerticalAxisGroup"
                               , "VoiceFollower"
                               , "VoltaBracket"
                               , "VoltaBracketSpanner"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "aDueText"
                               , "alignAboveContext"
                               , "alignBassFigureAccidentals"
                               , "alignBelowContext"
                               , "allowBeamBreak"
                               , "associatedVoice"
                               , "autoAccidentals"
                               , "autoBeamCheck"
                               , "autoBeamSettings"
                               , "autoBeaming"
                               , "autoCautionaries"
                               , "automaticBars"
                               , "barAlways"
                               , "barCheckSynchronize"
                               , "barNumberVisibility"
                               , "baseMoment"
                               , "bassFigureFormatFunction"
                               , "bassStaffProperties"
                               , "beamExceptions"
                               , "beatGrouping"
                               , "beatLength"
                               , "beatStructure"
                               , "chordChanges"
                               , "chordNameExceptions"
                               , "chordNameExceptionsFull"
                               , "chordNameExceptionsPartial"
                               , "chordNameFunction"
                               , "chordNameSeparator"
                               , "chordNoteNamer"
                               , "chordPrefixSpacer"
                               , "chordRootNamer"
                               , "clefGlyph"
                               , "clefOctavation"
                               , "clefPosition"
                               , "connectArpeggios"
                               , "countPercentRepeats"
                               , "createKeyOnClefChange"
                               , "createSpacing"
                               , "crescendoSpanner"
                               , "crescendoText"
                               , "currentBarNumber"
                               , "decrescendoSpanner"
                               , "decrescendoText"
                               , "defaultBarType"
                               , "doubleRepeatType"
                               , "doubleSlurs"
                               , "drumPitchTable"
                               , "drumStyleTable"
                               , "dynamicAbsoluteVolumeFunction"
                               , "explicitClefVisibility"
                               , "explicitKeySignatureVisibility"
                               , "extendersOverRests"
                               , "extraNatural"
                               , "figuredBassAlterationDirection"
                               , "figuredBassCenterContinuations"
                               , "figuredBassFormatter"
                               , "figuredBassPlusDirection"
                               , "fingeringOrientations"
                               , "firstClef"
                               , "followVoice"
                               , "fontSize"
                               , "forbidBreak"
                               , "forceClef"
                               , "gridInterval"
                               , "hairpinToBarline"
                               , "harmonicAccidentals"
                               , "highStringOne"
                               , "ignoreBarChecks"
                               , "ignoreFiguredBassRest"
                               , "ignoreMelismata"
                               , "implicitBassFigures"
                               , "implicitTimeSignatureVisibility"
                               , "instrumentCueName"
                               , "instrumentEqualizer"
                               , "instrumentName"
                               , "instrumentTransposition"
                               , "internalBarNumber"
                               , "keepAliveInterfaces"
                               , "keyAlterationOrder"
                               , "keySignature"
                               , "lyricMelismaAlignment"
                               , "majorSevenSymbol"
                               , "markFormatter"
                               , "maximumFretStretch"
                               , "measureLength"
                               , "measurePosition"
                               , "melismaBusyProperties"
                               , "metronomeMarkFormatter"
                               , "middleCClefPosition"
                               , "middleCOffset"
                               , "middleCPosition"
                               , "midiInstrument"
                               , "midiMaximumVolume"
                               , "midiMinimumVolume"
                               , "minimumFret"
                               , "minimumPageTurnLength"
                               , "minimumRepeatLengthForPageTurn"
                               , "noteToFretFunction"
                               , "ottavation"
                               , "output"
                               , "pedalSostenutoStrings"
                               , "pedalSostenutoStyle"
                               , "pedalSustainStrings"
                               , "pedalSustainStyle"
                               , "pedalUnaCordaStrings"
                               , "pedalUnaCordaStyle"
                               , "printKeyCancellation"
                               , "printOctaveNames"
                               , "printPartCombineTexts"
                               , "proportionalNotationDuration"
                               , "recordEventSequence"
                               , "rehearsalMark"
                               , "repeatCommands"
                               , "restNumberThreshold"
                               , "scriptDefinitions"
                               , "shapeNoteStyles"
                               , "shortInstrumentName"
                               , "shortVocalName"
                               , "skipBars"
                               , "skipTypesetting"
                               , "soloIIText"
                               , "soloText"
                               , "squashedPosition"
                               , "staffLineLayoutFunction"
                               , "stanza"
                               , "stemLeftBeamCount"
                               , "stemRightBeamCount"
                               , "stringNumberOrientations"
                               , "stringOneTopmost"
                               , "stringTunings"
                               , "strokeFingerOrientations"
                               , "subdivideBeams"
                               , "suggestAccidentals"
                               , "systemStartDelimiter"
                               , "systemStartDelimiterHierarchy"
                               , "tablatureFormat"
                               , "tempoUnitCount"
                               , "tempoUnitDuration"
                               , "tempoWholesPerMinute"
                               , "tieWaitForNote"
                               , "timeSignatureFraction"
                               , "timing"
                               , "tonic"
                               , "topLevelAlignment"
                               , "trebleStaffProperties"
                               , "tremoloFlags"
                               , "tupletFullLength"
                               , "tupletFullLengthNote"
                               , "tupletSpannerDuration"
                               , "useBassFigureExtenders"
                               , "verticallySpacedContexts"
                               , "vocalName"
                               , "voltaOnThisStaff"
                               , "voltaSpannerDuration"
                               , "whichBar"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "\\b(dedication|(sub){,2}title|poet|composer|meter|opus|arranger|instrument|piece|breakbefore|copyright|tagline|mutopia(title|composer|poet|opus|instrument)|date|enteredby|source|style|maintainer(Email|Web)?|moreInfo|lastupdated|texidoc|footer|(top|bottom|left|right)-margin|(foot|head)-separation|indent|short-indent|paper-(height|width)|horizontal-shift|line-width|(inner|outer)-margin|two-sided|binding-offset|(after|before|between)-title-space|between-system-(space|padding)|page-top-space|page-breaking-between-system-padding|(after|before|between)-title-spacing|between-(scores-)?system-spacing|bottom-system-spacing|top-title-spacing|top-system-spacing|page-breaking-between-system-spacing|system-count|(min-|max-)?systems-per-page|annotate-spacing|auto-first-page-number|blank-(last-)?page-force|first-page-number|page-count|page-limit-inter-system-space|page-limit-inter-system-space-factor|page-spacing-weight|print-all-headers|print-first-page-number|print-page-number|ragged-(bottom|right)|ragged-last(-bottom)?|system-separator-markup|force-assignment|input-encoding|output-scale|((even|odd)(Footer|Header)|(book|score|toc)Title|tocItem)Markup|system-count|(short-)?indent)\\b"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       True
                                       "\\b(dedication|(sub){,2}title|poet|composer|meter|opus|arranger|instrument|piece|breakbefore|copyright|tagline|mutopia(title|composer|poet|opus|instrument)|date|enteredby|source|style|maintainer(Email|Web)?|moreInfo|lastupdated|texidoc|footer|(top|bottom|left|right)-margin|(foot|head)-separation|indent|short-indent|paper-(height|width)|horizontal-shift|line-width|(inner|outer)-margin|two-sided|binding-offset|(after|before|between)-title-space|between-system-(space|padding)|page-top-space|page-breaking-between-system-padding|(after|before|between)-title-spacing|between-(scores-)?system-spacing|bottom-system-spacing|top-title-spacing|top-system-spacing|page-breaking-between-system-spacing|system-count|(min-|max-)?systems-per-page|annotate-spacing|auto-first-page-number|blank-(last-)?page-force|first-page-number|page-count|page-limit-inter-system-space|page-limit-inter-system-space-factor|page-spacing-weight|print-all-headers|print-first-page-number|print-page-number|ragged-(bottom|right)|ragged-last(-bottom)?|system-separator-markup|force-assignment|input-encoding|output-scale|((even|odd)(Footer|Header)|(book|score|toc)Title|tocItem)Markup|system-count|(short-)?indent)\\b")
                              , reCaseSensitive = True
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "barNumberAlignSymbol"
                               , "centralCPosition"
                               , "extraVerticalExtent"
                               , "fingerHorizontalDirection"
                               , "instr"
                               , "instrument"
                               , "keyAccidentalOrder"
                               , "minimumVerticalExtent"
                               , "rehearsalMarkAlignSymbol"
                               , "soloADue"
                               , "tupletNumberFormatFunction"
                               , "vocNam"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "default" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "set"
          , Context
              { cName = "set"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "ChoirStaff"
                               , "ChordNames"
                               , "CueVoice"
                               , "Devnull"
                               , "DrumStaff"
                               , "DrumVoice"
                               , "Dynamics"
                               , "FiguredBass"
                               , "FretBoards"
                               , "Global"
                               , "GrandStaff"
                               , "GregorianTranscriptionStaff"
                               , "GregorianTranscriptionVoice"
                               , "Lyrics"
                               , "MensuralStaff"
                               , "MensuralVoice"
                               , "NoteNames"
                               , "PianoStaff"
                               , "RhythmicStaff"
                               , "Score"
                               , "Staff"
                               , "StaffGroup"
                               , "TabStaff"
                               , "TabVoice"
                               , "Timing"
                               , "VaticanaStaff"
                               , "VaticanaVoice"
                               , "Voice"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet True [ "InnerChoirStaff" , "InnerStaffGroup" ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '.'
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "aDueText"
                               , "alignAboveContext"
                               , "alignBassFigureAccidentals"
                               , "alignBelowContext"
                               , "allowBeamBreak"
                               , "associatedVoice"
                               , "autoAccidentals"
                               , "autoBeamCheck"
                               , "autoBeamSettings"
                               , "autoBeaming"
                               , "autoCautionaries"
                               , "automaticBars"
                               , "barAlways"
                               , "barCheckSynchronize"
                               , "barNumberVisibility"
                               , "baseMoment"
                               , "bassFigureFormatFunction"
                               , "bassStaffProperties"
                               , "beamExceptions"
                               , "beatGrouping"
                               , "beatLength"
                               , "beatStructure"
                               , "chordChanges"
                               , "chordNameExceptions"
                               , "chordNameExceptionsFull"
                               , "chordNameExceptionsPartial"
                               , "chordNameFunction"
                               , "chordNameSeparator"
                               , "chordNoteNamer"
                               , "chordPrefixSpacer"
                               , "chordRootNamer"
                               , "clefGlyph"
                               , "clefOctavation"
                               , "clefPosition"
                               , "connectArpeggios"
                               , "countPercentRepeats"
                               , "createKeyOnClefChange"
                               , "createSpacing"
                               , "crescendoSpanner"
                               , "crescendoText"
                               , "currentBarNumber"
                               , "decrescendoSpanner"
                               , "decrescendoText"
                               , "defaultBarType"
                               , "doubleRepeatType"
                               , "doubleSlurs"
                               , "drumPitchTable"
                               , "drumStyleTable"
                               , "dynamicAbsoluteVolumeFunction"
                               , "explicitClefVisibility"
                               , "explicitKeySignatureVisibility"
                               , "extendersOverRests"
                               , "extraNatural"
                               , "figuredBassAlterationDirection"
                               , "figuredBassCenterContinuations"
                               , "figuredBassFormatter"
                               , "figuredBassPlusDirection"
                               , "fingeringOrientations"
                               , "firstClef"
                               , "followVoice"
                               , "fontSize"
                               , "forbidBreak"
                               , "forceClef"
                               , "gridInterval"
                               , "hairpinToBarline"
                               , "harmonicAccidentals"
                               , "highStringOne"
                               , "ignoreBarChecks"
                               , "ignoreFiguredBassRest"
                               , "ignoreMelismata"
                               , "implicitBassFigures"
                               , "implicitTimeSignatureVisibility"
                               , "instrumentCueName"
                               , "instrumentEqualizer"
                               , "instrumentName"
                               , "instrumentTransposition"
                               , "internalBarNumber"
                               , "keepAliveInterfaces"
                               , "keyAlterationOrder"
                               , "keySignature"
                               , "lyricMelismaAlignment"
                               , "majorSevenSymbol"
                               , "markFormatter"
                               , "maximumFretStretch"
                               , "measureLength"
                               , "measurePosition"
                               , "melismaBusyProperties"
                               , "metronomeMarkFormatter"
                               , "middleCClefPosition"
                               , "middleCOffset"
                               , "middleCPosition"
                               , "midiInstrument"
                               , "midiMaximumVolume"
                               , "midiMinimumVolume"
                               , "minimumFret"
                               , "minimumPageTurnLength"
                               , "minimumRepeatLengthForPageTurn"
                               , "noteToFretFunction"
                               , "ottavation"
                               , "output"
                               , "pedalSostenutoStrings"
                               , "pedalSostenutoStyle"
                               , "pedalSustainStrings"
                               , "pedalSustainStyle"
                               , "pedalUnaCordaStrings"
                               , "pedalUnaCordaStyle"
                               , "printKeyCancellation"
                               , "printOctaveNames"
                               , "printPartCombineTexts"
                               , "proportionalNotationDuration"
                               , "recordEventSequence"
                               , "rehearsalMark"
                               , "repeatCommands"
                               , "restNumberThreshold"
                               , "scriptDefinitions"
                               , "shapeNoteStyles"
                               , "shortInstrumentName"
                               , "shortVocalName"
                               , "skipBars"
                               , "skipTypesetting"
                               , "soloIIText"
                               , "soloText"
                               , "squashedPosition"
                               , "staffLineLayoutFunction"
                               , "stanza"
                               , "stemLeftBeamCount"
                               , "stemRightBeamCount"
                               , "stringNumberOrientations"
                               , "stringOneTopmost"
                               , "stringTunings"
                               , "strokeFingerOrientations"
                               , "subdivideBeams"
                               , "suggestAccidentals"
                               , "systemStartDelimiter"
                               , "systemStartDelimiterHierarchy"
                               , "tablatureFormat"
                               , "tempoUnitCount"
                               , "tempoUnitDuration"
                               , "tempoWholesPerMinute"
                               , "tieWaitForNote"
                               , "timeSignatureFraction"
                               , "timing"
                               , "tonic"
                               , "topLevelAlignment"
                               , "trebleStaffProperties"
                               , "tremoloFlags"
                               , "tupletFullLength"
                               , "tupletFullLengthNote"
                               , "tupletSpannerDuration"
                               , "useBassFigureExtenders"
                               , "verticallySpacedContexts"
                               , "vocalName"
                               , "voltaOnThisStaff"
                               , "voltaSpannerDuration"
                               , "whichBar"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = True
                              , keywordDelims =
                                  Data.Set.fromList "\t\n !%&'()*+,-./0123456789:;<=>?[\\]^_{|}~"
                              }
                            (makeWordSet
                               True
                               [ "barNumberAlignSymbol"
                               , "centralCPosition"
                               , "extraVerticalExtent"
                               , "fingerHorizontalDirection"
                               , "instr"
                               , "instrument"
                               , "keyAccidentalOrder"
                               , "minimumVerticalExtent"
                               , "rehearsalMarkAlignSymbol"
                               , "soloADue"
                               , "tupletNumberFormatFunction"
                               , "vocNam"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "[A-Za-z]+"
                              , reCompiled = Just (compileRegex True "[A-Za-z]+")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        , ( "string"
          , Context
              { cName = "string"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher = DetectChar '"'
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = Detect2Chars '\\' '\\'
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = Detect2Chars '\\' '"'
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = StringTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "tempo"
          , Context
              { cName = "tempo"
              , cSyntax = "LilyPond"
              , cRules =
                  [ Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\\\markup(lines)?(?![A-Za-z])"
                              , reCompiled =
                                  Just (compileRegex True "\\\\markup(lines)?(?![A-Za-z])")
                              , reCaseSensitive = True
                              }
                      , rAttribute = BaseNTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "LilyPond" , "markup" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\d+\\.*\\s*=\\s*\\d+"
                              , reCompiled = Just (compileRegex True "\\d+\\.*\\s*=\\s*\\d+")
                              , reCaseSensitive = True
                              }
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = IncludeRules ( "LilyPond" , "basic" )
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = True
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = True
              , cFallthroughContext = [ Pop ]
              , cDynamic = False
              }
          )
        ]
  , sAuthor = "Wilbert Berendsen (info@wilbertberendsen.nl)"
  , sVersion = "4"
  , sLicense = "LGPL"
  , sExtensions =
      [ "*.ly" , "*.LY" , "*.ily" , "*.ILY" , "*.lyi" , "*.LYI" ]
  , sStartingContext = "lilypond"
  }