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

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

lexer :: Lexer
lexer = Lexer
    { lName = "\76\76\86\77"
    , lAliases = ["\108\108\118\109"]
    , lExtensions = ["\46\108\108"]
    , lMimetypes = ["\116\101\120\116\47\120\45\108\108\118\109"]
    , lStart = root'
    , lFlags = [multiline]
    }

root' :: TokenMatcher
root' =
    [ anyOf whitespace'
    , tok "\94\92\115\42\40\91\45\97\45\122\65\45\90\36\46\95\93\91\45\97\45\122\65\45\90\36\46\95\48\45\57\93\42\124\34\91\94\34\93\42\63\34\41\92\115\42\58" (Arbitrary "\78\97\109\101" :. Arbitrary "\76\97\98\101\108")
    , anyOf keyword'
    , tok "\37\40\91\45\97\45\122\65\45\90\36\46\95\93\91\45\97\45\122\65\45\90\36\46\95\48\45\57\93\42\124\34\91\94\34\93\42\63\34\41" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101")
    , tok "\64\40\91\45\97\45\122\65\45\90\36\46\95\93\91\45\97\45\122\65\45\90\36\46\95\48\45\57\93\42\124\34\91\94\34\93\42\63\34\41" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101" :. Arbitrary "\71\108\111\98\97\108")
    , tok "\37\92\100\43" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101" :. Arbitrary "\65\110\111\110\121\109\111\117\115")
    , tok "\64\92\100\43" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101" :. Arbitrary "\71\108\111\98\97\108")
    , tok "\33\40\91\45\97\45\122\65\45\90\36\46\95\93\91\45\97\45\122\65\45\90\36\46\95\48\45\57\93\42\124\34\91\94\34\93\42\63\34\41" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101")
    , tok "\33\92\100\43" (Arbitrary "\78\97\109\101" :. Arbitrary "\86\97\114\105\97\98\108\101" :. Arbitrary "\65\110\111\110\121\109\111\117\115")
    , tok "\99\63\34\91\94\34\93\42\63\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103")
    , tok "\48\91\120\88\93\91\97\45\102\65\45\70\48\45\57\93\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114")
    , tok "\45\63\92\100\43\40\63\58\91\46\93\92\100\43\41\63\40\63\58\91\101\69\93\91\45\43\93\63\92\100\43\40\63\58\91\46\93\92\100\43\41\63\41\63" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114")
    , tok "\91\61\60\62\123\125\92\91\92\93\40\41\42\46\44\33\93\124\120\92\98" (Arbitrary "\80\117\110\99\116\117\97\116\105\111\110")
    ]

whitespace' :: TokenMatcher
whitespace' =
    [ tok "\40\92\110\124\92\115\41\43" (Arbitrary "\84\101\120\116")
    , tok "\59\46\42\63\92\110" (Arbitrary "\67\111\109\109\101\110\116")
    ]

