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

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

syntax :: Syntax
syntax = Syntax
  { sName = "SQL (MySQL)"
  , sFilename = "sql-mysql.xml"
  , sShortname = "SqlMysql"
  , sContexts =
      fromList
        [ ( "MultiLineComment"
          , Context
              { cName = "MultiLineComment"
              , cSyntax = "SQL (MySQL)"
              , cRules =
                  [ Rule
                      { rMatcher = LineContinue
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = Detect2Chars '*' '/'
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = CommentTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "Name"
          , Context
              { cName = "Name"
              , cSyntax = "SQL (MySQL)"
              , cRules =
                  [ Rule
                      { rMatcher = LineContinue
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = HlCStringChar
                      , rAttribute = CharTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '`'
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = StringTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "Normal"
          , Context
              { cName = "Normal"
              , cSyntax = "SQL (MySQL)"
              , cRules =
                  [ Rule
                      { rMatcher = DetectSpaces
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "SET(?=\\s*\\()"
                              , reCompiled = Just (compileRegex False "SET(?=\\s*\\()")
                              , reCaseSensitive = False
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "\\bCHARACTER SET\\b"
                              , reCompiled = Just (compileRegex False "\\bCHARACTER SET\\b")
                              , reCaseSensitive = False
                              }
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = False
                              , keywordDelims = Data.Set.fromList "\t\n %&(),;?[\\]{}"
                              }
                            (makeWordSet
                               False
                               [ "ACCESS"
                               , "ADD"
                               , "ALL"
                               , "ALTER"
                               , "ANALYZE"
                               , "AND"
                               , "AS"
                               , "ASC"
                               , "AUTO_INCREMENT"
                               , "BDB"
                               , "BERKELEYDB"
                               , "BETWEEN"
                               , "BOTH"
                               , "BY"
                               , "CASCADE"
                               , "CASE"
                               , "CHANGE"
                               , "CHARSET"
                               , "COLUMN"
                               , "COLUMNS"
                               , "CONSTRAINT"
                               , "CREATE"
                               , "CROSS"
                               , "CURRENT_DATE"
                               , "CURRENT_TIME"
                               , "CURRENT_TIMESTAMP"
                               , "DATABASE"
                               , "DATABASES"
                               , "DAY_HOUR"
                               , "DAY_MINUTE"
                               , "DAY_SECOND"
                               , "DEC"
                               , "DEFAULT"
                               , "DELAYED"
                               , "DELETE"
                               , "DESC"
                               , "DESCRIBE"
                               , "DISTINCT"
                               , "DISTINCTROW"
                               , "DROP"
                               , "ELSE"
                               , "ENCLOSED"
                               , "ESCAPED"
                               , "EXISTS"
                               , "EXPLAIN"
                               , "FIELDS"
                               , "FOR"
                               , "FOREIGN"
                               , "FROM"
                               , "FULLTEXT"
                               , "FUNCTION"
                               , "GRANT"
                               , "GROUP"
                               , "HAVING"
                               , "HIGH_PRIORITY"
                               , "IF"
                               , "IGNORE"
                               , "IN"
                               , "INDEX"
                               , "INFILE"
                               , "INNER"
                               , "INNODB"
                               , "INSERT"
                               , "INTERVAL"
                               , "INTO"
                               , "IS"
                               , "JOIN"
                               , "KEY"
                               , "KEYS"
                               , "KILL"
                               , "LEADING"
                               , "LEFT"
                               , "LIKE"
                               , "LIMIT"
                               , "LINES"
                               , "LOAD"
                               , "LOCK"
                               , "LOW_PRIORITY"
                               , "MASTER_SERVER_ID"
                               , "MATCH"
                               , "MRG_MYISAM"
                               , "NATIONAL"
                               , "NATURAL"
                               , "NOT"
                               , "NULL"
                               , "NUMERIC"
                               , "ON"
                               , "OPTIMIZE"
                               , "OPTION"
                               , "OPTIONALLY"
                               , "OR"
                               , "ORDER"
                               , "OUTER"
                               , "OUTFILE"
                               , "PARTIAL"
                               , "PRECISION"
                               , "PRIMARY"
                               , "PRIVILEGES"
                               , "PROCEDURE"
                               , "PURGE"
                               , "READ"
                               , "REFERENCES"
                               , "REGEXP"
                               , "RENAME"
                               , "REPLACE"
                               , "REQUIRE"
                               , "RESTRICT"
                               , "RETURNS"
                               , "REVOKE"
                               , "RIGHT"
                               , "RLIKE"
                               , "SELECT"
                               , "SET"
                               , "SHOW"
                               , "SONAME"
                               , "SQL_BIG_RESULT"
                               , "SQL_CALC_FOUND_ROWS"
                               , "SQL_SMALL_RESULT"
                               , "SSL"
                               , "STARTING"
                               , "STRAIGHT_JOIN"
                               , "STRIPED"
                               , "TABLE"
                               , "TABLES"
                               , "TERMINATED"
                               , "THEN"
                               , "TO"
                               , "TRAILING"
                               , "TRUNCATE"
                               , "TYPE"
                               , "UNION"
                               , "UNIQUE"
                               , "UNLOCK"
                               , "UNSIGNED"
                               , "UPDATE"
                               , "USAGE"
                               , "USE"
                               , "USER_RESOURCES"
                               , "USING"
                               , "VALUES"
                               , "VARYING"
                               , "WHEN"
                               , "WHERE"
                               , "WHILE"
                               , "WITH"
                               , "WRITE"
                               , "XOR"
                               , "YEAR_MONTH"
                               , "ZEROFILL"
                               ])
                      , rAttribute = KeywordTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = False
                              , keywordDelims = Data.Set.fromList "\t\n %&(),;?[\\]{}"
                              }
                            (makeWordSet
                               False
                               [ "!="
                               , "*"
                               , "**"
                               , "+"
                               , "-"
                               , ".."
                               , "/"
                               , ":="
                               , "<"
                               , "<="
                               , "<>"
                               , "="
                               , "=>"
                               , ">"
                               , ">="
                               , "^="
                               , "||"
                               , "~="
                               ])
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = False
                              , keywordDelims = Data.Set.fromList "\t\n %&(),;?[\\]{}"
                              }
                            (makeWordSet
                               False
                               [ "ABS"
                               , "ACOS"
                               , "ADDDATE"
                               , "AES_DECRYPT"
                               , "AES_ENCRYPT"
                               , "ASCII"
                               , "ASIN"
                               , "ATAN"
                               , "ATAN2"
                               , "AVG"
                               , "BENCHMARK"
                               , "BIN"
                               , "BIT_AND"
                               , "BIT_COUNT"
                               , "BIT_LENGTH"
                               , "BIT_OR"
                               , "CAST"
                               , "CEILING"
                               , "CHAR"
                               , "CHAR_LENGTH"
                               , "CHARACTER_LENGTH"
                               , "CONCAT"
                               , "CONCAT_WS"
                               , "CONNECTION_ID"
                               , "CONV"
                               , "CONVERT"
                               , "COS"
                               , "COT"
                               , "COUNT"
                               , "CURDATE"
                               , "CURRENT_DATE"
                               , "CURRENT_TIME"
                               , "CURRENT_TIMESTAMP"
                               , "CURTIME"
                               , "DATABASE"
                               , "DATE_ADD"
                               , "DATE_FORMAT"
                               , "DATE_SUB"
                               , "DAYNAME"
                               , "DAYOFMONTH"
                               , "DAYOFWEEK"
                               , "DAYOFYEAR"
                               , "DECODE"
                               , "DEGREES"
                               , "DES_DECRYPT"
                               , "DES_ENCRYPT"
                               , "ELT"
                               , "ENCODE"
                               , "ENCRYPT"
                               , "EXP"
                               , "EXPORT_SET"
                               , "EXTRACT"
                               , "FIELD"
                               , "FIND_IN_SET"
                               , "FLOOR"
                               , "FORMAT"
                               , "FOUND_ROWS"
                               , "FROM_DAYS"
                               , "FROM_UNIXTIME"
                               , "GET_LOCK"
                               , "GREATEST"
                               , "HEX"
                               , "HOUR"
                               , "INET_ATON"
                               , "INET_NTOA"
                               , "INSERT"
                               , "INSTR"
                               , "IS_FREE_LOCK"
                               , "LAST_INSERT_ID"
                               , "LCASE"
                               , "LEAST"
                               , "LEFT"
                               , "LENGTH"
                               , "LN"
                               , "LOAD_FILE"
                               , "LOCATE"
                               , "LOG"
                               , "LOG10"
                               , "LOG2"
                               , "LOWER"
                               , "LPAD"
                               , "LTRIM"
                               , "MAKE_SET"
                               , "MASTER_POS_WAIT"
                               , "MAX"
                               , "MD5"
                               , "MID"
                               , "MIN"
                               , "MINUTE"
                               , "MOD"
                               , "MONTH"
                               , "MONTHNAME"
                               , "NOW"
                               , "OCT"
                               , "OCTET_LENGTH"
                               , "ORD"
                               , "PASSWORD"
                               , "PERIOD_ADD"
                               , "PERIOD_DIFF"
                               , "PI"
                               , "POSITION"
                               , "POW"
                               , "POWER"
                               , "QUARTER"
                               , "QUOTE"
                               , "RADIANS"
                               , "RAND"
                               , "RELEASE_LOCK"
                               , "REPEAT"
                               , "REPLACE"
                               , "REVERSE"
                               , "RIGHT"
                               , "ROUND"
                               , "RPAD"
                               , "RTRIM"
                               , "SEC_TO_TIME"
                               , "SECOND"
                               , "SESSION_USER"
                               , "SHA"
                               , "SHA1"
                               , "SIGN"
                               , "SIN"
                               , "SOUNDEX"
                               , "SPACE"
                               , "SQRT"
                               , "STD"
                               , "STDDEV"
                               , "SUBDATE"
                               , "SUBSTRING"
                               , "SUBSTRING_INDEX"
                               , "SUM"
                               , "SYSDATE"
                               , "SYSTEM_USER"
                               , "TAN"
                               , "TIME_FORMAT"
                               , "TIME_TO_SEC"
                               , "TO_DAYS"
                               , "TRIM"
                               , "UCASE"
                               , "UNIX_TIMESTAMP"
                               , "UPPER"
                               , "USER"
                               , "VERSION"
                               , "WEEK"
                               , "WEEKDAY"
                               , "YEAR"
                               , "YEARWEEK"
                               ])
                      , rAttribute = FunctionTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          Keyword
                            KeywordAttr
                              { keywordCaseSensitive = False
                              , keywordDelims = Data.Set.fromList "\t\n %&(),;?[\\]{}"
                              }
                            (makeWordSet
                               False
                               [ "BIGINT"
                               , "BINARY"
                               , "BIT"
                               , "BLOB"
                               , "BOOL"
                               , "BOOLEAN"
                               , "CHAR"
                               , "CHARACTER"
                               , "DATE"
                               , "DATETIME"
                               , "DEC"
                               , "DECIMAL"
                               , "DOUBLE"
                               , "ENUM"
                               , "FIXED"
                               , "FLOAT"
                               , "INT"
                               , "INTEGER"
                               , "LONG"
                               , "LONGBLOB"
                               , "LONGTEXT"
                               , "MEDIUMBLOB"
                               , "MEDIUMINT"
                               , "MEDIUMTEXT"
                               , "MIDDLEINT"
                               , "NUMERIC"
                               , "REAL"
                               , "SERIAL"
                               , "SMALLINT"
                               , "TEXT"
                               , "TIME"
                               , "TIMESTAMP"
                               , "TINYBLOB"
                               , "TINYINT"
                               , "TINYTEXT"
                               , "VARBINARY"
                               , "VARCHAR"
                               , "YEAR"
                               ])
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectIdentifier
                      , rAttribute = NormalTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString =
                                  "%(?:bulk_(?:exceptions|rowcount)|found|isopen|notfound|rowcount|rowtype|type)\\b"
                              , reCompiled =
                                  Just
                                    (compileRegex
                                       False
                                       "%(?:bulk_(?:exceptions|rowcount)|found|isopen|notfound|rowcount|rowtype|type)\\b")
                              , reCaseSensitive = False
                              }
                      , rAttribute = DataTypeTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = HlCHex
                      , rAttribute = BaseNTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = Float
                      , rAttribute = FloatTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = Int
                      , rAttribute = DecValTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '\''
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "SQL (MySQL)" , "String" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '"'
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "SQL (MySQL)" , "String2" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '`'
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "SQL (MySQL)" , "Name" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '#'
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "SQL (MySQL)" , "SingleLineComment" ) ]
                      }
                  , Rule
                      { rMatcher = Detect2Chars '-' '-'
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "SQL (MySQL)" , "SingleLineComment" ) ]
                      }
                  , Rule
                      { rMatcher = Detect2Chars '/' '*'
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Push ( "SQL (MySQL)" , "MultiLineComment" ) ]
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "rem\\b"
                              , reCompiled = Just (compileRegex False "rem\\b")
                              , reCaseSensitive = False
                              }
                      , rAttribute = CommentTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Just 0
                      , rContextSwitch = [ Push ( "SQL (MySQL)" , "SingleLineComment" ) ]
                      }
                  , Rule
                      { rMatcher = AnyChar ":&"
                      , rAttribute = CharTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "/$"
                              , reCompiled = Just (compileRegex False "/$")
                              , reCaseSensitive = False
                              }
                      , rAttribute = CharTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Just 0
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher =
                          RegExpr
                            RE
                              { reString = "@@?[^@ \\t\\r\\n]"
                              , reCompiled = Just (compileRegex False "@@?[^@ \\t\\r\\n]")
                              , reCaseSensitive = False
                              }
                      , rAttribute = OtherTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Just 0
                      , rContextSwitch = [ Push ( "SQL (MySQL)" , "Preprocessor" ) ]
                      }
                  , Rule
                      { rMatcher = DetectChar '.'
                      , rAttribute = CharTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  ]
              , cAttribute = NormalTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "Preprocessor"
          , Context
              { cName = "Preprocessor"
              , cSyntax = "SQL (MySQL)"
              , cRules = []
              , cAttribute = OtherTok
              , cLineEmptyContext = []
              , cLineEndContext = [ Pop ]
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "SingleLineComment"
          , Context
              { cName = "SingleLineComment"
              , cSyntax = "SQL (MySQL)"
              , cRules = []
              , cAttribute = CommentTok
              , cLineEmptyContext = []
              , cLineEndContext = [ Pop ]
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "String"
          , Context
              { cName = "String"
              , cSyntax = "SQL (MySQL)"
              , cRules =
                  [ Rule
                      { rMatcher = LineContinue
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = HlCStringChar
                      , rAttribute = CharTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '&'
                      , rAttribute = CharTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '\''
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = StringTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        , ( "String2"
          , Context
              { cName = "String2"
              , cSyntax = "SQL (MySQL)"
              , cRules =
                  [ Rule
                      { rMatcher = LineContinue
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  , Rule
                      { rMatcher = HlCStringChar
                      , rAttribute = CharTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '&'
                      , rAttribute = CharTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = []
                      }
                  , Rule
                      { rMatcher = DetectChar '"'
                      , rAttribute = StringTok
                      , rIncludeAttribute = False
                      , rDynamic = False
                      , rCaseSensitive = False
                      , rChildren = []
                      , rLookahead = False
                      , rFirstNonspace = False
                      , rColumn = Nothing
                      , rContextSwitch = [ Pop ]
                      }
                  ]
              , cAttribute = StringTok
              , cLineEmptyContext = []
              , cLineEndContext = []
              , cLineBeginContext = []
              , cFallthrough = False
              , cFallthroughContext = []
              , cDynamic = False
              }
          )
        ]
  , sAuthor = "Shane Wright (me@shanewright.co.uk)"
  , sVersion = "2"
  , sLicense = ""
  , sExtensions = [ "*.sql" , "*.SQL" , "*.ddl" , "*.DDL" ]
  , sStartingContext = "Normal"
  }