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

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

lexer :: Lexer
lexer = Lexer
    { lName = "\86\66\46\110\101\116"
    , lAliases = ["\118\98\46\110\101\116", "\118\98\110\101\116"]
    , lExtensions = ["\46\118\98", "\46\98\97\115"]
    , lMimetypes = ["\116\101\120\116\47\120\45\118\98\110\101\116", "\116\101\120\116\47\120\45\118\98\97"]
    , lStart = root'
    , lFlags = [caseless, multiline]
    }

classname' :: TokenMatcher
classname' =
    [ tokNext "\91\97\45\122\95\93\91\97\45\122\48\45\57\95\93\42" (Arbitrary "\78\97\109\101" :. Arbitrary "\67\108\97\115\115") Pop
    ]

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

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

string' :: TokenMatcher
string' =
    [ tok "\34\34" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103")
    , tokNext "\34\67\63" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103") Pop
    , tok "\91\94\34\93\43" (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103")
    ]

funcname' :: TokenMatcher
funcname' =
    [ tokNext "\91\97\45\122\95\93\91\97\45\122\48\45\57\95\93\42" (Arbitrary "\78\97\109\101" :. Arbitrary "\70\117\110\99\116\105\111\110") Pop
    ]