keyword' :: TokenMatcher
keyword' =
    [ tok "\40\98\101\103\105\110\124\101\110\100\124\116\114\117\101\124\102\97\108\115\101\124\100\101\99\108\97\114\101\124\100\101\102\105\110\101\124\103\108\111\98\97\108\124\99\111\110\115\116\97\110\116\124\112\114\105\118\97\116\101\124\108\105\110\107\101\114\95\112\114\105\118\97\116\101\124\105\110\116\101\114\110\97\108\124\97\118\97\105\108\97\98\108\101\95\101\120\116\101\114\110\97\108\108\121\124\108\105\110\107\111\110\99\101\124\108\105\110\107\111\110\99\101\95\111\100\114\124\119\101\97\107\124\119\101\97\107\95\111\100\114\124\97\112\112\101\110\100\105\110\103\124\100\108\108\105\109\112\111\114\116\124\100\108\108\101\120\112\111\114\116\124\99\111\109\109\111\110\124\100\101\102\97\117\108\116\124\104\105\100\100\101\110\124\112\114\111\116\101\99\116\101\100\124\101\120\116\101\114\110\95\119\101\97\107\124\101\120\116\101\114\110\97\108\124\116\104\114\101\97\100\95\108\111\99\97\108\124\122\101\114\111\105\110\105\116\105\97\108\105\122\101\114\124\117\110\100\101\102\124\110\117\108\108\124\116\111\124\116\97\105\108\124\116\97\114\103\101\116\124\116\114\105\112\108\101\124\100\101\112\108\105\98\115\124\100\97\116\97\108\97\121\111\117\116\124\118\111\108\97\116\105\108\101\124\110\117\119\124\110\115\119\124\101\120\97\99\116\124\105\110\98\111\117\110\100\115\124\97\108\105\103\110\124\97\100\100\114\115\112\97\99\101\124\115\101\99\116\105\111\110\124\97\108\105\97\115\124\109\111\100\117\108\101\124\97\115\109\124\115\105\100\101\101\102\102\101\99\116\124\103\99\124\100\98\103\124\99\99\99\124\102\97\115\116\99\99\124\99\111\108\100\99\99\124\120\56\54\95\115\116\100\99\97\108\108\99\99\124\120\56\54\95\102\97\115\116\99\97\108\108\99\99\124\97\114\109\95\97\112\99\115\99\99\124\97\114\109\95\97\97\112\99\115\99\99\124\97\114\109\95\97\97\112\99\115\95\118\102\112\99\99\124\99\99\124\99\124\115\105\103\110\101\120\116\124\122\101\114\111\101\120\116\124\105\110\114\101\103\124\115\114\101\116\124\110\111\117\110\119\105\110\100\124\110\111\114\101\116\117\114\110\124\110\111\97\108\105\97\115\124\110\111\99\97\112\116\117\114\101\124\98\121\118\97\108\124\110\101\115\116\124\114\101\97\100\110\111\110\101\124\114\101\97\100\111\110\108\121\124\105\110\108\105\110\101\104\105\110\116\124\110\111\105\110\108\105\110\101\124\97\108\119\97\121\115\105\110\108\105\110\101\124\111\112\116\115\105\122\101\124\115\115\112\124\115\115\112\114\101\113\124\110\111\114\101\100\122\111\110\101\124\110\111\105\109\112\108\105\99\105\116\102\108\111\97\116\124\110\97\107\101\100\124\116\121\112\101\124\111\112\97\113\117\101\124\101\113\124\110\101\124\115\108\116\124\115\103\116\124\115\108\101\124\115\103\101\124\117\108\116\124\117\103\116\124\117\108\101\124\117\103\101\124\111\101\113\124\111\110\101\124\111\108\116\124\111\103\116\124\111\108\101\124\111\103\101\124\111\114\100\124\117\110\111\124\117\101\113\124\117\110\101\124\120\124\97\100\100\124\102\97\100\100\124\115\117\98\124\102\115\117\98\124\109\117\108\124\102\109\117\108\124\117\100\105\118\124\115\100\105\118\124\102\100\105\118\124\117\114\101\109\124\115\114\101\109\124\102\114\101\109\124\115\104\108\124\108\115\104\114\124\97\115\104\114\124\97\110\100\124\111\114\124\120\111\114\124\105\99\109\112\124\102\99\109\112\124\112\104\105\124\99\97\108\108\124\116\114\117\110\99\124\122\101\120\116\124\115\101\120\116\124\102\112\116\114\117\110\99\124\102\112\101\120\116\124\117\105\116\111\102\112\124\115\105\116\111\102\112\124\102\112\116\111\117\105\102\112\116\111\115\105\124\105\110\116\116\111\112\116\114\124\112\116\114\116\111\105\110\116\124\98\105\116\99\97\115\116\124\115\101\108\101\99\116\124\118\97\95\97\114\103\124\114\101\116\124\98\114\124\115\119\105\116\99\104\124\105\110\118\111\107\101\124\117\110\119\105\110\100\124\117\110\114\101\97\99\104\97\98\108\101\124\109\97\108\108\111\99\124\97\108\108\111\99\97\124\102\114\101\101\124\108\111\97\100\124\115\116\111\114\101\124\103\101\116\101\108\101\109\101\110\116\112\116\114\124\101\120\116\114\97\99\116\101\108\101\109\101\110\116\124\105\110\115\101\114\116\101\108\101\109\101\110\116\124\115\104\117\102\102\108\101\118\101\99\116\111\114\124\103\101\116\114\101\115\117\108\116\124\101\120\116\114\97\99\116\118\97\108\117\101\124\105\110\115\101\114\116\118\97\108\117\101\41\92\98" (Arbitrary "\75\101\121\119\111\114\100")
    , tok "\118\111\105\100\124\102\108\111\97\116\124\100\111\117\98\108\101\124\120\56\54\95\102\112\56\48\124\102\112\49\50\56\124\112\112\99\95\102\112\49\50\56\124\108\97\98\101\108\124\109\101\116\97\100\97\116\97" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\84\121\112\101")
    , tok "\105\91\49\45\57\93\92\100\42" (Arbitrary "\75\101\121\119\111\114\100")
    ]