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

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

lexer :: Lexer
lexer = Lexer
    { lName = "\74\97\118\97"
    , lAliases = ["\106\97\118\97"]
    , lExtensions = ["\46\106\97\118\97"]
    , lMimetypes = ["\116\101\120\116\47\120\45\106\97\118\97"]
    , lStart = root'
    , lFlags = [multiline, dotall]
    }

import' :: TokenMatcher
import' =
    [ tokNext "\91\97\45\122\65\45\90\48\45\57\95\46\93\43\92\42\63" (Arbitrary "\78\97\109\101" :. Arbitrary "\78\97\109\101\115\112\97\99\101") Pop
    ]

root' :: TokenMatcher
root' =
    [ tok "\94\40\92\115\42\40\63\58\91\97\45\122\65\45\90\95\93\91\97\45\122\65\45\90\48\45\57\95\92\46\92\91\92\93\93\42\92\115\43\41\43\63\41\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 [(Using lexer), (Arbitrary "\78\97\109\101" :. Arbitrary "\70\117\110\99\116\105\111\110"), (Arbitrary "\84\101\120\116"), (Arbitrary "\79\112\101\114\97\116\111\114")])
    , tok "\91\94\92\83\92\110\93\43" (Arbitrary "\84\101\120\116")
    , tok "\47\47\46\42\63\92\110" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\83\105\110\103\108\101")
    , tok "\47\92\42\46\42\63\92\42\47" (Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\77\117\108\116\105\108\105\110\101")
    , tok "\64\91\97\45\122\65\45\90\95\93\91\97\45\122\65\45\90\48\45\57\95\92\46\93\42" (Arbitrary "\78\97\109\101" :. Arbitrary "\68\101\99\111\114\97\116\111\114")
    , tok "\40\97\115\115\101\114\116\124\98\114\101\97\107\124\99\97\115\101\124\99\97\116\99\104\124\99\111\110\116\105\110\117\101\124\100\101\102\97\117\108\116\124\100\111\124\101\108\115\101\124\102\105\110\97\108\108\121\124\102\111\114\124\105\102\124\103\111\116\111\124\105\110\115\116\97\110\99\101\111\102\124\110\101\119\124\114\101\116\117\114\110\124\115\119\105\116\99\104\124\116\104\105\115\124\116\104\114\111\119\124\116\114\121\124\119\104\105\108\101\41\92\98" (Arbitrary "\75\101\121\119\111\114\100")
    , tok "\40\97\98\115\116\114\97\99\116\124\99\111\110\115\116\124\101\110\117\109\124\101\120\116\101\110\100\115\124\102\105\110\97\108\124\105\109\112\108\101\109\101\110\116\115\124\110\97\116\105\118\101\124\112\114\105\118\97\116\101\124\112\114\111\116\101\99\116\101\100\124\112\117\98\108\105\99\124\115\116\97\116\105\99\124\115\116\114\105\99\116\102\112\124\115\117\112\101\114\124\115\121\110\99\104\114\111\110\105\122\101\100\124\116\104\114\111\119\115\124\116\114\97\110\115\105\101\110\116\124\118\111\108\97\116\105\108\101\41\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\68\101\99\108\97\114\97\116\105\111\110")
    , tok "\40\98\111\111\108\101\97\110\124\98\121\116\101\124\99\104\97\114\124\100\111\117\98\108\101\124\102\108\111\97\116\124\105\110\116\124\108\111\110\103\124\115\104\111\114\116\124\118\111\105\100\41\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\84\121\112\101")
    , tok "\40\112\97\99\107\97\103\101\41\40\92\115\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\78\97\109\101\115\112\97\99\101"), (Arbitrary "\84\101\120\116")])
    , tok "\40\116\114\117\101\124\102\97\108\115\101\124\110\117\108\108\41\92\98" (Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\67\111\110\115\116\97\110\116")
    , tokNext "\40\99\108\97\115\115\124\105\110\116\101\114\102\97\99\101\41\40\92\115\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\68\101\99\108\97\114\97\116\105\111\110"), (Arbitrary "\84\101\120\116")]) (GoTo class')
    , tokNext "\40\105\109\112\111\114\116\41\40\92\115\43\41" (ByGroups [(Arbitrary "\75\101\121\119\111\114\100" :. Arbitrary "\78\97\109\101\115\112\97\99\101"), (Arbitrary "\84\101\120\116")]) (GoTo import')
    , tok "\34\40\92\92\92\92\124\92\92\34\124\91\94\34\93\41\42\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103")
    , tok "\39\92\92\46\39\124\39\91\94\92\92\93\39\124\39\92\92\117\91\48\45\57\97\45\102\93\123\52\125\39" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103" :. Arbitrary "\67\104\97\114")
    , tok "\40\92\46\41\40\91\97\45\122\65\45\90\95\93\91\97\45\122\65\45\90\48\45\57\95\93\42\41" (ByGroups [(Arbitrary "\79\112\101\114\97\116\111\114"), (Arbitrary "\78\97\109\101" :. Arbitrary "\65\116\116\114\105\98\117\116\101")])
    , tok "\91\97\45\122\65\45\90\95\93\91\97\45\122\65\45\90\48\45\57\95\93\42\58" (Arbitrary "\78\97\109\101" :. Arbitrary "\76\97\98\101\108")
    , tok "\91\97\45\122\65\45\90\95\92\36\93\91\97\45\122\65\45\90\48\45\57\95\93\42" (Arbitrary "\78\97\109\101")
    , tok "\91\126\92\94\92\42\33\37\38\92\91\92\93\92\40\92\41\92\123\92\125\60\62\92\124\43\61\58\59\44\46\47\63\45\93" (Arbitrary "\79\112\101\114\97\116\111\114")
    , tok "\91\48\45\57\93\91\48\45\57\93\42\92\46\91\48\45\57\93\43\40\91\101\69\93\91\48\45\57\93\43\41\63\91\102\100\93\63" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114" :. Arbitrary "\70\108\111\97\116")
    , tok "\48\120\91\48\45\57\97\45\102\93\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114" :. Arbitrary "\72\101\120")
    , tok "\91\48\45\57\93\43\76\63" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\78\117\109\98\101\114" :. Arbitrary "\73\110\116\101\103\101\114")
    , tok "\92\110" (Arbitrary "\84\101\120\116")
    ]

class' :: TokenMatcher
class' =
    [ tokNext "\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" :. Arbitrary "\67\108\97\115\115") Pop
    ]