module Text.Highlighter.Lexers.MySql (lexer) where

import Text.Regex.PCRE.Light
import Text.Highlighter.Types

lexer :: Lexer
lexer = Lexer
    { lName = "\77\121\83\81\76"
    , lAliases = ["\109\121\115\113\108"]
    , lExtensions = []
    , lMimetypes = ["\116\101\120\116\47\120\45\109\121\115\113\108"]
    , lStart = root'
    , lFlags = [caseless]
    }

multilineComments' :: TokenMatcher
multilineComments' =
    [ tokNext "\47\92\42" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101") (GoTo multilineComments')
    , tokNext "\92\42\47" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101") Pop
    , tok "\91\94\47\92\42\93\43" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101")
    , tok "\91\47\42\93" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101")
    ]

root' :: TokenMatcher
root' =
    [ tok "\92\115\43" (Arbitrary "\84\101\120\116")
    , tok "\40\35\124\45\45\92\115\43\41\46\42\63\92\110" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\83\105\110\103\108\101")
    , tokNext "\47\92\42" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101") (GoTo multilineComments')
    , tok "\91\48\45\57\93\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114" :. Arbitrary "\73\110\116\101\103\101\114")
    , tok "\91\48\45\57\93\42\92\46\91\48\45\57\93\43\40\101\91\43\45\93\91\48\45\57\93\43\41" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114" :. Arbitrary "\70\108\111\97\116")
    , tok "\39\40\39\39\124\91\94\39\93\41\42\39" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\83\105\110\103\108\101")
    , tok "\34\40\34\34\124\91\94\34\93\41\42\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\68\111\117\98\108\101")
    , tok "\96\40\96\96\124\91\94\96\93\41\42\96" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\83\121\109\98\111\108")
    , tok "\91\43\42\47\60\62\61\126\33\64\35\37\94\38\124\96\63\94\45\93" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tok "\92\98\40\116\105\110\121\105\110\116\124\115\109\97\108\108\105\110\116\124\109\101\100\105\117\109\105\110\116\124\105\110\116\124\105\110\116\101\103\101\114\124\98\105\103\105\110\116\124\100\97\116\101\124\100\97\116\101\116\105\109\101\124\116\105\109\101\124\98\105\116\124\98\111\111\108\124\116\105\110\121\116\101\120\116\124\109\101\100\105\117\109\116\101\120\116\124\108\111\110\103\116\101\120\116\124\116\101\120\116\124\116\105\110\121\98\108\111\98\124\109\101\100\105\117\109\98\108\111\98\124\108\111\110\103\98\108\111\98\124\98\108\111\98\124\102\108\111\97\116\124\100\111\117\98\108\101\124\100\111\117\98\108\101\92\115\43\112\114\101\99\105\115\105\111\110\124\114\101\97\108\124\110\117\109\101\114\105\99\124\100\101\99\124\100\101\99\105\109\97\108\124\116\105\109\101\115\116\97\109\112\124\121\101\97\114\124\99\104\97\114\124\118\97\114\99\104\97\114\124\118\97\114\98\105\110\97\114\121\124\118\97\114\99\104\97\114\97\99\116\101\114\124\101\110\117\109\124\115\101\116\41\40\92\98\92\115\42\41\40\92\40\41\63" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\84\121\112\101"), (Arbitrary "\84\101\120\116"), (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")])
    , tok "\92\98\40\97\100\100\124\97\108\108\124\97\108\116\101\114\124\97\110\97\108\121\122\101\124\97\110\100\124\97\115\124\97\115\99\124\97\115\101\110\115\105\116\105\118\101\124\98\101\102\111\114\101\124\98\101\116\119\101\101\110\124\98\105\103\105\110\116\124\98\105\110\97\114\121\124\98\108\111\98\124\98\111\116\104\124\98\121\124\99\97\108\108\124\99\97\115\99\97\100\101\124\99\97\115\101\124\99\104\97\110\103\101\124\99\104\97\114\124\99\104\97\114\97\99\116\101\114\124\99\104\101\99\107\124\99\111\108\108\97\116\101\124\99\111\108\117\109\110\124\99\111\110\100\105\116\105\111\110\124\99\111\110\115\116\114\97\105\110\116\124\99\111\110\116\105\110\117\101\124\99\111\110\118\101\114\116\124\99\114\101\97\116\101\124\99\114\111\115\115\124\99\117\114\114\101\110\116\95\100\97\116\101\124\99\117\114\114\101\110\116\95\116\105\109\101\124\99\117\114\114\101\110\116\95\116\105\109\101\115\116\97\109\112\124\99\117\114\114\101\110\116\95\117\115\101\114\124\99\117\114\115\111\114\124\100\97\116\97\98\97\115\101\124\100\97\116\97\98\97\115\101\115\124\100\97\121\95\104\111\117\114\124\100\97\121\95\109\105\99\114\111\115\101\99\111\110\100\124\100\97\121\95\109\105\110\117\116\101\124\100\97\121\95\115\101\99\111\110\100\124\100\101\99\124\100\101\99\105\109\97\108\124\100\101\99\108\97\114\101\124\100\101\102\97\117\108\116\124\100\101\108\97\121\101\100\124\100\101\108\101\116\101\124\100\101\115\99\124\100\101\115\99\114\105\98\101\124\100\101\116\101\114\109\105\110\105\115\116\105\99\124\100\105\115\116\105\110\99\116\124\100\105\115\116\105\110\99\116\114\111\119\124\100\105\118\124\100\111\117\98\108\101\124\100\114\111\112\124\100\117\97\108\124\101\97\99\104\124\101\108\115\101\124\101\108\115\101\105\102\124\101\110\99\108\111\115\101\100\124\101\115\99\97\112\101\100\124\101\120\105\115\116\115\124\101\120\105\116\124\101\120\112\108\97\105\110\124\102\101\116\99\104\124\102\108\111\97\116\124\102\108\111\97\116\52\124\102\108\111\97\116\56\124\102\111\114\124\102\111\114\99\101\124\102\111\114\101\105\103\110\124\102\114\111\109\124\102\117\108\108\116\101\120\116\124\103\114\97\110\116\124\103\114\111\117\112\124\104\97\118\105\110\103\124\104\105\103\104\95\112\114\105\111\114\105\116\121\124\104\111\117\114\95\109\105\99\114\111\115\101\99\111\110\100\124\104\111\117\114\95\109\105\110\117\116\101\124\104\111\117\114\95\115\101\99\111\110\100\124\105\102\124\105\103\110\111\114\101\124\105\110\124\105\110\100\101\120\124\105\110\102\105\108\101\124\105\110\110\101\114\124\105\110\111\117\116\124\105\110\115\101\110\115\105\116\105\118\101\124\105\110\115\101\114\116\124\105\110\116\124\105\110\116\49\124\105\110\116\50\124\105\110\116\51\124\105\110\116\52\124\105\110\116\56\124\105\110\116\101\103\101\114\124\105\110\116\101\114\118\97\108\124\105\110\116\111\124\105\115\124\105\116\101\114\97\116\101\124\106\111\105\110\124\107\101\121\124\107\101\121\115\124\107\105\108\108\124\108\101\97\100\105\110\103\124\108\101\97\118\101\124\108\101\102\116\124\108\105\107\101\124\108\105\109\105\116\124\108\105\110\101\115\124\108\111\97\100\124\108\111\99\97\108\116\105\109\101\124\108\111\99\97\108\116\105\109\101\115\116\97\109\112\124\108\111\99\107\124\108\111\110\103\124\108\111\111\112\124\108\111\119\95\112\114\105\111\114\105\116\121\124\109\97\116\99\104\124\109\105\110\117\116\101\95\109\105\99\114\111\115\101\99\111\110\100\124\109\105\110\117\116\101\95\115\101\99\111\110\100\124\109\111\100\124\109\111\100\105\102\105\101\115\124\110\97\116\117\114\97\108\124\110\111\95\119\114\105\116\101\95\116\111\95\98\105\110\108\111\103\124\110\111\116\124\110\117\109\101\114\105\99\124\111\110\124\111\112\116\105\109\105\122\101\124\111\112\116\105\111\110\124\111\112\116\105\111\110\97\108\108\121\124\111\114\124\111\114\100\101\114\124\111\117\116\124\111\117\116\101\114\124\111\117\116\102\105\108\101\124\112\114\101\99\105\115\105\111\110\124\112\114\105\109\97\114\121\124\112\114\111\99\101\100\117\114\101\124\112\117\114\103\101\124\114\97\105\100\48\124\114\101\97\100\124\114\101\97\100\115\124\114\101\97\108\124\114\101\102\101\114\101\110\99\101\115\124\114\101\103\101\120\112\124\114\101\108\101\97\115\101\124\114\101\110\97\109\101\124\114\101\112\101\97\116\124\114\101\112\108\97\99\101\124\114\101\113\117\105\114\101\124\114\101\115\116\114\105\99\116\124\114\101\116\117\114\110\124\114\101\118\111\107\101\124\114\105\103\104\116\124\114\108\105\107\101\124\115\99\104\101\109\97\124\115\99\104\101\109\97\115\124\115\101\99\111\110\100\95\109\105\99\114\111\115\101\99\111\110\100\124\115\101\108\101\99\116\124\115\101\110\115\105\116\105\118\101\124\115\101\112\97\114\97\116\111\114\124\115\101\116\124\115\104\111\119\124\115\109\97\108\108\105\110\116\124\115\111\110\97\109\101\124\115\112\97\116\105\97\108\124\115\112\101\99\105\102\105\99\124\115\113\108\124\115\113\108\95\98\105\103\95\114\101\115\117\108\116\124\115\113\108\95\99\97\108\99\95\102\111\117\110\100\95\114\111\119\115\124\115\113\108\95\115\109\97\108\108\95\114\101\115\117\108\116\124\115\113\108\101\120\99\101\112\116\105\111\110\124\115\113\108\115\116\97\116\101\124\115\113\108\119\97\114\110\105\110\103\124\115\115\108\124\115\116\97\114\116\105\110\103\124\115\116\114\97\105\103\104\116\95\106\111\105\110\124\116\97\98\108\101\124\116\101\114\109\105\110\97\116\101\100\124\116\104\101\110\124\116\111\124\116\114\97\105\108\105\110\103\124\116\114\105\103\103\101\114\124\117\110\100\111\124\117\110\105\111\110\124\117\110\105\113\117\101\124\117\110\108\111\99\107\124\117\110\115\105\103\110\101\100\124\117\112\100\97\116\101\124\117\115\97\103\101\124\117\115\101\124\117\115\105\110\103\124\117\116\99\95\100\97\116\101\124\117\116\99\95\116\105\109\101\124\117\116\99\95\116\105\109\101\115\116\97\109\112\124\118\97\108\117\101\115\124\118\97\114\121\105\110\103\124\119\104\101\110\124\119\104\101\114\101\124\119\104\105\108\101\124\119\105\116\104\124\119\114\105\116\101\124\120\53\48\57\124\120\111\114\124\121\101\97\114\95\109\111\110\116\104\124\122\101\114\111\102\105\108\108\41\92\98" (Arbitrary "\75\101\121\119\111\114\100")
    , tok "\92\98\40\97\117\116\111\95\105\110\99\114\101\109\101\110\116\124\101\110\103\105\110\101\124\99\104\97\114\115\101\116\124\116\97\98\108\101\115\41\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\80\115\101\117\100\111")
    , tok "\40\116\114\117\101\124\102\97\108\115\101\124\110\117\108\108\41" (Arbitrary "\78\97\109\101" :. Arbitrary "\67\111\110\115\116\97\110\116")
    , tok "\40\91\97\45\122\65\45\90\95\93\91\97\45\122\65\45\90\48\45\57\95\93\42\41\40\92\115\42\41\40\92\40\41" (ByGroups [(Arbitrary "\78\97\109\101" :. Arbitrary "\70\117\110\99\116\105\111\110"), (Arbitrary "\84\101\120\116"), (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")])
    , tok "\91\97\45\122\65\45\90\95\93\91\97\45\122\65\45\90\48\45\57\95\93\42" (Arbitrary "\78\97\109\101")
    , tok "\64\91\65\45\90\97\45\122\48\45\57\93\42\91\46\95\93\42\91\65\45\90\97\45\122\48\45\57\93\42" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101")
    , tok "\91\59\58\40\41\92\91\92\93\44\92\46\93" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")
    ]