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

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

lexer :: Lexer
lexer = Lexer
    { lName = "\83\81\76"
    , lAliases = ["\115\113\108"]
    , lExtensions = ["\46\115\113\108"]
    , lMimetypes = ["\116\101\120\116\47\120\45\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 "\45\45\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 "\40\65\66\79\82\84\124\65\66\83\124\65\66\83\79\76\85\84\69\124\65\67\67\69\83\83\124\65\68\65\124\65\68\68\124\65\68\77\73\78\124\65\70\84\69\82\124\65\71\71\82\69\71\65\84\69\124\65\76\73\65\83\124\65\76\76\124\65\76\76\79\67\65\84\69\124\65\76\84\69\82\124\65\78\65\76\89\83\69\124\65\78\65\76\89\90\69\124\65\78\68\124\65\78\89\124\65\82\69\124\65\83\124\65\83\67\124\65\83\69\78\83\73\84\73\86\69\124\65\83\83\69\82\84\73\79\78\124\65\83\83\73\71\78\77\69\78\84\124\65\83\89\77\77\69\84\82\73\67\124\65\84\124\65\84\79\77\73\67\124\65\85\84\72\79\82\73\90\65\84\73\79\78\124\65\86\71\124\66\65\67\75\87\65\82\68\124\66\69\70\79\82\69\124\66\69\71\73\78\124\66\69\84\87\69\69\78\124\66\73\84\86\65\82\124\66\73\84\95\76\69\78\71\84\72\124\66\79\84\72\124\66\82\69\65\68\84\72\124\66\89\124\67\124\67\65\67\72\69\124\67\65\76\76\124\67\65\76\76\69\68\124\67\65\82\68\73\78\65\76\73\84\89\124\67\65\83\67\65\68\69\124\67\65\83\67\65\68\69\68\124\67\65\83\69\124\67\65\83\84\124\67\65\84\65\76\79\71\124\67\65\84\65\76\79\71\95\78\65\77\69\124\67\72\65\73\78\124\67\72\65\82\65\67\84\69\82\73\83\84\73\67\83\124\67\72\65\82\65\67\84\69\82\95\76\69\78\71\84\72\124\67\72\65\82\65\67\84\69\82\95\83\69\84\95\67\65\84\65\76\79\71\124\67\72\65\82\65\67\84\69\82\95\83\69\84\95\78\65\77\69\124\67\72\65\82\65\67\84\69\82\95\83\69\84\95\83\67\72\69\77\65\124\67\72\65\82\95\76\69\78\71\84\72\124\67\72\69\67\75\124\67\72\69\67\75\69\68\124\67\72\69\67\75\80\79\73\78\84\124\67\76\65\83\83\124\67\76\65\83\83\95\79\82\73\71\73\78\124\67\76\79\66\124\67\76\79\83\69\124\67\76\85\83\84\69\82\124\67\79\65\76\83\69\67\69\124\67\79\66\79\76\124\67\79\76\76\65\84\69\124\67\79\76\76\65\84\73\79\78\124\67\79\76\76\65\84\73\79\78\95\67\65\84\65\76\79\71\124\67\79\76\76\65\84\73\79\78\95\78\65\77\69\124\67\79\76\76\65\84\73\79\78\95\83\67\72\69\77\65\124\67\79\76\85\77\78\124\67\79\76\85\77\78\95\78\65\77\69\124\67\79\77\77\65\78\68\95\70\85\78\67\84\73\79\78\124\67\79\77\77\65\78\68\95\70\85\78\67\84\73\79\78\95\67\79\68\69\124\67\79\77\77\69\78\84\124\67\79\77\77\73\84\124\67\79\77\77\73\84\84\69\68\124\67\79\77\80\76\69\84\73\79\78\124\67\79\78\68\73\84\73\79\78\95\78\85\77\66\69\82\124\67\79\78\78\69\67\84\124\67\79\78\78\69\67\84\73\79\78\124\67\79\78\78\69\67\84\73\79\78\95\78\65\77\69\124\67\79\78\83\84\82\65\73\78\84\124\67\79\78\83\84\82\65\73\78\84\83\124\67\79\78\83\84\82\65\73\78\84\95\67\65\84\65\76\79\71\124\67\79\78\83\84\82\65\73\78\84\95\78\65\77\69\124\67\79\78\83\84\82\65\73\78\84\95\83\67\72\69\77\65\124\67\79\78\83\84\82\85\67\84\79\82\124\67\79\78\84\65\73\78\83\124\67\79\78\84\73\78\85\69\124\67\79\78\86\69\82\83\73\79\78\124\67\79\78\86\69\82\84\124\67\79\80\89\124\67\79\82\82\69\83\80\79\78\84\73\78\71\124\67\79\85\78\84\124\67\82\69\65\84\69\124\67\82\69\65\84\69\68\66\124\67\82\69\65\84\69\85\83\69\82\124\67\82\79\83\83\124\67\85\66\69\124\67\85\82\82\69\78\84\124\67\85\82\82\69\78\84\95\68\65\84\69\124\67\85\82\82\69\78\84\95\80\65\84\72\124\67\85\82\82\69\78\84\95\82\79\76\69\124\67\85\82\82\69\78\84\95\84\73\77\69\124\67\85\82\82\69\78\84\95\84\73\77\69\83\84\65\77\80\124\67\85\82\82\69\78\84\95\85\83\69\82\124\67\85\82\83\79\82\124\67\85\82\83\79\82\95\78\65\77\69\124\67\89\67\76\69\124\68\65\84\65\124\68\65\84\65\66\65\83\69\124\68\65\84\69\84\73\77\69\95\73\78\84\69\82\86\65\76\95\67\79\68\69\124\68\65\84\69\84\73\77\69\95\73\78\84\69\82\86\65\76\95\80\82\69\67\73\83\73\79\78\124\68\65\89\124\68\69\65\76\76\79\67\65\84\69\124\68\69\67\76\65\82\69\124\68\69\70\65\85\76\84\124\68\69\70\65\85\76\84\83\124\68\69\70\69\82\82\65\66\76\69\124\68\69\70\69\82\82\69\68\124\68\69\70\73\78\69\68\124\68\69\70\73\78\69\82\124\68\69\76\69\84\69\124\68\69\76\73\77\73\84\69\82\124\68\69\76\73\77\73\84\69\82\83\124\68\69\82\69\70\124\68\69\83\67\124\68\69\83\67\82\73\66\69\124\68\69\83\67\82\73\80\84\79\82\124\68\69\83\84\82\79\89\124\68\69\83\84\82\85\67\84\79\82\124\68\69\84\69\82\77\73\78\73\83\84\73\67\124\68\73\65\71\78\79\83\84\73\67\83\124\68\73\67\84\73\79\78\65\82\89\124\68\73\83\67\79\78\78\69\67\84\124\68\73\83\80\65\84\67\72\124\68\73\83\84\73\78\67\84\124\68\79\124\68\79\77\65\73\78\124\68\82\79\80\124\68\89\78\65\77\73\67\124\68\89\78\65\77\73\67\95\70\85\78\67\84\73\79\78\124\68\89\78\65\77\73\67\95\70\85\78\67\84\73\79\78\95\67\79\68\69\124\69\65\67\72\124\69\76\83\69\124\69\78\67\79\68\73\78\71\124\69\78\67\82\89\80\84\69\68\124\69\78\68\124\69\78\68\45\69\88\69\67\124\69\81\85\65\76\83\124\69\83\67\65\80\69\124\69\86\69\82\89\124\69\88\67\69\80\84\124\69\83\67\69\80\84\73\79\78\124\69\88\67\76\85\68\73\78\71\124\69\88\67\76\85\83\73\86\69\124\69\88\69\67\124\69\88\69\67\85\84\69\124\69\88\73\83\84\73\78\71\124\69\88\73\83\84\83\124\69\88\80\76\65\73\78\124\69\88\84\69\82\78\65\76\124\69\88\84\82\65\67\84\124\70\65\76\83\69\124\70\69\84\67\72\124\70\73\78\65\76\124\70\73\82\83\84\124\70\79\82\124\70\79\82\67\69\124\70\79\82\69\73\71\78\124\70\79\82\84\82\65\78\124\70\79\82\87\65\82\68\124\70\79\85\78\68\124\70\82\69\69\124\70\82\69\69\90\69\124\70\82\79\77\124\70\85\76\76\124\70\85\78\67\84\73\79\78\124\71\124\71\69\78\69\82\65\76\124\71\69\78\69\82\65\84\69\68\124\71\69\84\124\71\76\79\66\65\76\124\71\79\124\71\79\84\79\124\71\82\65\78\84\124\71\82\65\78\84\69\68\124\71\82\79\85\80\124\71\82\79\85\80\73\78\71\124\72\65\78\68\76\69\82\124\72\65\86\73\78\71\124\72\73\69\82\65\82\67\72\89\124\72\79\76\68\124\72\79\83\84\124\73\68\69\78\84\73\84\89\124\73\71\78\79\82\69\124\73\76\73\75\69\124\73\77\77\69\68\73\65\84\69\124\73\77\77\85\84\65\66\76\69\124\73\77\80\76\69\77\69\78\84\65\84\73\79\78\124\73\77\80\76\73\67\73\84\124\73\78\124\73\78\67\76\85\68\73\78\71\124\73\78\67\82\69\77\69\78\84\124\73\78\68\69\88\124\73\78\68\73\84\67\65\84\79\82\124\73\78\70\73\88\124\73\78\72\69\82\73\84\83\124\73\78\73\84\73\65\76\73\90\69\124\73\78\73\84\73\65\76\76\89\124\73\78\78\69\82\124\73\78\79\85\84\124\73\78\80\85\84\124\73\78\83\69\78\83\73\84\73\86\69\124\73\78\83\69\82\84\124\73\78\83\84\65\78\84\73\65\66\76\69\124\73\78\83\84\69\65\68\124\73\78\84\69\82\83\69\67\84\124\73\78\84\79\124\73\78\86\79\75\69\82\124\73\83\124\73\83\78\85\76\76\124\73\83\79\76\65\84\73\79\78\124\73\84\69\82\65\84\69\124\74\79\73\78\124\75\69\89\124\75\69\89\95\77\69\77\66\69\82\124\75\69\89\95\84\89\80\69\124\76\65\78\67\79\77\80\73\76\69\82\124\76\65\78\71\85\65\71\69\124\76\65\82\71\69\124\76\65\83\84\124\76\65\84\69\82\65\76\124\76\69\65\68\73\78\71\124\76\69\70\84\124\76\69\78\71\84\72\124\76\69\83\83\124\76\69\86\69\76\124\76\73\75\69\124\76\73\77\73\84\124\76\73\83\84\69\78\124\76\79\65\68\124\76\79\67\65\76\124\76\79\67\65\76\84\73\77\69\124\76\79\67\65\76\84\73\77\69\83\84\65\77\80\124\76\79\67\65\84\73\79\78\124\76\79\67\65\84\79\82\124\76\79\67\75\124\76\79\87\69\82\124\77\65\80\124\77\65\84\67\72\124\77\65\88\124\77\65\88\86\65\76\85\69\124\77\69\83\83\65\71\69\95\76\69\78\71\84\72\124\77\69\83\83\65\71\69\95\79\67\84\69\84\95\76\69\78\71\84\72\124\77\69\83\83\65\71\69\95\84\69\88\84\124\77\69\84\72\79\68\124\77\73\78\124\77\73\78\85\84\69\124\77\73\78\86\65\76\85\69\124\77\79\68\124\77\79\68\69\124\77\79\68\73\70\73\69\83\124\77\79\68\73\70\89\124\77\79\78\84\72\124\77\79\82\69\124\77\79\86\69\124\77\85\77\80\83\124\78\65\77\69\83\124\78\65\84\73\79\78\65\76\124\78\65\84\85\82\65\76\124\78\67\72\65\82\124\78\67\76\79\66\124\78\69\87\124\78\69\88\84\124\78\79\124\78\79\67\82\69\65\84\69\68\66\124\78\79\67\82\69\65\84\69\85\83\69\82\124\78\79\78\69\124\78\79\84\124\78\79\84\72\73\78\71\124\78\79\84\73\70\89\124\78\79\84\78\85\76\76\124\78\85\76\76\124\78\85\76\76\65\66\76\69\124\78\85\76\76\73\70\124\79\66\74\69\67\84\124\79\67\84\69\84\95\76\69\78\71\84\72\124\79\70\124\79\70\70\124\79\70\70\83\69\84\124\79\73\68\83\124\79\76\68\124\79\78\124\79\78\76\89\124\79\80\69\78\124\79\80\69\82\65\84\73\79\78\124\79\80\69\82\65\84\79\82\124\79\80\84\73\79\78\124\79\80\84\73\79\78\83\124\79\82\124\79\82\68\69\82\124\79\82\68\73\78\65\76\73\84\89\124\79\85\84\124\79\85\84\69\82\124\79\85\84\80\85\84\124\79\86\69\82\76\65\80\83\124\79\86\69\82\76\65\89\124\79\86\69\82\82\73\68\73\78\71\124\79\87\78\69\82\124\80\65\68\124\80\65\82\65\77\69\84\69\82\124\80\65\82\65\77\69\84\69\82\83\124\80\65\82\65\77\69\84\69\82\95\77\79\68\69\124\80\65\82\65\77\65\84\69\82\95\78\65\77\69\124\80\65\82\65\77\65\84\69\82\95\79\82\68\73\78\65\76\95\80\79\83\73\84\73\79\78\124\80\65\82\65\77\69\84\69\82\95\83\80\69\67\73\70\73\67\95\67\65\84\65\76\79\71\124\80\65\82\65\77\69\84\69\82\95\83\80\69\67\73\70\73\67\95\78\65\77\69\124\80\65\82\65\77\65\84\69\82\95\83\80\69\67\73\70\73\67\95\83\67\72\69\77\65\124\80\65\82\84\73\65\76\124\80\65\83\67\65\76\124\80\69\78\68\65\78\84\124\80\76\65\67\73\78\71\124\80\76\73\124\80\79\83\73\84\73\79\78\124\80\79\83\84\70\73\88\124\80\82\69\67\73\83\73\79\78\124\80\82\69\70\73\88\124\80\82\69\79\82\68\69\82\124\80\82\69\80\65\82\69\124\80\82\69\83\69\82\86\69\124\80\82\73\77\65\82\89\124\80\82\73\79\82\124\80\82\73\86\73\76\69\71\69\83\124\80\82\79\67\69\68\85\82\65\76\124\80\82\79\67\69\68\85\82\69\124\80\85\66\76\73\67\124\82\69\65\68\124\82\69\65\68\83\124\82\69\67\72\69\67\75\124\82\69\67\85\82\83\73\86\69\124\82\69\70\124\82\69\70\69\82\69\78\67\69\83\124\82\69\70\69\82\69\78\67\73\78\71\124\82\69\73\78\68\69\88\124\82\69\76\65\84\73\86\69\124\82\69\78\65\77\69\124\82\69\80\69\65\84\65\66\76\69\124\82\69\80\76\65\67\69\124\82\69\83\69\84\124\82\69\83\84\65\82\84\124\82\69\83\84\82\73\67\84\124\82\69\83\85\76\84\124\82\69\84\85\82\78\124\82\69\84\85\82\78\69\68\95\76\69\78\71\84\72\124\82\69\84\85\82\78\69\68\95\79\67\84\69\84\95\76\69\78\71\84\72\124\82\69\84\85\82\78\69\68\95\83\81\76\83\84\65\84\69\124\82\69\84\85\82\78\83\124\82\69\86\79\75\69\124\82\73\71\72\84\124\82\79\76\69\124\82\79\76\76\66\65\67\75\124\82\79\76\76\85\80\124\82\79\85\84\73\78\69\124\82\79\85\84\73\78\69\95\67\65\84\65\76\79\71\124\82\79\85\84\73\78\69\95\78\65\77\69\124\82\79\85\84\73\78\69\95\83\67\72\69\77\65\124\82\79\87\124\82\79\87\83\124\82\79\87\95\67\79\85\78\84\124\82\85\76\69\124\83\65\86\69\95\80\79\73\78\84\124\83\67\65\76\69\124\83\67\72\69\77\65\124\83\67\72\69\77\65\95\78\65\77\69\124\83\67\79\80\69\124\83\67\82\79\76\76\124\83\69\65\82\67\72\124\83\69\67\79\78\68\124\83\69\67\85\82\73\84\89\124\83\69\76\69\67\84\124\83\69\76\70\124\83\69\78\83\73\84\73\86\69\124\83\69\82\73\65\76\73\90\65\66\76\69\124\83\69\82\86\69\82\95\78\65\77\69\124\83\69\83\83\73\79\78\124\83\69\83\83\73\79\78\95\85\83\69\82\124\83\69\84\124\83\69\84\79\70\124\83\69\84\83\124\83\72\65\82\69\124\83\72\79\87\124\83\73\77\73\76\65\82\124\83\73\77\80\76\69\124\83\73\90\69\124\83\79\77\69\124\83\79\85\82\67\69\124\83\80\65\67\69\124\83\80\69\67\73\70\73\67\124\83\80\69\67\73\70\73\67\84\89\80\69\124\83\80\69\67\73\70\73\67\95\78\65\77\69\124\83\81\76\124\83\81\76\67\79\68\69\124\83\81\76\69\82\82\79\82\124\83\81\76\69\88\67\69\80\84\73\79\78\124\83\81\76\83\84\65\84\69\124\83\81\76\87\65\82\78\73\78\73\71\124\83\84\65\66\76\69\124\83\84\65\82\84\124\83\84\65\84\69\124\83\84\65\84\69\77\69\78\84\124\83\84\65\84\73\67\124\83\84\65\84\73\83\84\73\67\83\124\83\84\68\73\78\124\83\84\68\79\85\84\124\83\84\79\82\65\71\69\124\83\84\82\73\67\84\124\83\84\82\85\67\84\85\82\69\124\83\84\89\80\69\124\83\85\66\67\76\65\83\83\95\79\82\73\71\73\78\124\83\85\66\76\73\83\84\124\83\85\66\83\84\82\73\78\71\124\83\85\77\124\83\89\77\77\69\84\82\73\67\124\83\89\83\73\68\124\83\89\83\84\69\77\124\83\89\83\84\69\77\95\85\83\69\82\124\84\65\66\76\69\124\84\65\66\76\69\95\78\65\77\69\124\32\84\69\77\80\124\84\69\77\80\76\65\84\69\124\84\69\77\80\79\82\65\82\89\124\84\69\82\77\73\78\65\84\69\124\84\72\65\78\124\84\72\69\78\124\84\73\77\69\83\84\65\77\80\124\84\73\77\69\90\79\78\69\95\72\79\85\82\124\84\73\77\69\90\79\78\69\95\77\73\78\85\84\69\124\84\79\124\84\79\65\83\84\124\84\82\65\73\76\73\78\71\124\84\82\65\78\83\65\84\73\79\78\124\84\82\65\78\83\65\67\84\73\79\78\83\95\67\79\77\77\73\84\84\69\68\124\84\82\65\78\83\65\67\84\73\79\78\83\95\82\79\76\76\69\68\95\66\65\67\75\124\84\82\65\78\83\65\84\73\79\78\95\65\67\84\73\86\69\124\84\82\65\78\83\70\79\82\77\124\84\82\65\78\83\70\79\82\77\83\124\84\82\65\78\83\76\65\84\69\124\84\82\65\78\83\76\65\84\73\79\78\124\84\82\69\65\84\124\84\82\73\71\71\69\82\124\84\82\73\71\71\69\82\95\67\65\84\65\76\79\71\124\84\82\73\71\71\69\82\95\78\65\77\69\124\84\82\73\71\71\69\82\95\83\67\72\69\77\65\124\84\82\73\77\124\84\82\85\69\124\84\82\85\78\67\65\84\69\124\84\82\85\83\84\69\68\124\84\89\80\69\124\85\78\67\79\77\77\73\84\84\69\68\124\85\78\68\69\82\124\85\78\69\78\67\82\89\80\84\69\68\124\85\78\73\79\78\124\85\78\73\81\85\69\124\85\78\75\78\79\87\78\124\85\78\76\73\83\84\69\78\124\85\78\78\65\77\69\68\124\85\78\78\69\83\84\124\85\78\84\73\76\124\85\80\68\65\84\69\124\85\80\80\69\82\124\85\83\65\71\69\124\85\83\69\82\124\85\83\69\82\95\68\69\70\73\78\69\68\95\84\89\80\69\95\67\65\84\65\76\79\71\124\85\83\69\82\95\68\69\70\73\78\69\68\95\84\89\80\69\95\78\65\77\69\124\85\83\69\82\95\68\69\70\73\78\69\68\95\84\89\80\69\95\83\67\72\69\77\65\124\85\83\73\78\71\124\86\65\67\85\85\77\124\86\65\76\73\68\124\86\65\76\73\68\65\84\79\82\124\86\65\76\85\69\83\124\86\65\82\73\65\66\76\69\124\86\69\82\66\79\83\69\124\86\69\82\83\73\79\78\124\86\73\69\87\124\86\79\76\65\84\73\76\69\124\87\72\69\78\124\87\72\69\78\69\86\69\82\124\87\72\69\82\69\124\87\73\84\72\124\87\73\84\72\79\85\84\124\87\79\82\75\124\87\82\73\84\69\124\89\69\65\82\124\90\79\78\69\41\92\98" (Arbitrary "\75\101\121\119\111\114\100")
    , tok "\40\65\82\82\65\89\124\66\73\71\73\78\84\124\66\73\78\65\82\89\124\66\73\84\124\66\76\79\66\124\66\79\79\76\69\65\78\124\67\72\65\82\124\67\72\65\82\65\67\84\69\82\124\68\65\84\69\124\68\69\67\124\68\69\67\73\77\65\76\124\70\76\79\65\84\124\73\78\84\124\73\78\84\69\71\69\82\124\73\78\84\69\82\86\65\76\124\78\85\77\66\69\82\124\78\85\77\69\82\73\67\124\82\69\65\76\124\83\69\82\73\65\76\124\83\77\65\76\76\73\78\84\124\86\65\82\67\72\65\82\124\86\65\82\89\73\78\71\124\73\78\84\56\124\83\69\82\73\65\76\56\124\84\69\88\84\41\92\98" (Arbitrary "\78\97\109\101" :. Arbitrary "\66\117\105\108\116\105\110")
    , 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 "\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 "\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 "\83\121\109\98\111\108")
    , 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 "\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")
    ]