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

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

lexer :: Lexer
lexer = Lexer
    { lName = "\68\101\98\105\97\110\32\83\111\117\114\99\101\108\105\115\116"
    , lAliases = ["\115\111\117\114\99\101\115\108\105\115\116", "\115\111\117\114\99\101\115\46\108\105\115\116"]
    , lExtensions = ["\115\111\117\114\99\101\115\46\108\105\115\116"]
    , lMimetypes = []
    , lStart = root'
    , lFlags = [multiline]
    }

distribution' :: TokenMatcher
distribution' =
    [ tokNext "\35\46\42\63\36" (Arbitrary "\67\111\109\109\101\110\116") Pop
    , tok "\92\36\92\40\65\82\67\72\92\41" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101")
    , tok "\91\94\92\115\36\91\93\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103")
    , tokNext "\92\91" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\79\116\104\101\114") (GoTo escapedDistribution')
    , tok "\92\36" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103")
    , tokNext "\92\115\43" (Arbitrary "\84\101\120\116") (GoTo components')
    ]

root' :: TokenMatcher
root' =
    [ tok "\92\115\43" (Arbitrary "\84\101\120\116")
    , tok "\35\46\42\63\36" (Arbitrary "\67\111\109\109\101\110\116")
    , tokNext "\94\40\100\101\98\40\63\58\45\115\114\99\41\63\41\40\92\115\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100"), (Arbitrary "\84\101\120\116")]) (GoTo distribution')
    ]

escapedDistribution' :: TokenMatcher
escapedDistribution' =
    [ tokNext "\92\93" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\79\116\104\101\114") Pop
    , tok "\92\36\92\40\65\82\67\72\92\41" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101")
    , tok "\91\94\92\93\36\93\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\79\116\104\101\114")
    , tok "\92\36" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\79\116\104\101\114")
    ]

components' :: TokenMatcher
components' =
    [ tokNext "\35\46\42\63\36" (Arbitrary "\67\111\109\109\101\110\116") (PopNum 2)
    , tokNext "\36" (Arbitrary "\84\101\120\116") (PopNum 2)
    , tok "\92\115\43" (Arbitrary "\84\101\120\116")
    , tok "\92\83\43" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\80\115\101\117\100\111")
    ]